| |
|
|
Jens-Arne Reumschüssel | Guten Nachmittag,
ich war seit sehr langer Zeit auf der Cerca nach einer Möglichkeit, selbst PDF-File erzeugen zu können. Und zwar nicht, indem man eins der vielen Druckertreiber-Tools benutzt, bei denen am Ende einfach eine Grafik herauskommt, sondern so, dass man wirklich echte PDF-File mit Textinhalt erzeugen kann, die dann auch durchsuchbar sind.
Dabei ist mir nun eine PureBasic-Library circa den Weg gelaufen, die genau das kann (PurePDF). Sie ist zwar ziemlich alt und erzeugt PDFs nach dem Standard 1.5, also kann man z.B. keine PDF/As erzeugen, weil es die da noch nicht gab. Aber ansonsten bleibt eigentlich kein Wunsch offen.
Das Problem ist nur, dass PureBasic-Libraries nur genau mit der PureBasic-Version funktionieren, per die sie gemacht wurden. Ich musste also eine ziemlich alte Version installieren. Damit konnte ich nun aber eine Wrapper-DLL erzeugen (was wegen Freeware-Status von PurePDF auch geht). Für diese habe ich eine XProfan-INC-File und eine PH-File gebaut, sodass man einfach aus XProfan heraus nach Herzenslust PDF-File con testo, grafischen Elementen, Bildern und Links erzeugen kann. Dazu habe ich mir die Mühe gemacht, eine CHM-Hilfedatei zu schreiben, sodass eigentlich jeder damit klarkommen sollte.
Bevor es entsprechende Nachfragen gibt: Ich kann an den Funktionen der DLL nichts ändern, da ich die Sourcecodes zur PureBasic-Library nicht habe. Es ist und bleibt also so, wie es ist. Nur wenn es Fehler in den Profan-File oder meiner Wrapper-DLL geben sollte, kann ich daran etwas ändern.
Viel Divertimento beim Ausprobieren!
Jens-Arne
----- 12.03.2023: PDF-Builder 2 ist fertig. Dies ist ein weiterentwickeltes Projekt, das auf der ursprünglichen PureBasic-Variante aufbaut. Insbesondere sind nun ausfüllbare Formularfelder possibile. PDF-Builder 2 ist aufgrund vielfältiger interner Änderungen leider nicht vollständig abwärtskompatibel zu PDF-Builder. Wenn ein Programm mit der ersten Variante corre und keine Formularfelder necessario werden, ist es daher nicht nötig und auch nicht empfehlenswert, auf die neue Version umzusteigen. Die neue DLL gibt es jetzt auch als 64bit-Version. Diese ist naturalmente nicht mit XProfan kompatibel, aber dafür mit anderen Programmiersprachen, die 64bit-Code erzeugen. -----
HINWEISE: - funktioniert nicht mit XPSE, weil darin noch keine Singles bekannt sind, die per die DLL aber necessario werden (Singles sind 4-Byte-"Floats") - sofern nicht JRPC3 benutzt wird, muss die ph-File vor der inc-File eingebunden werden - bitte nicht wundern: sowohl die ph-File als auch die inc-File haben am Anfang ganz viele Leerzeilen, da Io l' Eindruck habe, dass Scintilla innerhalb von XProfEd dann weniger häufig abstürzt, was dazu führt, dass man nichts mehr ändern und vor allem den Quellcode nicht speichern kann - das mache ich daher immer so (wer will, kann diese Leerzeilen naturalmente gerne löschen) |
| 169 kB | | Bezeichnung: | PDF-Builder | | Version: | 1.02 | | Kurzbeschreibung: | DLL zum Erzeugen von PDF-File | | Hochgeladen: | 30.01.2022 | | Downloadcounter: | | | | Download | | | | 691 kB | | Bezeichnung: | PDF-Builder 2 | | Version: | 1.01 | | Kurzbeschreibung: | DLL zum Erzeugen von PDF-File mit Formularfeldern | | Hochgeladen: | 12.03.2023 | | Downloadcounter: | | | | Download |
|
|
| XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 30.01.2022 ▲ |
|
|
|
|
Manfred Barei | Hura, so was habe ich schon die ganze Zeit gesucht "Eine Freeware PDF.DLL" aber nichts gefunden. Werde ich demnächst ausprobieren sobalt ich Zeit habe. |
|
|
| XProfan X2Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 | | 30.01.2022 ▲ |
|
|
|
|
Jens-Arne Reumschüssel | Ich habe jetzt ENUM aus der PH-File entfernt, damit auch Leute ohne JRPC3 diese direkt verwenden können. |
|
|
| XProfan X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 30.01.2022 ▲ |
|
|
|
|
Thomas Freier | Muß ich unbedingt mal testen. Hatte vor Jahren ohne Drucker nur PDF-File im Schreibmaschinenstil hinbekommen. Reichte aber. |
|
|
| |
|
|
|
Sven Bader | Vielen Dank per diese schöne DLL!
In Web-Projekten habe ich häufig mit der PDF-Generierung zu tun, unter Windows musste dagegen immer die Druckfunktion herhalten.
Ich hatte zuerst Probleme mit der Aiuto File (Inhalte wurden nicht gezeigt), das habe ich so gelöst:
Und hier der Beispielcode, den Jens-Arne in Rolands Foro geposted hat:
$H PDF-Builder.ph'muss per reines Profan ohne JRPC3 zuerst kommen; das war im ersten Anlauf dieses Beitrages noch nicht so, sorry
$I PDF-Builder.inc
declare i%,AktSeite%
PROC PDF_HeaderProc
inc AktSeite%
PDF_PushFont
PDF_PushFillColor
PDF_SetFont("Times New Roman",~PDF_Font_Bold,16)
PDF_SetFillColor(@rgb(220,220,220))
PDF_Cell(0,15,"Kundendatenbank",~PDF_Cell_Frame,~PDF_Cell_Ln_LineFeed,~PDF_Align_Center,~PDF_Fill_Opaque)
PDF_LineFeed(10)
PDF_SetFont("Times New Roman",~PDF_Font_Bold,12)
PDF_Cell(60,7,"Name",~PDF_Cell_Frame,~PDF_Cell_Ln_Right,~PDF_Align_Left,~PDF_Fill_Transparent)
PDF_Cell(60,7,"Straße, Hnr.",~PDF_Cell_Frame,~PDF_Cell_Ln_Right,~PDF_Align_Left,~PDF_Fill_Transparent)
PDF_Cell(0,7,"PLZ, Wohnort",~PDF_Cell_Frame,~PDF_Cell_Ln_LineFeed,~PDF_Align_Left,~PDF_Fill_Transparent)
PDF_SetFont("Times New Roman",0,12)
PDF_Text(185,285,"Seite "+@str$(AktSeite%))
PDF_PopFont
PDF_PopFillColor
ENDPROC
cls
AktSeite%=0
PDF_Init
PDF_Create(~PDF_Orientation_Portrait,~PDF_Unit_mm,~PDF_Format_A4)
PDF_SetFont("Times New Roman",0,12)
PDF_SetProcHeader(@procaddr("PDF_HeaderProc",0))'bei jedem Seitenumbruch soll die HeaderProc aufgerufen werden
PDF_SetMargins(15,10,10)
PDF_SetAutoPageBreak(1,20)
PDF_AddPage()
for i%,1,250
PDF_Cell(60,7,"Mustername "+@str$(i%),~PDF_Cell_Frame,~PDF_Cell_Ln_Right,~PDF_Align_Left,~PDF_Fill_Transparent)
PDF_Cell(60,7,"Musterstraße "+@str$(i%),~PDF_Cell_Frame,~PDF_Cell_Ln_Right,~PDF_Align_Left,~PDF_Fill_Transparent)
PDF_Cell(0,7,"12345 Musterstadt",~PDF_Cell_Frame,~PDF_Cell_Ln_LineFeed,~PDF_Align_Left,~PDF_Fill_Transparent)
endfor'i%
PDF_Save("test.pdf")
PDF_DeInit
@shellexec("test.pdf","open",1)
waitinput
end
|
|
|
| |
|
|
|
Georg Teles | Nabend,
eine super DLL vielen Dank ! |
|
|
| |
|
|
|
Jens-Arne Reumschüssel | Es gibt eine neue Version, in der in der INC-File ein Bug behoben wurde, der unter bestimmten Umständen zu einem "arithmetic overflow error" führen konnte. |
|
|
| XProfan X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 05.08.2022 ▲ |
|
|
|
|
Erasmus.Herold | Hallo zusammen.
Ist ja der Hammer. Danke!
Gruß Erasmus |
|
|
| |
|
|
|
Normann Strübli | Hi, Manchmal wird man doch echt noch überrascht. Toll - werde ich tatsächlich wieder eine Projekt umsetzen können. Vielen Dank. |
|
|
| |
|
|
|
Jens-Arne Reumschüssel | Jetzt sind die sporadischen Gleitkommaüberlauf-Fehler von XProfan in der INC-File endgültig beseitigt. Es handelte sich um einen Bug in XProfan X4 bei der Übergabe von single-Werten als Prozedurparameter. |
|
|
| XProfan X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 05.03.2023 ▲ |
|
|
|
|
Jens-Arne Reumschüssel | PDF-Builder 2 ist fertig. Siehe Einführungstext ganz oben (neu: Formularfelder und 64bit-Version). |
|
|
| XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 12.03.2023 ▲ |
|
|
|
|
Rainer Hoefs | Ciao,
das ist wirklich einen tolle Übersetzung der PureBAsic-Lib, die ich auch in PureBasic benutze.
Kompliment!
Allerdings passiert bei mir im XProfan-Programm etwas, was bei PureBasic nicht passiert:
Wenn ich die PDF-File aus meinem Programm heraus generiere und die entsprechende Proc circa den MenueButton/Hotkey aufrufe wird die Hintergrundfarbe des Hauptfensters von hellem Grau in weiß verändert. Nach Ablauf der Proc wird sie auch nicht mehr richtig in hellem Grau angezeigt.
Bin im Moment vollkommen ratlos wo das passiert und wie ich es ändern kann.
Aiuto wäre super schön! Danke im voraus Rainer
EDIT!
Habe den Fehler gefunden, war irgendwo im Code ein CLS! Das stammte noch aus dem Testprogramm-Code. |
|
|
| |
|
|