Page 1 of 1
PDF erzeugen
Posted: Tue Dec 22, 2020 7:54 pm
by Silvio
Hallo allerseits,
um meine VO-Appls auf X# portieren zu können, sehe ich momentan nur noch ein einziges Problem:
Wie erzeuge ich schnell und elegant PDF-Dokumente? In VO hatte ich ein Tool, dass es schon lange nicht mehr gibt (ISedQuickPDF). Es soll aber angeblich einen Nachfolger geben (QuickPDF von Foxit). Hat jemand Erfahrung mit QuickPDF unter X#, resp. funktioniert das überhaupt? Wenn nein, welche Alternativen gibt es? Ich möchte natürlich, wenn es irgendwie geht, den Aufwand vermeiden, die z.T. komplexen PDFs Zeile für Zeile neu programmieren zu müssen.
Dankbar für jede erhellende Antwort.
Silvio
PDF erzeugen
Posted: Tue Dec 22, 2020 9:01 pm
by Heinrich
Hallo Silvio
In XSharp und .NET verwende ich die Library "PdfSharp". Funktioniert einwandfrei und ist im Quellcode verfügbar.
NuGetPackage
Die DLL's habe ich in .NET erstellt und verwende diese dann in XSharp und .NET. Sogar .Net Core funktioniert.
Gruss Heinrich
PDF erzeugen
Posted: Wed Dec 23, 2020 1:45 pm
by Karl-Heinz
Hallo Silvio,
es kommt darauf an ob Du bei Deiner VO -> X# Umstellung die ISedQuickPDF.dll zuerst einmal beibehalten willst oder nicht ? Bestehende ISed Deklarationen kannst Du mehr oder weniger 1:1 übernehmen. Beispiel:
Code: Select all
_DLL FUNCTION iSEDAddImageFromFile ( sFileName AS PSZ, iOptions AS INT ) AS INT PASCAL:iSEDQuickPDF.iSEDAddImageFromFile
kompiliert ohne Änderung mit X#.
Gibt die ISed dll allerdings floats zurück würde eine VO Deklaration zum Beispiel ja so aussehen:
Code: Select all
FUNCTION iSEDPageHeight () AS REAL8 PASCAL
LOCAL r8Value AS REAL8
__iSEDPageHeight()
r8Value := _PopI87Real8()
RETURN r8Value
_DLL FUNCTION __iSEDPageHeight() AS REAL8 PASCAL:iSEDQuickPDF.iSEDPageHeight
mit X# reicht diese Deklaration - was auch eher dem gesunden Menschenverstand entspricht
Code: Select all
_DLL FUNCTION iSEDPageHeight() AS REAL8 PASCAL:iSEDQuickPDF.iSEDPageHeight
Sowohl mit VO als auch mit X# zeigt mir bei einem DIN A4 Format dieser Aufruf das gleiche Ergebnis an:
zu Foxit nur so viel: Complety over priced !.
Gruß
Karl-Heinz
PDF erzeugen
Posted: Wed Dec 23, 2020 3:48 pm
by FFF
Es kommt natürlich auch drauf an, was genau das erzeugte PDF können muß. Wenn der Output eines "PDF-Druckers" reicht, verwende ich seit Jahren den FreePDFPrinter von Bull. (
https://www.bullzip.com/products/pdf/info.php)
PDF erzeugen
Posted: Wed Dec 23, 2020 7:16 pm
by Karl-Heinz
FFF wrote:Es kommt natürlich auch drauf an, was genau das erzeugte PDF können muß. Wenn der Output eines "PDF-Druckers" reicht, verwende ich seit Jahren den FreePDFPrinter von Bull. (
https://www.bullzip.com/products/pdf/info.php)
Du sprichst in Rätseln ?
Die isedquickpdf.dll ist *kein* PDF-Druckertreiber, sondern eine ganz normale win32 dll die Funktionen beinhaltet mit der man PDFs erstellen kann. In eine Klasse gepackt, sieht der code für das PDF im Anhang so aus:
Code: Select all
FUNCTION Start( ) AS VOID
LOCAL oPDF AS RptPDFPruef
LOCAL i AS DWORD
LOCAL dVon, dBis AS Date
oPDF := RptPDFPruef{"D:Testprüf.pdf"}
IF oPDF:Init
dVon := ConDate ( 2019 , 1 , 1 )
dBis := ConDate ( 2019 , 12 , 31 )
oPDF:Slot := "Prüfung"
oPDF:BeginPrint( PDF_PAPER_A4 ,TRUE )
FOR i := 1 UPTO 1000
oPDF:Qout ( PadL ( i , 4 , "0" ) + Chr ( 9 ) + "Street " + NTrim ( i ) + Chr ( 9 ) + ;
DToC ( dVon ) + Chr ( 9 ) + DToC ( dBis ) )
NEXT
oPDF:EndPrint()
oPDF:Close()
ENDIF
RETURN
Natürlich geht damit noch wesentlich mehr, wie Farben, verschiedene Schriftgrößen, Grafiken einbinden etc ..
Gruß
Karl-Heinz
PDF erzeugen
Posted: Tue Jan 19, 2021 9:55 am
by Horst
Hallo Silvio
Im Anhang die Klasse MDPdf und eine Beispiel Routine.
Du musst dann aber schon die Pdfs wieder neu erstellen.
Die Klasse kannst du ja deine Bedürfnissen anpassen. Ist klein aber fein.
Gruss
Horst