Aktuelle Zeit: 05.06.2020 21:40

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 43 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 20.06.2019 12:28 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
Bugfix: PNG-Bilder einbetten

_________________
Download der Module
Download der Programme

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 25.06.2019 09:37 
Offline

Registriert: 19.05.2006 15:18
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
Code:
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)

Was mache ich da falsch? Vielen Dank.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 25.06.2019 20:18 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
Bugfix: AutoPageBreak

_________________
Download der Module
Download der Programme

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 26.06.2019 07:03 
Offline

Registriert: 19.05.2006 15:18
Hallo,
vielen Dank für den BugFix.
Leider brachte es bei mir keine Besserung.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 26.06.2019 08:19 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
Ich habe ein Beispiel eingefügt (Seite 4-5) und es noch mal hochgeladen.
(Bei letztem Update sollte 26.6.2019 stehen.)

_________________
Download der Module
Download der Programme

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 27.06.2019 08:17 
Offline

Registriert: 19.05.2006 15:18
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?

Code:
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()

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 27.06.2019 09:04 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
Bugfix: Preferences for footer (AutoPageBreak)
Bugfix: AddPage (Fonts)

_________________
Download der Module
Download der Programme

Bild


Zuletzt geändert von Thorsten1867 am 27.06.2019 10:28, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 27.06.2019 09:38 
Offline

Registriert: 19.05.2006 15:18
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.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 27.06.2019 10:31 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
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:
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()

_________________
Download der Module
Download der Programme

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 30.06.2019 23:13 
Offline

Registriert: 30.04.2009 21:21
Sorry für die Störung

ich verwende Deinen Code wie folgt:
Code:
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()


Bei Aufruf der Problemzeile erhalte ich die Meldung:

Die MAP hat kein aktuelles Element in folgender Procedure aus Deiner pbi
Code:
 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   
 


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 ?

_________________
Wissen schadet nur dem, der es nicht hat !


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 43 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye