Seite 1 von 1

Quick PDF Library - .dll benutzen?

Verfasst: 05.07.2019 12:09
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...

Re: Quick PDF Library - .dll benutzen?

Verfasst: 05.07.2019 12:27
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?

Re: Quick PDF Library - .dll benutzen?

Verfasst: 05.07.2019 13:08
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

Re: Quick PDF Library - .dll benutzen?

Verfasst: 07.07.2019 13:28
von oO0XX0Oo
Keiner eine Idee?

Re: Quick PDF Library - .dll benutzen?

Verfasst: 07.07.2019 19:43
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)

Re: Quick PDF Library - .dll benutzen?

Verfasst: 07.07.2019 20:31
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)

Re: Quick PDF Library - .dll benutzen?

Verfasst: 08.07.2019 07:37
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.

Re: Quick PDF Library - .dll benutzen?

Verfasst: 08.07.2019 08:22
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?

Re: Quick PDF Library - .dll benutzen?

Verfasst: 08.07.2019 08:51
von Mijikai
Versuch mal den String ("your license key") für die 32bit Version als Ascii zu übergeben.
Teste CallCFunction() & CallFunction().