[Module] pbPDF-Module
- Thorsten1867
- Beiträge: 1359
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: [Module] pbPDF-Module
Bugfix: PNG-Bilder einbetten
Re: [Module] pbPDF-Module
Hallo zusammen,
ich nutze dieses Modul in meinem Projekt. Alles funktioniert - bis auf den automatischen Seitenumbruch. Es wird nur eine Seite erzeugt und der Text "fließt" unten raus.
Mein Code sieht wie folgt aus
Was mache ich da falsch? Vielen Dank.
ich nutze dieses Modul in meinem Projekt. Alles funktioniert - bis auf den automatischen Seitenumbruch. Es wird nur eine Seite erzeugt und der Text "fließt" unten raus.
Mein Code sieht wie folgt aus
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)
- Thorsten1867
- Beiträge: 1359
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: [Module] pbPDF-Module
Bugfix: AutoPageBreak
Re: [Module] pbPDF-Module
Hallo,
vielen Dank für den BugFix.
Leider brachte es bei mir keine Besserung.
vielen Dank für den BugFix.
Leider brachte es bei mir keine Besserung.
- Thorsten1867
- Beiträge: 1359
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: [Module] pbPDF-Module
Ich habe ein Beispiel eingefügt (Seite 4-5) und es noch mal hochgeladen.
(Bei letztem Update sollte 26.6.2019 stehen.)
(Bei letztem Update sollte 26.6.2019 stehen.)
Re: [Module] pbPDF-Module
Hallo nochmal,
also bei deinem Beispiel funktioniert der automatische Seitenumbruch. Aber bei meinem Beispiel will das nicht. So sieht mein Testcode aus. Was mache ich da falsch?
also bei deinem Beispiel funktioniert der automatische Seitenumbruch. Aber bei meinem Beispiel will das nicht. So sieht mein Testcode aus. Was mache ich da falsch?
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()
- Thorsten1867
- Beiträge: 1359
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: [Module] pbPDF-Module
Bugfix: Preferences for footer (AutoPageBreak)
Bugfix: AddPage (Fonts)
Bugfix: AddPage (Fonts)
Zuletzt geändert von Thorsten1867 am 27.06.2019 10:28, insgesamt 1-mal geändert.
Re: [Module] pbPDF-Module
Und wieder mal ich.
Jetzt werden zwar die Seiten angelegt, aber sobald Header und Footer im Spiel sind sind die Seiten ab Seite 2 leer und es erscheint in PDF-Fehler.
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.
Jetzt werden zwar die Seiten angelegt, aber sobald Header und Footer im Spiel sind sind die Seiten ab Seite 2 leer und es erscheint in PDF-Fehler.
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.
- Thorsten1867
- Beiträge: 1359
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: [Module] pbPDF-Module
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()
-
- Beiträge: 220
- Registriert: 30.04.2009 21:21
- Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS
Re: [Module] pbPDF-Module
Sorry für die Störung
ich verwende Deinen Code wie folgt:
Bei Aufruf der Problemzeile erhalte ich die Meldung:
Die MAP hat kein aktuelles Element in folgender Procedure aus Deiner pbi
Erstaunlich ist, der Fehler tritt nur auf, wenn die den Header, so wie oben angezeigt, auskommentiere. Nehme ich den Header wieder dazu, funktioniert der Code ohne Probleme.
(Compiliert mit PB 5.70)
Mache ich da was falsch ?
ich verwende Deinen Code wie folgt:
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()
Die MAP hat kein aktuelles Element in folgender Procedure aus Deiner pbi
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
(Compiliert mit PB 5.70)
Mache ich da was falsch ?
Wissen schadet nur dem, der es nicht hat !