Pdf viewer
Posted: Fri Jul 03, 2026 7:51 am
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
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())