Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   ÜberPdf Struktur (https://www.delphipraxis.net/194757-ueberpdf-struktur.html)

Rollo62 2. Jan 2018 07:32

ÜberPdf Struktur
 
Hallo zusammen,

noch ein frohes Neues Jahr euch Allen.

Zum neuen Jahr gibt es ein schönes Neues PDF Framework.
Ihr habt das sicher auch schon entdeckt :stupid:

Es ist wohl FPC basiert, mit Bindungen zu Delphi.
Die Libraries selbst basieren aud C/C++, und ich frage mich im Moment wie diese Bindungen zustande kommen.
Mit FPC kenne ich mich nicht aus, aber ich habe schon solche wilden Konstrukte bei denen mal öfters gesehen.
Anscheinend ist dieses Framework für alle möglichen Platformen kompatibel, und bindet sich dann als Pascal in Delphi ein.

Ich frage mich wo die Typen herkommen, z.B. diese hier

Delphi-Quellcode:

//------------------------------------------------------------------------------
#ifdef UBERPDFSDK_DYNAMIC_BINDING
//------------------------------------------------------------------------------
  typedef UBER_INT (UBERAPI *fn_UberPdfSdk_File_Io_OpenForReadingA) (
                                                                       CONST_LP_UBER_CSTR lpFilePathA,
                                                                       UBER_SIZE_T cchlpFilePathBufferSize,
                                                                       LP_UBERPDFSDK_FILE_IO_HANDLE lpUberPdfSdkFileIoH
                                                                    );
//------------------------------------------------------------------------------
#else
//------------------------------------------------------------------------------
  UBER_INT UBERAPI UberPdfSdk_File_Io_OpenForReadingA (
                                                         CONST_LP_UBER_CSTR lpFilePathA,
                                                         UBER_SIZE_T cchlpFilePathBufferSize,
                                                         LP_UBERPDFSDK_FILE_IO_HANDLE lpUberPdfSdkFileIoH
                                                      );
//------------------------------------------------------------------------------
#endif
//------------------------------------------------------------------------------
kommt aus einem C/C++ Header, und wird anscheinend so 1:1 in Pascal verwendet.

Delphi-Quellcode:
//------------------------------------------------------------------------------
// uberpdfsdk_file_io
//------------------------------------------------------------------------------
  {$ifndef UBER_DEFINED_COMPILER_REQUIRES_FILE_IO_LESS}
  UberPdfSdk_File_Io_OpenForReadingA : fn_UberPdfSdk_File_Io_OpenForReadingA;
  {$ifdef UBER_DEFINED_COMPILER_SUPPORTS_WIDECHAR}
  UberPdfSdk_File_Io_OpenForReadingW : fn_UberPdfSdk_File_Io_OpenForReadingW;
  {$endif} //UBER_DEFINED_COMPILER_SUPPORTS_WIDECHAR
  UberPdfSdk_File_Io_OpenForWritingA : fn_UberPdfSdk_File_Io_OpenForWritingA;
  ...
Eine gesonderte Typdefinition für Pascal dafür habe ich jetzt nicht gefunden, kann aber sein das ich es überlesen habe.
Vielleicht kommt ja FPC damit klar, und auch Typdefinitionen aus Headern zu lesen, aber ich denke Delphi kann das nicht.
Oder irre ich mich da ?

Könnte ja auch sein das hier am Ende per FPC nur Delphi-kompatible Libraries rauskommen, für die man dann noch Interfaces/Wrapper schreiben muss ?

Jedenfalls sieht das für mich wie ein sehr interessanter Crossplatform-Ansatz von C/C++ auf alle möglichen Zielplattformen zu sein, was ein gewisses Potential hat.

Kennt sich jemand mit dieser Art Crossplatfom-Entwicklung aus, und könnte mir auf die Sprünge helfen wie das wohl unter Delphi korrekt eingebunden werden könnte ?

Die Frage wäre auch wie das unter MacOs gehandhabt wird, da gibt es doch kein C/C++, oder etwa doch (ObjectiveC ist ja etwas aus einem anderen Universum).

Rollo

Fritzew 2. Jan 2018 08:55

AW: ÜberPdf Struktur
 
Es gibt 2 Files für die Einbindung:

// Dynamisch also als Dll:
libuberpdfsdkdyn_pascal.pas

// Fest gelinkt:
uberpdfsdk_pascal.pas

Und dann noch jeden Menge *.inc Files

Zu MacOS: klar geht da C/C++ Objective C id nur eine Obermenge davon und eigntlich ein präprozessor
XCode kann prima mit C/C++ umgehen

Das ÜberPDF is allerdings in der veröffentlichten Form schon wirklich hart.......
Wenn Du nicht genau weist was Du tust kommst Du so damit nicht weit, da hilft es das PDF32000_2008.pdf anzuschauen
das als TestFile mit dabei ist.
Aktuell is das alles wirklich Low-Level.
Es soll ja aber auch noch eine High-Level Package kommen:
ÜberPDF-Utils™: (to be released next)
Ich denke dann wird es wirklich interessant

Rollo62 2. Jan 2018 10:34

AW: ÜberPdf Struktur
 
Hallo Fritzew,

dankesehr für die Info.
Ich dachte das diese Struktur womöglich "Standard" unter FPC ist,
also ist es deiner Meinung nach wohl auch etwas extrem :-)

Gut, muss ich mich mal tiefer mit beschäftigen, auch generell mit de Thema CrossPlatform und FPC.
Hast du da vielleicht einen guten Tipp wo man FPC CrossPlatform Infos findet (also in komprimierter Form, nicht die üblichen Verdächtigen) ?

Z.B. hat wohl auch CastleGame Engine einen Generator für verschiedene Platformen,
das ist wohl ähnlich extrem, aber womöglich interessant :-)

Vielleicht gibt es ja auch einen mehr oder weniger "offiziellen" Weg bei Lazarus, FPC und Co.
Mich würde mal interessieren wie man FPC mit Delphi einbinden kann, und wie man die Zertifikate und Ähnliches dort löst.
Schliesslich kam FMX ja ursprünglich auch mal via FPC auf den Mac.
Jedenfalls finde ich da ziemlich wenig konkrete Info drüber (ist wohl eine Geheimwissenschaft).

Rollo

Fritzew 2. Jan 2018 16:50

AW: ÜberPdf Struktur
 
Nun ja letztendlich ist das halt einfach eine C-Api.
Hier ist es halt über includes geregelt, aber ansonsten ja immer das selbe.
Zu FPC kann ich nicht wirklich etwas sagen, irgendwie werde ich nicht warm damit. Für Crossplatform verwende ich den
Elements-Compiler. Aber das hängt damit zusammen das ich gerne die Original-Gui Elemente benutze.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf