AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PDFtk: Formularfelder füllen

Ein Thema von hoika · begonnen am 16. Aug 2023 · letzter Beitrag vom 17. Aug 2023
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#1

PDFtk: Formularfelder füllen

  Alt 16. Aug 2023, 13:24
Hallo,
ich will hier weg von QuickPDF.
Früher hatte ich mal mit PDFtk "gespielt", also

FDF-Datei erzeugen
pdftk.exe 1.pdf generate_fdf output 1.fdf

Die 1.fdf sieht dann etwa so aus:
%FDF-1.2
%âãÏÓ
1 0 obj
<<
/FDF
<<
/Fields [
<<
/V (þÿ)
/T (þÿ N A M E)
>>
<<

Die þÿ stehen wirklich so drin, unter Cmd (type) ist es eine Quadrat.
Mein Kenner heißt aber <NAME>, d.h. die spitzen Klammern sind weg und die Leerzeichen zwischen kommen auch nicht von mir.

Ein
pdftk.exe 1.pdf fill_form 1.fdf output 2.pdf

erzeugt dann zwar die 2.pdf, aber die Felder sind nicht gefüllt.


Ich benutze allerdings eine alte Version von 2011.


Was nun?
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: PDFtk: Formularfelder füllen

  Alt 16. Aug 2023, 15:12
Hallo,

es gibt einen ISO Standard für PDF in mehreren Versionen, der im Netz
abgerufen werden kann.
Mit Hilfe dieser Spezifikationen habe ich mal ein kleines Tool - naja
um ehrlich zu sein, ein manuelles Mini-Projekt gebastelt, das unter
meinen github.com Account gesaugt werden kann.
Es handelt sich hierbei um eine PDF-Datei, die Text anzeigt.
PDF-Test-Projekt

Schau Dir dazu die PDF im Browser und dann mal per Notepad.exe an.
Viel Spaß

In Deinen Fall würde ich sagen, dass das Encoding nicht stimmt.
Zum Beispiel mal UTF-8 als ASCII oder umgedreht beides zusammen als
Datei gespeichert (möglicherweise wegen 2 offene Instanzen des gleichen
Dokuments in unterschiedlichen Programmen).

Grüße
paule32
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
punktl

Registriert seit: 6. Sep 2006
Ort: Dippoldiswalde
8 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: PDFtk: Formularfelder füllen

  Alt 16. Aug 2023, 16:36
Moin,

ich nutze dafür PDFtk 2.02 (von 2014) und da funktioniert das wunderbar.
In Deinem Fall scheint, wie schon vermutet, das Encoding falsch zu sein.
Ich hatte mir damals eine Klasse zum Erzeugen der fdf-Datei geschrieben.

Code:
unit classPDFData;

interface

uses
  Classes,
  SysUtils,
  StdCtrls;

type
  TPDFData = class
    constructor Create();
  private
    sl: TStringList;
    fFileName: string;
  protected
    procedure WriteHeader;
    procedure WriteFooter;
  public
    property FileName: string read fFileName write fFileName;
    procedure AddField(FieldName: string; FieldValue: string);
    function SaveFile(): Boolean;
  end;

implementation

{ TPDFData }

procedure TPDFData.AddField(FieldName, FieldValue: string);
begin
  sl.Add('<</T(' + FieldName + ')/V(' + FieldValue + ')>>');
end;

constructor TPDFData.Create();
begin
  fFileName := '';
  sl := TStringList.Create;
  WriteHeader;
end;

function TPDFData.SaveFile: Boolean;
begin
  Result := False;
  if fFileName > '' then
  begin
    WriteFooter;
    try
      if FileExists(fFileName) then
        DeleteFile(fFileName);
      sl.SaveToFile(fFileName);
      Result := True;
    finally
      sl.Clear;
    end;
  end;
end;

procedure TPDFData.WriteFooter;
begin
  sl.Add(']');
  sl.Add('>>');
  sl.Add('>>');
  sl.Add('endobj');
  sl.Add('trailer');
  sl.Add('<</Root 1 0 R>>');
  sl.Add('%%EOF');
end;

procedure TPDFData.WriteHeader;
begin
  sl.Add('%FDF-1.2');
  sl.Add('1 0 obj');
  sl.Add('<</FDF<</Fields[');
end;

end.
Vielleicht hilft es Dir.

Peter
Peter
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: PDFtk: Formularfelder füllen

  Alt 16. Aug 2023, 18:23
Hm,
Encoding, hm.
Ich lasse mir ja die FDF von PDFtk erzeugen.
Und schon da steht dieses komische Zeichen drin.
Vielleicht ist mein Version wirklich zu alt.

Die Kennerersetzung per QuickPDF klappt ja,
dann sollte die PDF doch in Ordnung sein?

Mal schauen.

Danke
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#5

AW: PDFtk: Formularfelder füllen

  Alt 17. Aug 2023, 00:01
Das ist ein Unicode-BOM,
um zu sagen, dass die einzelnen Bezeichner/Texte UTF-16 sind.

Wusste garnicht, dass es dort erlaubt ist.



Also wie immer:
Wer eine Binär-Datei als Text behandelt, hat es nicht anders verdient, wenn er/sie/es dafür eine gewischt bekommt und es schön knallt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: PDFtk: Formularfelder füllen

  Alt 17. Aug 2023, 09:32
Ich hab die "aktuelle" 2.02 von PDFtk server installiert und da wird in das FDF File keine Unicode-BOM reingeschrieben.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz