Essay über das Erstellen von PDF-Dateien. Essay über das Erstellen von PDF-Dateien Lesen von pdf delphi

In diesem Artikel werden wir uns ansehen, wie Sie Ihre eigenen erstellen können pdf-Dokumente, und im nächsten Artikel werden wir uns ansehen, wie Sie diese anzeigen können pdf-Dokumente in ihren Projekten sowie Inhalt drucken, durch das Dokument navigieren und so weiter.

Dazu benötigen wir die Komponenten aus dem Reiter Rave. Lassen Sie uns die Komponenten installieren, die wir zum Arbeiten benötigen, und diese sind:

  • TRvNDRWriter
  • TRvRenderPdf
  • TButton

Komponente TRvNDRWriter entworfen, um aufgenommen zu werden pdf-Dateiinformationen (Text, Grafik), durch den Stream.

Komponente TRvRenderPdf entwickelt, um Informationen (Text, Grafiken usw.) zu erstellen und zu zeichnen. Nun, durch Drücken der Taste geben wir etwas in unsere ein pdf-Datei.

Wir werden nicht viel von der Theorie schreiben, aber wir werden sofort zur Programmierung übergehen, aber wir müssen zuerst ein gewöhnliches Leerzeichen erstellen pdf-Datei und legen Sie sie im Stammverzeichnis des Programms ab. Neben der Veranstaltung anklicken Für unsere Schaltfläche schreiben wir den folgenden Code:

Prozedur TForm1. Button1Click (Sender: TObject ) ; var Streams: TMemoryStream; beginStreams:=TMemoryStream. schaffen; RvNDrWriter1. Strom := Ströme; RvNDRWriter1. Ausführen; RvRenderPdf1. PrintRender(Streams, "test.pdf" ) ; ShellExecute(Handle, nil , "test.pdf" , "" , "" , SW_SHOW) ; FreeAndNil (Streams) ; Ende ;

Wir erstellen einen Stream, in den wir alle Informationen zeichnen, dann starten wir das Rendern, geben die Datei an, in die die Daten gezeichnet werden, und am Ende zerstören wir den Stream.

Das ist jetzt alles, wir brauchen ein Ereignis, das auftritt, wenn die Daten gezeichnet werden, in dem wir alle unsere Informationen anzeigen. Auswählen einer Komponente TRvNDRWriter und gehen Sie die Liste der Ereignisse dieser Komponente durch, wonach wir das Ereignis finden OnPrint und in diesem Fall schreiben wir den folgenden Code:

Prozedur TForm1. Drucken(Absender: TObject) ; bmp beginnen := TBitmap. schaffen; bmp. LoadFromFile("test.bmp") ; mit RvNDRWriter1 beginne SetFont("Arial" , 16) ; Schriftfarbe:=clGreen; Print("Testtext") ; PrintHeader("PDF-Datei beginnen" , pjCenter) ; PrintFooter("PDF-Datei beenden" , pjCenter) ; LineTo(10, 10) ; PrintBitmap(1, 1, 1, 1, bmp) ; Ende ; FreeAndNil (bmp) ; Ende ;

Nun, zuerst laden wir ein Bild hoch. *.bmp, natürlich variabel bmp, haben wir ein Klassenobjekt TBitmap. Wir laden es hoch, um es später in unserem zu zeichnen pdf-dokumentieren.

Und dann, ich denke, alles ist klar, das Verfahren Druckkopf- zeigt eine Inschrift im Titel des Dokuments (Seite), Verfahren Fußzeile drucken- zeigt die Inschrift am Ende des Dokuments (Seite) an. Verfahren DruckenBitmap- Zeigt das Bild im Dokument an, Verfahren Schriftart- setzt die Schriftart des Dokuments, Verfahren Schriftfarbe- legt die Schriftfarbe des Dokuments fest.

Es gibt zwei Möglichkeiten, die Anzeige von PDF-Dokumenten im Programm zu organisieren.

  • Verwendung von ActiveX-Technologie;
  • Verwendung von Sonderkomponenten.

PDF-Komponenten sind nicht in allen Editionen von Delphi verfügbar und müssen meistens zusätzlich gesucht und installiert werden. Gleichzeitig benötigen Sie zur Verwendung von ActiveX nur das entsprechende Software. IN dieser Fall Adobe Acrobat Reader (kostenlos) oder Adobe Acrobat.

Die Arbeit mit ActiveX lässt sich bedingt in zwei Stufen einteilen.

  • Importieren einer Typbibliothek oder von Komponenten;
  • Eigentlich die Verwendung von importierten Tools in der Anwendung.
Komponenten importierenActiveX

Verwenden Sie zum Importieren von Komponenten den Befehl "Komponente" - "Komponente importieren" im Delphi-Hauptmenü. Der Importvorgang selbst ist als Assistent implementiert.

Wählen Sie auf der ersten Seite des Assistenten „ActiveX-Steuerelement importieren“.

Danach müssen Sie entscheiden, was mit den importierten Komponenten geschehen soll. Da geplant ist, sie als Delphi-Komponenten zu verwenden, wählen Sie "In neues Paket installieren".

Jetzt muss nur noch der Name des neu erstellten Pakets angegeben werden.

Nachdem Sie auf die Schaltfläche "Fertig stellen" geklickt haben, werden die ActiveX-Komponenten des PDF-Viewers in Delphi importiert.

SichtPDF im Antrag

Um einen PDF-Viewer in einer Anwendung mit ActiveX zu erstellen, ist die TAcroPDF-Komponente erforderlich. Der Importvorgang ist oben beschrieben.

Lassen Sie uns die folgende Anwendung als Beispiel erstellen. Lassen Sie uns die Komponenten TAcroPDF, TOpenDialog und TButton auf dem Formular platzieren, wie im Screenshot unten gezeigt.

Wenn Sie auf die Schaltfläche klicken, rufen wir den Datei-Öffnen-Dialog auf, um eine PDF-Datei zum Anzeigen auszuwählen.


Erscheinungsdatum 23.09.2005 07:00 Essay über das Erstellen von PDF-Dateien

IN In letzter Zeit Im Internet wurden viele PDF-Konverter, -Leser und -Schreiber gefunden. Und die überwiegende Mehrheit von ihnen wird für Geld angeboten. Das Programm selbst kostet zwischen 10 und 300 US-Dollar. Und der Quellcode für viel mehr Geld beginnt bei 200 US-Dollar und mehr an einem Ort (da ich mich dafür interessierte, kletterte ich auf ein Internet) für bis zu 900 Euro.

Dieses Problem interessierte mich in Bezug auf die Programmierung, und jetzt mache ich Sie auf die Ergebnisse aufmerksam. (Diese Ergebnisse wurden von mir beim Studium der Innenräume erzielt PDF Datei und wenn du es öffnest totaler Kommandantüber F3)

Eine typische PDF-Datei besteht aus vier Teilen. :=

Was ist es

? Dies ist der übliche Verweis auf die Version der PDF-Spezifikation. Welches in der ersten Zeile der PDF-Datei vorhanden ist. Zum Beispiel „%PDF-1.3“ In der siebten Version von Acrobat, die irgendwann im Frühsommer dieses Jahres veröffentlicht wurde, lautet diese Nummer „%PDF-1.7“, aber dies ist keine Produktversion, sondern eine Spezifikationsversion . Die zweite Zeile des PDFs ist ein kleiner Kauderwelsch (anscheinend für die weitere Verwendung bestimmt) "%vgPU"

Jeder hat den ersten Teil des PDFs herausgefunden.

Wie heißt der zweite teil ?

Die Antwort ist ganz einfach: Es handelt sich um eine Folge von Objekten, deren Beschreibung ebenso wie der Header in Textform dargestellt wird.

Jedes Objekt ist beispielsweise ein Textfragment mit einer fortlaufenden Nummer im Namen "4 0 Objekte"

  • 4 ist die Seriennummer des Objekts
  • 0 dies ist die Anzahl der (Neu-)Generierung der Datei, dh wann die Datei dann aktualisiert (bearbeitet) wird angegebene Nummer erhöht sich
  • obj Dies ist ein Codewort, das bedeutet, dass wir auf ein Objekt im Hauptteil des Dokuments gestoßen sind

