| |
|
|
- Seite 1 - |
|
Jens-Arne Reumschüssel | Guten Nachmittag,
ich war seit sehr langer Zeit auf der Suche nach einer Möglichkeit, selbst PDF-Dateien 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-Dateien mit Textinhalt erzeugen kann, die dann auch durchsuchbar sind.
Dabei ist mir nun eine PureBasic-Library über 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, für 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-Datei und eine PH-Datei gebaut, sodass man einfach aus XProfan heraus nach Herzenslust PDF-Dateien mit Text, 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-Dateien oder meiner Wrapper-DLL geben sollte, kann ich daran etwas ändern.
Viel Spaß 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 möglich. 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 läuft und keine Formularfelder benötigt 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 natürlich 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 für die DLL aber benötigt werden (Singles sind 4-Byte-"Floats") - sofern nicht JRPC3 benutzt wird, muss die ph-Datei vor der inc-Datei eingebunden werden - bitte nicht wundern: sowohl die ph-Datei als auch die inc-Datei haben am Anfang ganz viele Leerzeilen, da ich den 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 natürlich gerne löschen) |
| 169 kB | | Bezeichnung: | PDF-Builder | | Version: | 1.02 | | Kurzbeschreibung: | DLL zum Erzeugen von PDF-Dateien | | Hochgeladen: | 30.01.2022 | | Ladeanzahl: | | | | Herunterladen | | | | 1.504 kB | | Bezeichnung: | PDF-Builder 2 | | Version: | 1.03 | | Kurzbeschreibung: | DLL zum Erzeugen von PDF-Dateien mit Formularfeldern | | Hochgeladen: | 12.03.2023 | | Ladeanzahl: | | | | Herunterladen |
|
|
| XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 30.01.2022 ▲ |
|
|
|
|
| |
|
- Seite 1 - |
|
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-Datei 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-Dateien im Schreibmaschinenstil hinbekommen. Reichte aber. |
|
|
| |
|
|
|
Sven Bader | Vielen Dank für 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 Hilfe Datei (Inhalte wurden nicht gezeigt), das habe ich so gelöst:
Und hier der Beispielcode, den Jens-Arne in Rolands Forum geposted hat:
$H PDF-Builder.ph'muss für 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-Datei 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-Datei 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 | Hallo,
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-Datei aus meinem Programm heraus generiere und die entsprechende Proc über 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.
Hilfe 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. |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
Jens-Arne Reumschüssel | PDF-Builder 2 V1.03 hochgeladen:
Es gibt jetzt bei PDF_Create und PDF_AddPage zwei weitere optionale Parameter, mit denen man die Größe der PDF-Seiten frei wählen kann. Bisher waren nur die gängigen Formate wie z.B. DIN A4 möglich. So kann man nun z.B. eine PDF-Seite erzeugen, die genauso groß ist, wie etwa ein gescanntes Foto.
Die Details stehen in der Hilfedatei.
Achtung: Wer die DLL direkt (also nicht die inc-Datei) benutzt, muss seinen Code anpassen! Die beiden genannten Funktionen haben jetzt zwei Parameter mehr. Werden diese beim Funktionsaufruf nicht an die DLL übergeben, gibt es einen Absturz. In der inc-Datei ist dies automatisch berücksichtigt; dort können die neuen Parameter auch weggelassen werden, sodass keine Codeanpassung erforderlich ist. |
|
|
| XProfan X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | Gestern (17:25) ▲ |
|
|
|