Re: [Module] pbPDF-Module
Verfasst: 20.06.2019 12:28
Bugfix: PNG-Bilder einbetten
Code: Alles auswählen
PDF::Create(#filPDF)
PDF::SetHeaderProcedure(#filPDF,@Listenkopf())
PDF::SetFooterProcedure(#filPDF,@Listenfuss())
PDF::EnableHeader(#filPDF)
PDF::EnableFooter(#filPDF)
PDF::SetOpenAction(#filPDF)
PDF::SetInfo(#filPDF,PDF::#Title,Listentitel)
PDF::SetInfo(#filPDF,PDF::#Author,#PN+" "+#PV)
PDF::SetPageMargins(#filPDF,20,10,10)
PDF::SetAutoPageBreak(#filPDF,#True)
PDF::AddPage(#filPDF)
Code: Alles auswählen
Enumeration
#filPDF
EndEnumeration
Procedure PDFTest()
PDF::Create(#filPDF)
PDF::SetAliasTotalPages(#filPDF,"{tp}")
; PDF::EnableHeader(#filPDF)
; PDF::EnableFooter(#filPDF)
; PDF::SetHeaderProcedure(#filPDF,@Listenkopf())
; PDF::SetFooterProcedure(#filPDF,@Listenfuss())
PDF::SetInfo(#filPDF,PDF::#Titel,"Titel")
PDF::SetInfo(#filPDF,PDF::#Author,"Autor")
PDF::SetPageMargins(#filPDF,20,10,10)
PDF::SetPageNumbering(#filPDF,#True)
PDF::AddPage(#filPDF)
PDF::SetAutoPageBreak(#filPDF,#True)
PDF::SetFont(#filPDF,"Arial","",9)
For i=0 To 100
i+1
PDF::Cell(#filPDF,Str(i),8,5,#False,#False,"R")
PDF::Cell(#filPDF,"",3)
PDF::Cell(#filPDF,"10000",20,5,0,0,"R")
PDF::Cell(#filPDF,"Schmidt, Anton",50,5)
PDF::Cell(#filPDF,"Teststraße 12",0,5,#False,PDF::#NextLine)
PDF::Cell(#filPDF,"",81)
PDF::Cell(#filPDF,"11111",15,5)
PDF::Cell(#filPDF,"Testhausen",0,5,#False,PDF::#NextLine)
Next
PDF::Save(#filPDF,"C:\1\Test.pdf")
RunProgram(#DQUOTE$+"C:\1\Test.pdf"+#DQUOTE$,"","")
EndProcedure
PDFTest()
ThoPie hat geschrieben:Sind Header und Footer nicht drin, funktioniert es. Da ist dann die Schriftart und -größe ab Seite 2 allerdings dann auf "Standard" und nicht wie auf Seite 1.
Code: Alles auswählen
IncludeFile "pbPDFModule.pbi"
Enumeration 1
#filPDF
EndEnumeration
Procedure Listenkopf()
EndProcedure
Procedure Listenfuss()
PDF::SetPosY(#filPDF, -15)
PDF::SetFont(#filPDF, "Arial", "BI", 9)
PDF::Cell(#filPDF, "Page {p} / {tp}", #PB_Default, 10, 0, 0, PDF::#CenterAlign)
EndProcedure
Procedure PDFTest()
PDF::Create(#filPDF)
PDF::SetHeaderProcedure(#filPDF, @Listenkopf())
PDF::SetFooterProcedure(#filPDF, @Listenfuss()) ; muss definiert werden, bevor der Footer aktiviert wird!
PDF::SetAliasTotalPages(#filPDF,"{tp}")
PDF::EnableHeader(#filPDF)
PDF::EnableFooter(#filPDF)
PDF::SetInfo(#filPDF,PDF::#Titel,"Titel")
PDF::SetInfo(#filPDF,PDF::#Author,"Autor")
PDF::SetPageMargins(#filPDF,20,10,10)
PDF::SetPageNumbering(#filPDF,#True)
PDF::AddPage(#filPDF)
PDF::SetAutoPageBreak(#filPDF, #True, 20)
PDF::SetFont(#filPDF,"Arial","",9)
For i=0 To 100
i+1
PDF::Cell(#filPDF,Str(i),8,5,#False,#False,"R")
PDF::Cell(#filPDF,"",3)
PDF::Cell(#filPDF,"10000",20,5,0,0,"R")
PDF::Cell(#filPDF,"Schmidt, Anton",50,5)
PDF::Cell(#filPDF,"Teststraße 12",0,5,#False,PDF::#NextLine)
PDF::Cell(#filPDF,"",81)
PDF::Cell(#filPDF,"11111",15,5)
PDF::Cell(#filPDF,"Testhausen",0,5,#False,PDF::#NextLine)
Next
PDF::Save(#filPDF,"Test.pdf")
RunProgram(#DQUOTE$+"Test.pdf"+#DQUOTE$,"","")
EndProcedure
PDFTest()
Code: Alles auswählen
XIncludeFile "pbPDFModule.pbi"
#PDFFile = 1
Procedure PDFFooter_Module()
PDF::SetPosY(#PDFFile,-15)
PDF::SetFont(#PDFFile,"Arial","I",9)
PDF::Cell(#PDFFile,"Seite {p} / {tp}",#PB_Default,10,0,0,PDF::#CenterAlign)
PDF::Ln(#PDFFile,6)
PDF::SetFont(#PDFFile,"Helvetica","I",4)
PDF::Cell(#PDFFile,"( © <Name> 2019 ) <Complete footer information> ",#PB_Default,10,0,0,PDF::#CenterAlign)
EndProcedure
; Procedure pdfHeader_Module()
; PDF::SETFont(#PDFFile,"Arial","",10)
; PDF::Image(#PDFFile,"D:\......\ZSPDF.jpg",5,5,56,16)
; EndProcedure
Procedure runPDF()
Protected i.i
PDF::SETFont(#PDFFile,"Arial","",10)
;PDF::HeaderProcedure(@pdfHeader_Module())
PDF::FooterProcedure(@PDFFooter_Module())
PDF::Create(#PDFFile,"P")
PDF::SetAliasTotalPages(#PDFFile,"{tp}")
;PDF::EnableHeader(#PDFFile,#True)
PDF::EnableFooter(#PDFFile,#True)
PDF::SetPageNumbering(#PDFFile,#True)
PDF::AddPage(#PDFFile)
PDF::SetPosX(#PDFFile,10)
For i = 33 To 1000
PDF::Cell(#PDFFile,Chr(i),PDF::GetStringWidth(#PDFFile,Chr(i)),5,0,0,PDF::#LeftAlign) ;Problemzeile
If PDF::GetPosX(#PDFFile) > (PDF::GetPageWidth(#PDFFile) - 20) ;Zeilenumbruch am rechten Rand
PDF::Ln(#PDFFile,5)
PDF::SetPosX(#PDFFile,10)
EndIf
Next
PDF::AddPage(#PDFFile)
PDF::Close(#PDFFile,"Savepdftest.pdf")
PDF::Save(#PDFFile,"Savepdftest.pdf")
RunProgram("Savepdftest.pdf")
EndProcedure
runPDF()
Code: Alles auswählen
Procedure.d GetStringWidth_(String.s, Scale.i=#True)
Define i.i, Width.i, Char.s, vReturn.d
For i = 1 To Len(String)
Char = Mid(String, i, 1)
If Asc(Char) > 255
Width + 600 ; for Unicode characters
Else
Width + PDF()\Fonts()\CharWidth(Char) ;<<< Fehler erscheint bei Aufruf dieser Zeile (CodeZeile 1531)
EndIf
Next
If Scale
ProcedureReturn (Width * PDF()\Font\Size) / 1000
Else
ProcedureReturn Width
EndIf
EndProcedure