Alle Objekte sind in indirekt und direkt unterteilt. Alle indirekt, und die meisten von ihnen nach dem Wort obj haben ein Demeter in ihrem Körper"<<", означающее начало данных объекта. И в конце данных закрывающий делиметер ">>" und ein Codewort endobj

Gerade Objekte dürfen keine öffnenden und schließenden Demeter in ihrem Körper haben.<<", ">>" Alle indirekten Objekte sind über erreichbar Querverweistabelle. Es stellt Verknüpfungen als Versatz vom Anfang der Datei zum Anfang des Objekts dar (Daten (Zeilen) im Objekt werden getrennt #13#10 oder #13 )

Der Typ des „wichtigsten“ Objekts im Body einer PDF-Datei hat einen stolzen Namen "/Katalog"

40 Obj<< /Type /Catalog /Pages 2 0 R /OpenAction [ 5 0 R /XYZ null 364 1 ] /PageMode /UseNone >> endobj

Tatsächlich sollte es im Körper einer minimalen PDF-Datei wie „Hallo Welt“ 3 „Haupt“-Objekte geben. Lassen Sie mich sie nach Typ auflisten:

  • "/Katalog" enthält einen Link: zum Seitenbaum ( /seiten)
  • "/seiten" enthält einen Link zu einer Gruppe von Seiten im Dokument (z. B. 2 0 obj > endobj)
  • "/Seite" enthält einen Link zu Objekten, die sich auf eine bestimmte Seite beziehen. (Zum Beispiel 3 0 obj > /Rotate 0 >>)
Und ein paar "kleine"

Lassen Sie uns das Seitenobjekt analysieren:

  • /Drehen ein Feld, das anzeigt, um wie viel Grad das Seitenbild gedreht werden soll, wenn es im Programm angezeigt wird
  • /MediaBox Und /CropBox Felder, die die Seitengröße beschreiben
  • /Elternteil Verweis auf übergeordnetes Objekt "/seiten"
  • /Ressourcen dieses Feld beschreibt, welche Schriftart bei der Anzeige der Seite verwendet werden soll (Schriftart ist ein separates Objekt) und eine ProcSet-Einstellung diese Einstellung zeigt, welchen Inhalt der Datenstrom dieser Seite hat (kann auch als Objekt definiert werden, nicht als Feld)
  • /Inhalt Das interessanteste Feld im Objekt "Seite" gibt einen Link zum Inhaltsobjekt dieser Seite, und: wenn dieses Feld im Objekt "Seite" fehlt, dann ist die Seite leer
Seiteninhalt:
Ein Objekt "Strom" 4 0 obj > stream BT /F12 9 Tf 10 782 TD 0 -12,5 TD (Max Fokin) Tj 0 -12,5 TD (mnb) Tj 0 -12,5 TD () Tj 0 -12,5 TD (Max Liguster) Tj 0 -12,5 TD (1) Tj 0 –12,5 TD (1) Tj 0 –12,5 TD (2) Tj 0 –12,5 TD (3) Tj 0 –12,5 TD (45) Tj ET endstream endobj /Länge 305 Dieses Feld zeigt, wie viele Bytes von a Wort Strom zum Wort Endstrom

Die einfachste Möglichkeit ist ein unverschlüsselter und unkomprimierter Datenstrom in einem Objekt Strom. Es ist auf Betreiber beschränkt BT Und ET

BT beginnt ein Textobjekt – kennzeichnet den Anfang des Textes ET beendet ein Textobjekt. - kennzeichnet das Ende des Textes /F12 9 Tf

  • /F12 dies ist der Codename des Objekts, das die auf dieser Seite verwendete Schriftart charakterisiert
  • 9 ist die Schriftgröße
  • Tf Dies ist ein Operator, der kennzeichnet, dass die angegebene Zeichenfolge im Dampfobjekt eine Schriftart- und Größeneinstellung ist
