PDF erzeugen

Deutschsprachiges X#-Forum – German language forum

Moderator: wriedmann

Post Reply
User avatar
Silvio
Posts: 3
Joined: Fri Jun 21, 2019 10:27 am

PDF erzeugen

Post 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
User avatar
Heinrich
Posts: 33
Joined: Wed Feb 10, 2016 4:44 pm

PDF erzeugen

Post 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
Karl-Heinz
Posts: 774
Joined: Wed May 17, 2017 8:50 am

PDF erzeugen

Post 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:

Code: Select all

? iSEDPageHeight()  // ---> 297.00 
zu Foxit nur so viel: Complety over priced !.

Gruß
Karl-Heinz
FFF
Posts: 1522
Joined: Fri Sep 25, 2015 4:52 pm
Location: Germany

PDF erzeugen

Post 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)
Regards
Karl
(on Win8.1/64, Xide32 2.19, X#2.19.0.2.)
Karl-Heinz
Posts: 774
Joined: Wed May 17, 2017 8:50 am

PDF erzeugen

Post 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
Attachments
prüf.pdf
(186.49 KiB) Downloaded 23 times
User avatar
Horst
Posts: 327
Joined: Tue Oct 13, 2015 3:27 pm

PDF erzeugen

Post 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
 
Attachments
pdf.zip
(13.91 KiB) Downloaded 23 times
Post Reply