Quick PDF Library - .dll benutzen?

Anfängerfragen zum Programmieren mit PureBasic.
oO0XX0Oo
Beiträge: 55
Registriert: 21.07.2017 22:36

Quick PDF Library - .dll benutzen?

Beitrag von oO0XX0Oo »

Hallo,

weiß jemand, wie man eine der .dll Dateien von:
https://www.debenu.com/products/develop ... f-library/

in PB aktuell benutzt?

Die .dlls liegen nach der Installation unter:
C:\Program Files (x86)\Debenu\PDF Library 16\DLL\

Ich hätte gerne Zugriff auf eine (welche?) der beiden 32-bit Versionen,
DebenuPDFLibraryCPDLL1613.dll
DebenuPDFLibraryDLL1613.dll

die nach der Installation in das Verzeichnis, in dem das .pb script liegt,
kopiert wurden.

Möchte damit .pdf Formulare ausfüllen...
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Quick PDF Library - .dll benutzen?

Beitrag von RSBasic »

Ganz schön teuer für eine Lizenz. Dann müsste ja dein Projekt was kommerzielles sein, damit sich das rentiert.
Da ist es einfacher und günstiger, wenn man einen C#-Wrapper für PB erstellt.

Gibt es vom Hersteller Beispielcodes (z.B. in C++), die man nach PB portieren könnte?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
oO0XX0Oo
Beiträge: 55
Registriert: 21.07.2017 22:36

Re: Quick PDF Library - .dll benutzen?

Beitrag von oO0XX0Oo »

Ja, in diesem Fall ist das ein kommerzielles Projekt (Excel Tabellen werden ausgelesen und die Daten in Formulare eingetragen).

Man kann auch z.B. pdftk zum Ausfüllen verwenden, aber das hat seine eigenen Probleme (Unicode Pfade/Dateinamen, Unicodezeichen in Formulareinträgen, etc.). Deshalb ist das hier zwar eine relativ teure Alternative, aber wenigstens ist die Lizenz lebenslang (zumindest wenn einem die gekaufte Version(snummer) ausreicht) und sie ist nicht an die Anzahl der Projekte gebunden.

Es gibt vom Hersteller durchaus sample codes:
https://www.debenu.com/products/develop ... p/samples/

Auch für C++.
Lädt man es herunter und entpackt es
https://www.debenu.com/downloads/code-s ... sample.zip

wird die .dll Datei in dieser .cpp Datei eingebunden und verwendet:
Hello WorldDlg.cpp
oO0XX0Oo
Beiträge: 55
Registriert: 21.07.2017 22:36

Re: Quick PDF Library - .dll benutzen?

Beitrag von oO0XX0Oo »

Keiner eine Idee?
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Quick PDF Library - .dll benutzen?

Beitrag von Sicro »

Ungetestet:

Code: Alles auswählen


; http://www.debenu.com/wp-content/uploads/Foxit_Quick_PDF_Library_15_DLL_GettingStarted.pdf

EnableExplicit

Define library, instanceID
Define tempFile$

tempFile$ = GetTemporaryDirectory() + "Test.pdf"

library = OpenLibrary(#PB_Any, "<INSERT PATH TO THE LIBRARY>")
If Not library
  Debug "Error"
  End
EndIf

instanceID = CallCFunction(library, "DPLCreateLibrary")

If CallCFunction(library, "DPLUnlockKey", instanceID, @"your license key") = #True
  CallCFunction(library, "DPLDrawText", instanceID, 100, 500, @"Hello world")
  CallCFunction(library, "DPLSaveToFile", instanceID, @tempFile$)
  RunProgram(tempFile$)
EndIf

CallCFunction(InstanceID, "DPLReleaseLibrary", instanceID)
CloseLibrary(library)
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
oO0XX0Oo
Beiträge: 55
Registriert: 21.07.2017 22:36

Re: Quick PDF Library - .dll benutzen?

Beitrag von oO0XX0Oo »

Hallo Sicro,

danke sehr für die Hilfe!

Leider funktioniert es nicht wie erhofft.

Ich hab diese beiden .dlls ausprobiert:
C:\Program Files (x86)\Debenu\PDF Library 16\DLL\DebenuPDFLibraryCPDLL1613.dll
C:\Program Files (x86)\Debenu\PDF Library 16\DLL\DebenuPDFLibraryDLL1613.dll

Ich verwende zum Testen den 32-bit Compiler (5.71 beta 2)

Ich bekomme beim Erreichen der Zeile:

Code: Alles auswählen

If CallCFunction(library, "DPLUnlockKey", instanceID, @"<mein_originaler_lizenzschluessel>") = #True
diese Fehlermeldung:

Code: Alles auswählen

[20:27:28] [ERROR] Invalid memory access. (write error at address 5012270)
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Quick PDF Library - .dll benutzen?

Beitrag von Mijikai »

Funktioniert der erste Aufruf?

Code: Alles auswählen

instanceID = CallCFunction(library, "DPLCreateLibrary")
Meine Empfehlung ist alle Tests erst einmal mit x64 durchzuführen (einheitliche Aufrufkonventionen).
Wenn es eine *.lib gibt können die Funktionen eventuell richtig importiert werden ohne den Umweg über LoadLibrary.
oO0XX0Oo
Beiträge: 55
Registriert: 21.07.2017 22:36

Re: Quick PDF Library - .dll benutzen?

Beitrag von oO0XX0Oo »

@Mijikai
Funktioniert der erste Aufruf?
Ja, tut es, auch unter 32-bit
Meine Empfehlung ist alle Tests erst einmal mit x64 durchzuführen (einheitliche Aufrufkonventionen).
Ui. Mit dem 64-bit Compiler und dieser .dll:
C:\Program Files (x86)\Debenu\PDF Library 16\DLL\DebenuPDFLibrary64CPDLL1613.dll

funktioniert es, das .pdf Dokument wird korrekt erstellt.

Allerdings muss die App auch als 32-bit Variante vorliegen (es gibt noch einige sehr alte Win 7 Systeme, auf denen immer noch ein 32-bittiges OS läuft).

Was muss man denn umstellen, damit es auch unter 32-bit funktioniert?
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Quick PDF Library - .dll benutzen?

Beitrag von Mijikai »

Versuch mal den String ("your license key") für die 32bit Version als Ascii zu übergeben.
Teste CallCFunction() & CallFunction().
Antworten