10 782 TD sind die Nummern, ab denen diese Zeile beginnt (gezählt von der oberen linken Ecke) Tj ist der Operator für den Wechsel in eine neue Zeile Nun, in Klammern steht unser Text

Ich erkläre hier nicht den verschlüsselten Stream. Es basiert auf den Algorithmen RC4, RC5, MD5.

Was ist ein Objekt Schriftart 12 0 Objekte >

  • /Geben Sie /Schriftart ein Natürlich der Name des Typs
  • /Untertyp /Typ1 Untertypname
  • /Name /F7 F7 es ist ein Codename

PDF unterstützt mehrere Arten von Schriftarten. Sie sind unten aufgeführt

  • Typ 1, einschließlich Subsets und Multiple Master „Snapshots“
  • Typ 3
  • TrueType, einschließlich Teilmengen
  • 0 eingeben
Typ 3, TrueType, inkl. Teilmengen, Typ 0 habe ich ehrlich gesagt nicht verstanden, dazu kann ich nichts sagen
Und Typ 1 sind die folgenden Schriftarten Courier Courier-Bold Courier-BoldOblique Courier-Oblique Helvetica Helvetica-Bold Helvetica-BoldOblique Helvetica-Oblique Times-Roman Times-Bold Times-Italic Times-BoldItalic Symbol ZapfDingbats

20 0 obj > endobj Dies ist ein Objekt mit Codenamen für Schriftarten des ersten Typs. Unter diesem Codenamen können Sie das Objekt selbst leicht abrufen Schriftart. 6 0 Objekte >

ALLE: d.h. das Minimum Besteht aus folgenden Objekten: "Katalog", "Seiten", "Seite", "Ressourcen"(optional als Feld im Seitenobjekt vorhanden), nicht typisiertes Objekt "Strom", Gruppe von Objekten "Schriftart"

Was ? Tatsächlich ist dies eine normale Texttabelle, sie beginnt mit dem Wort XRef und sein Körper hat Verweise auf alle indirekten Objekte im Dokument. Hier ein Beispiel für XREF 0 27 0000000021 65535 F 0000000016 0000069 000000600356 0000069 00000713 00000 n 00000892 00000 n 00000 00000692 00000 n 00000 00000 n 00000000125 00000 n 000001373 00000 n 0000001486 00000 n 0000001486 00000 n 0000001604 00000 n 0000001725 00000 N 0000001725 00000 N 0000001850 00000 N 0000001725 0000001967 00000 N 000000202084 00000 N 000000 202.084 00000 N 0000002326 00000 N 000000002326 00000 N 00000000239 00000 N 000000002558 00000 N 000000002558 00000 N 000000000021 00000 N 000000002751 00000 N 0000000000 00001 F 000000000000 00000 F 0000002915 00000 N 0000002955 00000 N 0 27 Diese Zahlen bedeuten Folgendes:

  • 0 - die erste Objektnummer in der Tabelle
  • 27 - Anzahl der Tabellenelemente

Das erste Element einer Tabelle sieht immer so aus: " XXXXXXXXXX 65535 f" wobei X eine Ziffer ist und 65535 der Standardwert für das erste Element in der Tabelle ist. Das Zeichen "f" steht für " kostenlos", das heißt, das Objekt wird nicht verwendet

Analysieren wir das Element dieser Tabelle.

  • Die ersten 10 Ziffern sind der Abstand vom Anfang der Datei zum Anfang des Objekts.
  • 0000000016 bedeutet, dass Sie nach 16 Bytes vom Anfang der Datei mit der ersten Erwähnung des Objekts begrüßt werden, also beispielsweise 40 Obj

Die zweiten fünf Ziffern sind die Dateigenerationsnummer. Wenn die Datei gerade erstellt wurde, sind sie immer Null. Wenn die Datei geändert wird, wird diese Zahl um eins erhöht. Also, 0000000024 00001f

Die kanonische, neu erstellte PDF-Datei hat nur eine Tabelle. Wenn die Datei jedoch bearbeitet wird, können viele solcher Tabellen vorhanden sein.

Die Verknüpfung von Tabellen erfolgt über das letzte Element und Codewort startxref

Die kanonische, neu erstellte PDF-Datei hat nur eine Tabelle, nach der Tabelle kommt das Element Anhänger Und nach dem Trailer kommt das Codewort startxref, die den Versatz vom Anfang der Datei zum Anfang der Tabelle angibt, hier ein Beispiel. trailer > startxref 173 %%EOF Dies bedeutet, dass nach 173 Bytes vom Anfang des Dokuments das Codewort vorhanden sein wird XRef. Wenn die Datei jedoch bearbeitet wurde, sieht der letzte Trailer in der Datei so aus: xref 0 3 0000000000 65535 f 0000003609 00000 n 0000003832 00000 n Trailer ] >> startxref 173 %%EOF Aber wenn wir uns der Tabelle zuwenden, wo die Verknüpfungspunkte startxref 173, dann finden wir die nächste Tabelle, gefolgt von einem Trailer, der ein Feld haben wird /Zurück 3896 3 16 0000000016 00000 n 0000000664 00000 n 0000000936 00000 n 0000001106 00000 n 0000001133 00000 n 0000001250 00000 n 0000001395 00000 n 0000001811 00000 n 0000001992 00000 n 0000002180 00000 n 0000002360 00000 n 0000002760 00000 n 0000003438 00000 n 0000003516 00000 n 0000000776 00000 n 0000000916 00000 n Trailer ] >> startxref 567 %%EOF

Dieses Feld /Zurück 3896 verweist uns auf die vorherige Tabelle und den Link startxref 567 zeigt auf die nächste Tabelle und so weiter bis fast ins Unendliche, bis ins nächste Feld startxref wir werden es nicht sehen 0 . Das heißt, wir haben alle Tabellen gelesen.

In diesem Aufsatz gibt es natürlich nicht genug Quellcode. Hier ist es: zwei Module des Hauptteils " PDFDokument"und Hilfskraft" PDFBaseFonts"

Dem Material sind folgende Dateien beigefügt:

Diskussion des Materials[ 31-07-2006 06:33 ] 7 Beiträge

Eigenschaften der Komponente, erklärt von den Entwicklern:

  • Unterstützung für Vektor- und Bitmap-Grafiken in PDF-Dokumenten
  • PDF-Dokumente mit Passwort schützen
  • Unterstützung für AcroForms/PDF-Formulare
  • Wasserzeichen
  • Generation PDF-Dokumente mit internen und externen Links, Weblinks und Lesezeichen
  • Volle Unicode-Unterstützung
  • Unterstützung für verschiedene Schriftarten, Textformatierung, Textlayout in mehreren Spalten
  • TCanvas-Unterstützung
  • Eingebauter Archivierer zum Komprimieren von Text und grafische Informationen im Dokument
  • Konvertieren Sie TIFF in PDF

Als Beispiel habe ich mich entschieden, eine Demoanwendung zu erstellen, die mit der Komponente gebündelt geliefert wird THotPDF. Die Anwendung ist ganz einfach – sie erzeugt ein PDF mit zwei Links und Klartext. Der Code ist auch einfach und klar:

Prozedur TForm1. HelloWorldButtonClick (Sender: TObject ) ; Starten Sie HPDF. BeginDoc ; HPDF. Aktuelle Seite. PrintHyperlink (20 , 35 , "Website: " + MainEdit. Text , MainEdit. Text ) ; HPDF. Aktuelle Seite. SetFont( "Times New Roman" , , 16 ) ; HPDF. Aktuelle Seite. SetRGBHyperlinkColor(clRed) ; HPDF. Aktuelle Seite. PrintHyperlink (20 , 50 , "Bestellseite: " + BuyEdit. Text , BuyEdit. Text ) ; HPDF. Aktuelle Seite. SetFont( "Times New Roman" , , 14 ) ; HPDF. Aktuelle Seite. TextOut(20 , 75 , 0 , "Zum Navigieren auf den Link klicken" ) ; HPDF. EndDoc ; Ende ;

Auch ohne auf die Einzelheiten der Funktionsweise der Komponente einzugehen, können Sie verstehen, was und wie in dieser Demo passiert. Fangen wir an, schauen Sie sich an Aussehen generiertes Dokument:

Diese beiden blauen Rechtecke im Dokument sind Links zu zwei Seiten ... und der einfache Text „Klicken Sie auf den Link, um zu navigieren“ ist überhaupt nicht zu sehen. Obwohl wir Tribut zollen müssen, öffnet sich der Link wirklich, wenn Sie auf das Rechteck klicken. Im Allgemeinen hatten es die Entwickler entweder eilig, die Unterstützung für Delphi bis XE3 zu erklären, oder die Testversion funktioniert so interessant, aber nachdem ich diese Demo ausgeführt hatte, verlor ich irgendwie die Lust, THotPDF sogar kostenlos zu verwenden. Wir fahren fort.

4. PDF Creator-Pilotprojekt

Preis: von 450 $ ohne Quellen bis 9950 $ (!!!) mit Quellen
5-XE4
http://www.colorpilot.com/pdflibrary.html#download

Die Bibliothek kostet fast so viel wie Delphi XE3 Professional ... Nun gut, mal sehen, was diese Bibliothek ist.

Von den Entwicklern angekündigte Funktionen:

  • Erweiterter Satz von Methoden und Eigenschaften für eine einfache PDF-Erstellung;
  • Lesen und Zusammenführen bestehender PDF-Dokumente;
  • Hinzufügen und Löschen von Seiten eines PDF-Dokuments;
  • Unicode-Unterstützung;
  • Erstellung von Wasserzeichen für jede Seite;
  • Miniaturansichten für ein PDF-Dokument hinzufügen;
  • Verwenden und Einbetten von Schriftarten (TrueType, OpenType, Type1 usw.);
  • Erstellen Sie interaktive PDF-Dokumente mit JavaScript und Hyperlinks;
  • Unterstützung für interaktive AcroForm-Elemente: Texteingabefelder, Schaltflächen, Optionsschaltflächen, Dropdown-Listen, Kontrollkästchen;
  • Verschlüsselung und Passwortschutz erstellter PDF-Dokumente;
  • Erstellung und Verwaltung von Dokumenteninhalten;
  • Zugriff auf HDC zum Zeichnen auf PDF-Seiten mit WinAPI-Funktionen.
  • Verwendung von Bildern in verschiedenen Formaten (JPEG, TIFF, PNG, BMP, GIF);
  • Erstellen und Verwenden von Anmerkungen;
  • Erstellen Sie PDF-Dokumente auf der Festplatte oder im Speicher;
  • Text aus PDF-Dokumenten extrahieren;

Alles in allem eine ziemlich beeindruckende Liste von Funktionen. Mal sehen, wie einige dieser Funktionen in der Praxis funktionieren. Demoversion herunterladen und installieren.

Starten Sie nach der Installation Delphi (in meinem Fall ist es Delphi XE3) und gehen Sie zum Menü:

Komponente - Komponente importieren - Typbibliothek importieren

Suche nach einer Bibliothek in der Liste

Importieren, erstellen neues Projekt und verbinden Sie das Uses-Modul PDFCreatorPilotLib_TLB.

Jetzt können wir die Bibliothek an einem Live-Beispiel testen. Versuchen wir zunächst, ein Dokument mit reinem Text zu generieren:

Prozedur TForm1. Button1Click (Sender: TObject ) ; var fnt: ganze Zahl ; begin ( Initialisierung ) PDF := TPDFDocument4. Erstellen (null); Pdf. SetLicenseData("demo" , "demo" ) ; fnt := pdf. AddFont("Verdana" , false , false , false , false , fcANSI) ; Pdf. UseFont(fnt, 14) ; Pdf. ShowTextAt(20 , 40 , "HALLO, PDF!" ) ; (Speichern) PDF. SaveToFile("HelloPDF" , true ) ; Pdf. Zerstören ; Ende ;

Wir starten die Anwendung und sehen uns das erstellte PDF-Dokument an:

