Wie PDF aus Delphi / C++Builder / Lazarus erstellen

Sehr oft benötigen Sie ein PDF-Dokument aus einer Pascal-Anwendung - sei es Delphi oder Lazarus.
Normalerweise wird empfohlen, spezielle Lösungen, einen Konverter in PDF zu verwenden (itext, Synopse PDF Engine, PowerPDF, HotPDF, PDF Creator Pilot, PDFtoolkit VCL, Debenu Quick PDF Library usw.). Wir werden ihre Vor- und Nachteile in diesem Artikel nicht berücksichtigen.
Plötzlich stellte sich für uns heraus, dass die Funktionen von FastReport VCL für die Ausgabe in PDF in Delphi trotz des Fehlens der PDF-Phrase im Produktnamen viele Anforderungen von Programmierern abdecken! Und viele unserer Kunden verwenden NUR FastReport-Funktionen, um PDF zu empfangen!
Zuallererst können Sie also jeden Bericht so komplex senden, wie Sie möchten, als PDF! Lass es uns versuchen!

Die neue VCL App in Delphi erstellen

Wir fügen TfrxReport, TfrxPDFExport und TButton Komponenten von FastReport Tab auf die Form hunzu.
application form Delphi / Lazarus for saving PDF
Wir machen weiter einen Dopple-Click auf TfrxReport und betreten FR Designer. Weiter Neuen Report erstellen (File -> New report). Und wir fügen TfrxMemoView mit den Text “Test text” auf MasterData1 hinzu.
Visual PDF designer in Delphi / Lazarus
Wir bestimmen MasterData1.RowCount = 200 (um die Linie 200 Mal zu wiederzuholen und einen Report mit 3-4 Seiten zu generieren, weil unser Beispiel keine Dataset hat) verlassen deb Designer und schreiben folgenden Code Stück für OnClick Handler für Button1:

1
2
3
4
5
6
7
procedure TForm1.Button1Click(Sender: TObject);
begin
 {Report Erstellung. Der Report soll vor dem Export erstellt werden}
 if frxReport1.PrepareReport then
 frxReport1.ShowPreparedReport; 
 {Anzeige der Vorschaufenster}
end;

Tatsächlich reicht dieser Code für umfassende Arbeiten, das Erstellen eines Berichts und das Exportieren in PDF aus. Erstellen Sie nun ein Dokument von beliebiger Komplexität in der Entwurfszeit (Sie können beliebige Datenquellen verbinden und die Informationen von dort abrufen) - Tabellen, Listen, Abbildungen, Karten, QR-Codes -, um sicherzustellen, dass Sie dem Projekt zuerst die entsprechenden Komponenten hinzufügen ( Andernfalls sind sie zur Laufzeit nicht vorhanden.) Zusammengesetzte und mehrseitige Dokumente mit Ankern, Inline-Links und einem Inhaltsverzeichnis - alles, was Sie benötigen und jede Größe - eine einseitige Quittung, ein einseitiger Katalog, ein Jahresbericht von Bewegungen des Fabrikpersonals auf Tausenden von Seiten.

Und vergessen Sie nicht, die PDF-Exportkomponente in unser Projekt aufzunehmen! Starten Sie und klicken Sie auf die einzige Schaltfläche im Formular.
Wir können das Vorschaufenster und die Schaltfläche In PDF exportieren sehen.

Save to PDF button in Preview

Also, wir speichern die PDF Datei aus unserer Delphi App!

Klicken Sie auf die Schaltfläche - rufen Sie den Export aus der Vorschau unten auf. Ich zeige Ihnen, wie Sie dies alles aus dem Code heraus tun können. Klicken Sie einfach auf den Link - senden Sie ihn aus dem Code an PDF. Sofort sehen wir den resultierenden PDF-Einstellungsdialog.

Settings of saving to PDF

Wie Sie sehen können, wird jeder professionelle PDF-Konverter um eine solche Reihe von Optionen beneiden! Wir können auswählen, welche Seiten unseres Dokuments an PDF gesendet werden sollen, welche PDF-Version verwendet werden soll. Durch Komprimierung wird die Größe der resultierenden Datei verringert. Durch das Einbetten von Schriftarten kann das Erscheinungsbild des Dokuments auf Geräten von Drittanbietern gespeichert werden. Wir können wählen, ob der Hintergrund an das PDF-Dokument angehängt werden soll. Unser PDF kann auch für den Druck (Bildqualität ist besser, aber größer) oder nur für die Präsentation auf dem Bildschirm optimiert werden. Wir können festlegen, ob das resultierende PDF ein externes Inhaltsverzeichnis wie im Originalbericht enthält (ich habe es in meinem Beispiel nicht, daher kann es nicht ausgewählt werden), Transparenz und Komprimierungsrate von Bitmap-Bildern. Übrigens ist eines der wichtigen Merkmale von FastReport VCL 6.6, dass Vektorbilder eine Vektorform in einer PDF-Datei bleiben, mit anderen Worten - verlustfrei, und dies macht sich insbesondere bei 2D-Barcodes und Karten bemerkbar. Ein weiteres Merkmal - der gesamte Text, einschließlich RTF, wird beim Speichern in PDF vektorisiert, d. H. Die Qualität geht nicht verloren, während die Möglichkeit erhalten bleibt, einen Textabschnitt aus PDF zu kopieren (es sei denn, Sie verbieten die entsprechende Option, die ich unten erwähnen werde).

PDF/A-1a, PDF/A-1b, PDF/A-2b, PDF/A-2a, PDF/A-3a, PDF/A-3b standard selection

Speichern an: wohin genau senden wir unser PDF (lokale Datei oder E-Mail oder Clouds). Nach dem Export öffnen - Die resultierende Datei wird sofort nach dem Export vom PDF-Viewer geöffnet, der standardmäßig dem Betriebssystem zugewiesen ist (z. B. Adobe Acrobat Reader).

Sie können das generierte Dokument in Archivformaten wie PDF / A-1a, PDF / A-1b, PDF / A-2a, PDF / A-2b, PDF / A-3a, PDF / A-3b exportieren Entwickelt, um Dokumente in elektronischer Form unverändert zu lassen. Beispielsweise werden Schriftarten, Bilder und Objekte von Drittanbietern, die in einem Dokument vorhanden sind, in diesem Standard automatisch in das Dokument eingebettet. Sehr oft wird einer dieser Standards für das elektronische Dokumentenmanagement in großen Organisationen verwendet. Übrigens können Sie hier etwas mehr über den Unterschied zwischen PDF und PDF / A lesen.

 

Version selection PDF 1.4, PDF 1.5, PDF 1.6, PDF 1.7

Das nicht archivierte PDF-Format verfügt auch über mehrere Versionen (und Sie können auswählen, welche gespeichert werden soll).

Service information setting of PDF-document

Serviceinformationen, die auch in eine PDF-Datei aufgenommen werden: Titel, Autor, Betreff, Schlüsselwörter (Sie können PDF-Dateien ins Web hochladen, sie werden perfekt indiziert), PDF-Authoring-Tool, Dokumentproduzent.

PDF security settings

Sicherheit - Schutz des Dokuments vor dem Öffnen mithilfe eines Kennworts (mithilfe der RC4-Verschlüsselung).
Die Möglichkeit, das Drucken und Ändern eines Dokuments, das Kopieren von Text und Grafiken sowie das Hinzufügen oder Ändern von Textnotizen zu verbieten.

Settings of Delphi PDF on preview open

Einrichten des PDF-Viewers beim Öffnen des Dokuments:
Symbolleiste ausblenden, Menüleiste ausblenden, Benutzeroberfläche des Fensters ausblenden, Fenster anpassen, Fenster in der Mitte, Skalierung drucken. Normalerweise verwende ich beim Exportieren die standardmäßig festgelegten Parameter, aber diesmal habe ich alle Parameter überprüft.

Wenn wir oder unsere Benutzer diese visuelle Vielfalt nicht benötigen, können wir dies sofort tun

Export zu PDF aus Delphi oder Lazarus Code

saving to PDF from Delphi with PDF parameters
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
procedure TForm1.Button1Click(Sender: TObject);
begin
{Generieren Sie einen Bericht. Der Bericht muss vor dem Export generiert werden}
frxReport1.PrepareReport();
{Legen Sie den Bereich der zu exportierenden Seiten fest. Standardmäßig werden alle Seiten des generierten Berichts exportiert.}
frxPDFExport1.PageNumbers := '2-3';
{Einstellen des PDF-Standards
 TPDFStandard = (psNone, psPDFA_1a, psPDFA_1b, psPDFA_2a, psPDFA_2b, psPDFA_3a, psPDFA_3b);
Es ist erforderlich, das Modul frxExportPDFHelpers in die Verwendungsliste aufzunehmen:
verwendet frxExportPDFHelpers;}
frxPDFExport1.PDFStandard := psNone;
{Sie können die PDF-Standardversion für PDFStandard = psNone einstellen
TPDFVersion = (pv14, pv15, pv16, pv17);
Es ist erforderlich, das Modul frxExportPDFHelpers in die Verwendungsliste aufzunehmen:
verwendet frxExportPDFHelpers;}
frxPDFExport1.PDFVersion := pv17;
{Um eine kleinere Dateigröße zu erhalten, können Sie die Komprimierung einstellen}
frxPDFExport1.Compressed := True;
{Legen Sie fest, ob Schriftarten in das resultierende Dokument eingebettet werden sollen.
  Das Einbetten von Schriftarten erhöht die Größe des resultierenden Dokuments erheblich}
frxPDFExport1.EmbeddedFonts := False;
{Einstellen, ob das Hintergrundbild exportiert werden soll}
frxPDFExport1.Background := True;
{Deaktivieren Sie den Export von Objekten mit Optimierung für den Druck. 
Bei aktivierter Option sind die Bilder qualitativ hochwertig, aber 9-mal größer im Volumen}
frxPDFExport1.PrintOptimized := False;
{Legen Sie fest, ob die resultierende PDF-Datei ein externes Inhaltsverzeichnis enthalten soll, wie im Originalbericht}
frxPDFExport1.Outline := False;
{Einstellen, ob Bilder mit Transparenz exportiert werden sollen}
frxPDFExport1.Transparency := True;
{Sie können die gewünschte DPI der Bilder einstellen. Wenn Sie diese Option aktivieren, wird die Option SaveOriginalImages deaktiviert, mit der Sie die Bilder in ihrer Originalform}
 frxPDFExport1.PictureDPI := 150;
 {Einstellen des Kompressionsverhältnisses von Bitmap-Bildern}
 frxPDFExport1.Quality := 95;
 {Einstellen, ob die Ergebnisdatei nach dem Export geöffnet werden soll}
 frxPDFExport1.OpenAfterExport := False;
 {Einstellen, ob der Exportfortschritt angezeigt werden soll
  (anzeigen, welche Seite gerade exportiert wird)}
 frxPDFExport1.ShowProgress := False;
 {Einstellen, ob ein Dialogfeld mit Exportfiltereinstellungen angezeigt werden soll}
 frxPDFExport1.ShowDialog := False;
{Legen Sie den Namen der resultierenden Datei fest. Bitte beachten Sie, dass, wenn Sie den Dateinamen nicht festlegen und das Dialogfeld "Export Filter-Dialogfeld deaktivieren, wird der Dialog zur Auswahl des Dateinamens weiterhin angezeigt}
frxPDFExport1.FileName := 'C:\Output\test.pdf';
{Füllen Sie die entsprechenden Felder der Registerkarte Information aus}
frxPDFExport1.Title := 'Your Title';
frxPDFExport1.Author := 'Your Name';
 frxPDFExport1.Subject := 'Your Subject';
 frxPDFExport1.Keywords := 'Your Keywords';
 frxPDFExport1.Creator := 'Creator Name';
 frxPDFExport1.Producer := 'Producer Name';
 {Füllen Sie die entsprechenden Felder auf der Registerkarte Sicherheit aus}
 frxPDFExport1.UserPassword := 'User Password';
 frxPDFExport1.OwnerPassword := 'Owner Password';
 frxPDFExport1.ProtectionFlags := [ePrint, eModify, eCopy, eAnnot];
 {Legen Sie die Viewer-Einstellungen fest (Registerkarte Viewer)}
 frxPDFExport1.HideToolbar := False;
 frxPDFExport1.HideMenubar := False;
 frxPDFExport1.HideWindowUI := False;
 frxPDFExport1.FitWindow := False;
 frxPDFExport1.CenterWindow := False;
 frxPDFExport1.PrintScaling := False;
 {Exportieren Sie den Bericht}
 frxReport1.Export(frxPDFExport1);
end;

Los geht's - benutze es! Hier werden die Funktionen und Aufnahmeoptionen von Lazarus und Delphi bis PDF FastReport VCL Version 6.6 betrachtet. Die Kosten einer Lizenz sind vergleichbar (und oftmals niedriger) mit dem monatlichen Gehalt eines Entwicklers, während nur die Optionen zum Einrichten und Speichern in verschiedenen PDF-Versionen mindestens den Arbeitsmonaten eines Entwicklers mit hohen Qualifikationen entsprechen Kenntnis der Feinheiten verschiedener PDF-Dialekte.

Übrigens können Sie zum Spaß sogar die Qualität der PDF-Konvertierung in unseren Demo-Berichten oder in Ihren eigenen überprüfen. Wir überprüfen und testen sie ständig auf Übereinstimmung mit den PDF-Standards (es gibt spezielle Validatoren, aber gleichzeitig garantiert die Validierungspassage nicht immer die Übereinstimmung dessen, was Sie sehen und was gedruckt wird, wir haben all diese individuellen Geschichten darüber). Wissen Sie zum Beispiel, wie schön Illustrationen in Ihrem PDF sein werden? Lesen Sie hier mehr: https://www.fast-report.com/en/blog/200/show/.

Fast Reports
  • 800-985-8986 (Englisch, die USA)
  • +4930568373928 (Deutsch)
  • +55 19 98147-8148 (Portugiesisch)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314

© 1998-2024 Fast Reports Inc.
Trustpilot