Seite 5 von 7

Re: [Module] pbPDF-Module

Verfasst: 30.01.2020 10:44
von Thorsten1867
Update: PDF::GetStringHeight() added

Re: [Module] pbPDF-Module

Verfasst: 23.03.2020 23:04
von MenschMarkus
Hallo Thorsten1867,

erstmal vielen Dank für die tolle Arbeit die Du hier leistest. :bounce:

Wie ich sehe hast Du seit meinem letzten Post das Modul wieder erheblich erweitert, u.a. auch eine Unicode Zeichenunterstützung eingebaut. Ich habe folgendes versucht:

Code: Alles auswählen

    PDF::Cell(#PDF, "نشوان عبد الرزاق عبد الب" + Chr(Asc("ا"))+" " + Chr(Asc("ق"))+ " " + Chr(Asc("ي")),20,10,#False,PDF::#Right,"",#False)
Ich habe "Arial" verwendet, da dieser Font einen erweiterten Zeichensatz enthält.

Ich habe testhalber auch einmal ein arabischen Font (Amiri) versucht

Code: Alles auswählen

    PDF::EmbedFont(#PDF,"Amiri","","")
    PDF::SetFont(#PDF, "Amiri","B", 16)
    PDF::Cell(#PDF, "نشوان عبد الرزاق عبد الب" + Chr(Asc("ا"))+" " + Chr(Asc("ق"))+ " " + Chr(Asc("ي")),20,10,#False,PDF::#Right,"",#False)
Leider erhalte ich immer nur ???? als Ausgabe.
Habe ich da ein Denkfehler?

Re: [Module] pbPDF-Module

Verfasst: 03.05.2020 14:43
von Thorsten1867
Update: Konvertierung inkompatibler PNGs

Re: [Module] pbPDF-Module

Verfasst: 03.07.2020 21:57
von gnaps
Hallo,

bin gerade am testen mit dem pbPDF-Module

Wie kann ich die Schriftart auf zb. Verdana umstellen ?
bzw andere Schriftarten ?

Gruß
gnaps

Re: [Module] pbPDF-Module

Verfasst: 03.07.2020 22:15
von gnaps
Hi,

wer die Anleitung lesen kann ist klar im Vorteil.

jedoch gehts nicht

PDF::EmbedFont(#PDF,"C:\WINDOWS\FONTS\VERDANA.TTF","Verdana")

was mache ich falsch ?

Gruß
gnaps

Re: [Module] pbPDF-Module

Verfasst: 13.08.2020 11:52
von Morty
Hallo Thorsten,

nach längerer Zeit habe ich mich mal wieder Deinem PDF Modul gewidmet. Ich bin immer noch stark beeindruckt. Gutes Modul, super umgesetzt :D :allright:

Ich würde aber nicht schreiben, wenn es da nicht was gäbe. Und zwar funktioniert bei mir Header & Footer nicht. Diese werden auf der PDF einfach nicht angezeigt / berücksichtigt. Als Beispielcode nehme ich einfach mal das beiliegende Beispiel für PageFormat (pbPDF-PageFormat.pb). Die bei mir erstellte PDF hat weder Header noch Footer. Seltsam :freak:

Meine Specs:
PureBasic: 5.72 - 32 Bit (auf 64 Bit OS)
OS: Windows 7 - 64 Bit

Wäre cool, wenn Du da mal schauen könntest.

Gruß,
Morty

Re: [Module] pbPDF-Module

Verfasst: 28.07.2021 09:23
von MenschMarkus
Hallo Thorsten,

der Beitrag von Morty ist jetzt fast 1 Jahr her. Konntest Du schon einmal in Deinem Code nachsehen?
Ohne Header und Footer ist es nicht wirklich Möglich sinnvoll Formulare mit Folgeseiten zu erstellen. Bin gerade dabei ein Update für mein Programm zu schreiben und wollte mal wieder auf Deine Resource zurück greifen und jetzt habe ich das gleiche Problem wie Morty

By the way: alle Module waren bislang eine wirklich tolle Umsetzung :allright:

Re: [Module] pbPDF-Module

Verfasst: 28.07.2021 11:47
von Lord
Hallo!

Ohne jetzt wirklich Ahnung zu haben, benutze ich das pbPDF-Modul ebenfalls seit
langer Zeit. Ich bin halt ein Universaldilletant.
Jedoch funktioniert bei mir das Setzen von Header und Footer problemlos. Ich er-
innere mich zwar dunkel, daß ich damals lange tüfteln mußte, bis es so lief, wie
ich es mir dachte.
Es geht aber jetzt immer noch problemlos mit PB 6.00 Alpha 3(x64) und dem ASM-
Backend als Compiler. Das C-Backend bereitet mir noch große Probleme. Da will
ich aber die nächsten(n) Alpha-(und dann Beta-)Versionen abwarten.

Ich habe zwei Proceduren definiert:

Code: Alles auswählen

Procedure Header()
  pdf_SetFont("MS Sans Serif Standard","B",14)
  pdf_SetY(Rand\ro)
  pdf_Cell(0,16, FormatString(Rand\HT),#PDF_CELL_BOTTOMBORDER,0,#PDF_ALIGN_CENTER)
  pdf_SetY(Rand\ro +24)
EndProcedure
Procedure Footer()
   pdf_SetFont("MS Sans Serif Standard","",10)
   pdf_SetY(Rand\ru-Rand\FH)
  pdf_Cell(0,rand\FH,FormatString(Rand\FT),#PDF_CELL_TOPBORDER,0,#PDF_ALIGN_RIGHT)
EndProcedure
Diese werden im Rahmen der PDF-Initialisierung von mir so aufgerufen:

Code: Alles auswählen

  If Rand\HS
    pdf_SetProcHeader(@Header())
  EndIf
  If Rand\FS
    pdf_SetProcFooter(@Footer())
  EndIf
Ich meine mich aber dunkel erinnern zu können, daß das Einbinden von Header
und Footer an der richtigen Position im Code stehen muß. Das ganze ist aber schon
7 Jahre her. Die PDF-Erstellung fasse ich auch nicht mehr an solange es funktioniert.
Die grobe Reihenfolge der Initialisierung sieht etwa so bei mir aus:

Code: Alles auswählen

pdf_Create
pdf_SetDisplayMode
pdf_DisplayPreferences
pdf_AliasNbPages
pdf_SetTitle
pdf_SetSubject
pdf_SetCreator
pdf_SetAutoPageBreak
pdf_SetMargins
pdf_SetFont
pdf_SetProcHeader
pdf_SetProcFooter
pdf_SetProcCompression
pdf_AddPage
...
...
Ich hoffe, zumindest einen Ansatz für eine Fehlersuche geliefert zu haben.

Re: [Module] pbPDF-Module

Verfasst: 28.07.2021 12:25
von MenschMarkus
@Lord
So nebenbei bemerkt, gemessen an Deinem hier ausgegebenen Code arbeitest Du mit einer älteren Version, was OK ist. Ich schätze mal die PBI heißt "purePDFModule.pbi".

Re: [Module] pbPDF-Module

Verfasst: 28.07.2021 15:29
von MenschMarkus
Auch wenn es ein Doppelpost wird, ich habe die Lösung für die Anzeige von Kopf und Fußzeilen gefunden.

Es ist direkt nach dem Create die Kopf und Fußzeile einzuschalten. Laut Dokumentation sollte das automatisch funktionieren. Da ist wohl noch ein Bug drin. So konnte ich das lösen:

Code: Alles auswählen

XIncludeFile ".\pbPDFModule.pbi"

#PDFFILE = 1
Procedure Header()
    PDF::SetFont(#PDFFILE,"Arial","I",8)
    PDF::SetColorRGB(#PDFFILE,PDF::#TextColor,127,255,127)  
    PDF::Cell(#PDFFILE,"Header",#False,8,#False,PDF::#NextLine,PDF::#CenterAlign,#False,"")
    PDF::Ln(20)
EndProcedure

Procedure Footer()
    PDF::SetPosY(#PDFFILE,-20,#False)
    PDF::SetFont(#PDFFILE,"Arial","I",8)
    PDF::SetColorRGB(#PDFFILE,PDF::#TextColor,127,0,127)  
    PDF::Cell(#PDFFILE,"Dies ist eine Fußzeile mal ohne Angabe von Seitenzahlen",#False,8,#False,PDF::#NextLine,PDF::#CenterAlign,#False,"")
EndProcedure

 If PDF::Create(#PDFFILE);,"P","mm",PDF::#Format_A4)
; ===== General Settings =====
    PDF::EnableHeader(#PDFFILE,#True)
    PDF::EnableFooter(#PDFFILE,#True)
    PDF::SetAutoPageBreak(#PDFFILE,#True)
    PDF::SetPageNumbering(#PDFFILE,#True)
; ===== Meta Settings =====
    PDF::SetInfo(#PDFFILE,PDF::#Author,"Author Name")
    PDF::SetInfo(#PDFFILE,PDF::#Title,"Document Title")
    PDF::SetInfo(#PDFFILE,PDF::#Subject,"Document Subject")
    PDF::SetInfo(#PDFFILE,PDF::#Keywords,"Document Keywords")
    PDF::SetInfo(#PDFFILE,PDF::#Creator,"Who has written this document")
; ===== File Control =====    
    PDF::SetHeaderProcedure(#PDFFILE,@Header())
    PDF::SetFooterProcedure(#PDFFILE,@Footer())
; ===== File content =====    
    PDF::AddPage(#PDFFILE)
    PDF::SetFont(#PDFFILE,"Arial","",10)
    PDF::SetColorRGB(#PDFFILE,PDF::#TextColor,127,127,127)  
    PDF::Cell(#PDFFILE,"Hier beginnt das Formular",#False,8,#False,PDF::#NextLine,PDF::#CenterAlign,#False,"")
    PDF::AddPage(#PDFFILE)
    PDF::SetColorRGB(#PDFFILE,PDF::#TextColor,227,227,227)  
    PDF::Cell(#PDFFILE,"Hier beginnt das Formular Seite 2",#False,8,#False,PDF::#NextLine,PDF::#CenterAlign,#False,"")
    PDF::AddPage(#PDFFILE)
    PDF::SetColorRGB(#PDFFILE,PDF::#TextColor,27,27,27)  
    PDF::Cell(#PDFFILE,"Hier beginnt das Formular Seite 3",#False,8,#False,PDF::#NextLine,PDF::#CenterAlign,#False,"")
; ===== Finalize Document =====    
    PDF::Close(#PDFFILE,"test.pdf")
    RunProgram("test.pdf")
  EndIf
Good Luck