Versuchen wir nun, russischen Text in eine Datei zu schreiben:

Prozedur TForm1. Button1Click (Sender: TObject ) ; begin ( Initialisierung ) (...) PDF. ShowTextAt(20 , 40 , "Hallo PDF!" ) ; ( speichern ) (...) Ende ;


Vielleicht müssen Sie irgendwo in den Klasseneigenschaften etwas einrichten, eine Methode aufrufen, die die Unicode-Unterstützung einschaltet, ABER für solche Omas hätte ich gerne eine Bibliothek, die sofort ohne Probleme mit Einstellungen und Optimierungen funktioniert. .. Übrigens funktionierte auch die Methode zum Einfügen eines Links (AddHyperLink) nicht - das Dokument blieb trotz angeblich eingefügtem Link makellos. Aber, wir müssen Tribut zollen, ein Versuch, ein zuvor erstelltes PDF in ein neues Dokument einzufügen, funktionierte mit einem Paukenschlag - das Dokument wurde auf einer neuen Seite eingefügt, wie es sollte, ohne Pfosten.

5. PDFtoolkit VCL v4.0.1.293

Preis: von 349 $ ohne Quellen bis 499 $ mit Quellen
Unterstützte Versionen von Delphi: 6-XE4
Seite zum Herunterladen der Testversion: http://www.gnostice.com/PDFtoolkit_VCL.asp?show=downloads

Diese Komponentenbibliothek von Gnostice hat im Internet viele positive Bewertungen erhalten.

Chancen PDF-Toolkit praktisch 1 in 1 entspricht PDF Creator-Pilot, diese. weiß, wie man PDFs „klebt“, Text erkennt, Links einfügt, Dokumente durchsucht etc. Aber im Gegensatz zu PDF Creator Pilot PDFtoolkit wenn gtPDFDocument1. IsLoaded starten Sie dann gtPDFDocument1. textout( "Hallo, Frieden!" , IntToStr(gtPDFDocument1. PageCount ) , //Seitenbereich, in den der Text eingefügt wird gtPDFDokument1. GetPageSize(gtPDFDocument1. PageCount , muPixels) . Breite / 2 // Text in der Mitte der Seite einfügen gtPDFDokument1. GetPagesize(gtPDFDocument1.PageCount , muPixels) . Höhe / 2 ); (Dokument speichern) gtPDFDokument1. SaveToFile("modified_doc.pdf" ); Ende ; schließlich gtPDFDocument1. freies Ende;

Natürlich erweist sich PDFtoolkit in Bezug auf meine Aufgabe als praktisch nutzlos, weil. Ich bin daran interessiert, PDFs von Grund auf neu zu erstellen, aber für diejenigen, die ihren eigenen PDF-Viewer schreiben, sollte diese Bibliothek meiner Meinung nach mehr als geeignet sein.

Also, was haben wir am Ende. Es gibt 5 verschiedene Lösungen zum Erstellen und Arbeiten mit PDF-Dokumenten in Delphi. Jede Lösung hat sowohl ihre Vorteile (kostenlos, "ausgetrickst") als auch ihre Nachteile (Pferdekosten, Probleme mit Unicode usw.). In Bezug auf meine Aufgabe müssen alle Lösungen „mit einer Datei arbeiten“. Auf der anderen Seite gibt es viele bezahlte und kostenlose Dienstleistungen für die PDF-Generierung, aber wenn man bedenkt, dass solche Dienste dazu neigen, plötzlich zu nehmen und zu sterben, fühlt es sich irgendwie nicht an, sie zu kontaktieren. Es gibt natürlich noch eine Lösung - selbstgeschrieben und nicht ganz im Delphi-Thema, aber dazu ein andermal mehr, aber jetzt überlege ich erstmal, was ich mit dem Client für DelphiFeeds mache


Wir sehen uns im Internet!

Fortsetzung des Themas:
Router

Guten Tag, mysteriöser Wanderer! Ich hoffe, Sie wissen, dass das Windows-Betriebssystem eine große Anzahl nützlicher Funktionen enthält. Im heutigen Artikel...