Pdf viewer

Just starting out? Need help? Post your questions and find answers here.
bmld76
Posts: 28
Joined: Wed May 24, 2023 5:10 pm

Pdf viewer

Post by bmld76 »

Hello , I want to create a PDF viewer. I do the next program but I don't no how to view a multipage pdf document. Line 30 I use ImageGadget to visualise the PDF. Is it the right solution.
Impossible to search a 3 letter PDF in this forum.
Can yo help me . Thank

Code: Select all

EnableExplicit
Global LastGadget.i, test.s
Global Filename.s, ObjetId,type,ObjetAff
Global sp,i,j,result

;- déclaratiocn
Enumeration Gadget 
  #FenetreListe
  #FenetrePdf
  #Imagegadget
  #Scrollpdf
EndEnumeration

Enumeration 100 Step 10
  #BoutonSelect
  #BoutonAffiche
EndEnumeration

Global Dim Type(200),Dim Filename.s(200),Dim ObjetID(200),Dim TabImageWidth(200),Dim TabImageHeight(200),Dim TabImageID(200)

Procedure AffichePdf(ObjetID) ; affiche la partition
  Static x = 300, y = 50
  
  ObjetAff = LastGadget-10
  Debug   "Affichepdf  "+ObjetAff+"/"+LastGadget+ "/"+TabImageID(ObjetAff)+"/"+TabImageWidth(ObjetAff)+"/"+TabImageHeight(ObjetAff)
  
  OpenWindow(#FenetrePdf, x, y, 600, 800, Filename(ObjetAff), #PB_Window_TitleBar | #PB_Window_SizeGadget)
    Result = ScrollAreaGadget(#Scrollpdf, 0, 0, 600, 800, 600, 2000 )

    ImageGadget( #Imagegadget, 0, 0, TabImageWidth(ObjetAff), TabImageHeight(ObjetAff), TabImageID(ObjetAff))
    
    CloseGadgetList()
    
EndProcedure

Procedure Loaded(Type, Filename.s, ObjetID) ; affiche la partition
  Debug "Loaded success "+LastGadget+" "+Type+" "+ ImageWidth(ObjetID)+" "+filename
  Type(LastGadget) = Type
  filename(LastGadget) = filename
  ObjetID(LastGadget) = ObjetID
  Debug "46 onjet ID " + ObjetID +"/"+LastGadget
  TabImageWidth(LastGadget) =ImageWidth(ObjetID)
  TabImageHeight(LastGadget) =ImageHeight(ObjetID)
  TabImageID(LastGadget) =ImageID(ObjetID) 
EndProcedure

Procedure LoadingError(Type, Filename)
  Debug ""+ Filename + ": loading error"
 
EndProcedure

Procedure RequesterSuccess()
  ; Process all the selected filename
  Debug "Request success "
  While NextSelectedFile()
    LoadImage(#Imagegadget, SelectedFileID(), #PB_LocalFile) ; when using #PB_LocalFile, all files selected with OpenFileRequester() are directly available
    Filename = SelectedFileName()
    SetGadgetText(LastGadget+10, Filename)          ;modifie le nom du bouton
  Wend
  
EndProcedure

Procedure ButtonEvent()
  LastGadget = EventGadget()
  Debug "button " + LastGadget
If LastGadget < #BoutonAffiche  ;0 > 9 selection
  OpenFileRequester("application/pdf", @RequesterSuccess(), #PB_Requester_MultiSelection)
  ; > 9 affiche
Else
  
 AffichePdf(LastGadget) 
EndIf

EndProcedure

sp = 40 ; espace entre bouton

OpenWindow(#FenetreListe, 100, 50, 800, 600, "Partition 1", #PB_Window_TitleBar)
For i = 0 To 9
  ButtonGadget(#BoutonSelect+i, 10, 10+(i*sp), 90, 25, "Chant "+i)
  BindGadgetEvent( #BoutonSelect+i, @ButtonEvent())
  ButtonGadget(#BoutonAffiche+i, 100, 10+(i*sp), 500, 25, "Affiche chant "+i)
  BindGadgetEvent(#BoutonAffiche+i, @ButtonEvent())
Next

; Register the loading event before calling any resource load command
BindEvent(#PB_Event_Loading, @Loaded())  ; memorise parametre du fichier
BindEvent(#PB_Event_LoadingError, @LoadingError())