PDF Filler ist ein RESTful-Dienst (API), der das Ausfüllen vorhandener PDF-basierter Formulare unterstützt und Webentwicklern die Verwendung browserbasierter Formulare und moderner Webstandards ermöglicht, um die Informationserfassung zu erleichtern.
PDF Filler funktioniert mit praktisch jedem unverschlüsselten PDF und unterstützt sowohl ausfüllbare (z. B. PDFs mit vordefinierten Eingabefeldern) als auch nicht ausfüllbare (z. B. gescannte PDFs) Formulare. Übergeben Sie einfach die URL an ein öffentlich gehostetes PDF. PDF Filler kann sogar automatisch das Markup erstellen, das zum Einbetten eines HTML-Formulars in eine vorhandene Webseite erforderlich ist.
Das Projekt abstrahiert die Formularfülllogik von pdftk und prawn.
PDF Filler akzeptiert ein Schlüssel => Wertpaar aus Feldnamen und -werten. Bei diesen Feldern kann es sich entweder um ausfüllbare PDF-Formularfelder oder um eine beliebige x/y-Koordinate eines nicht ausfüllbaren Feldes handeln. Bei ausfüllbaren PDFs sollte der Schlüssel den Feldnamen darstellen. In nicht ausfüllbaren PDFs sollte der Schlüssel die Feldkoordinaten wie unten beschrieben darstellen (z. B. 100,100
). In beiden Fällen sollte der Feldwert die Benutzereingabe für das angegebene Feld enthalten.
Feldnamen können lokal mit dem Open-Source-PDF-Dienstprogramm pdftk oder dynamisch mithilfe des Dienstes ermittelt werden.
Um eine Liste aller Felder in einem bestimmten PDF zu erhalten
/fields?pdf={URL to the PDF}
Um eine JSON-Darstellung aller Felder in einer bestimmten PDF-Datei zu erhalten
/fields.json?pdf={URL to the PDF}
Um ein PDF auszufüllen, senden Sie eine POST
Anfrage an /fill
. POST-Daten sollten im Format „key => value“ vorliegen, wobei „key“ für den Feldnamen und „value“ für den Feldwert steht. Stellen Sie sicher, dass Sie den Schlüssel „pdf“ mit der URL der auszufüllenden PDF-Datei übergeben. Der Dienst sendet das ausgefüllte PDF als Download zurück.
Hinweis: Aufgrund der Art und Weise, wie HTML mit Formularen umgeht, werden bestimmte Sonderzeichen wie eckige Klammern nicht ordnungsgemäß an den Dienst gesendet. Wenn das PDF-Feld reservierte Zeichen enthält, codieren Sie einfach den Feldnamen vor dem POSTing per URL.
Um eine generische HTML-Darstellung eines beliebigen ausfüllbaren PDF-Formulars zu erhalten
/form?pdf={URL To PDF}
Nicht ausfüllbare PDFs (z. B. gescannte oder andere PDFs ohne strukturierte Formulare) erfordern die Übergabe von X-, Y-Koordinaten und (optional) einer Seitenzahl. Diese Daten werden unter Verwendung der folgenden Namenskonvention für das Feld übergeben: x,y,page
(oder einfach x,y
), wobei X und Y die Zeigerkoordinaten von der unteren linken Ecke des Dokuments darstellen. Wenn keine Seite angegeben ist, wird die erste Seite angenommen.
Daten können programmgesteuert (z. B. über eine API) oder als webbasiertes Standardformular übermittelt werden. Um beispielsweise ein HTML-Formular zu strukturieren, können Sie wie folgt vorgehen:
< form method =" post " action =" /fill " >
<!-- A standard, fillable field, simply pass the field name -->
< label > First Name: < input type =" text " name =" first_name " /> < label >
<!-- A non-fillable field for which we pass coordinates -->
< label > Last Name: < input type =" text " name =" 100,100,1 " /> < label >
< input type =" submit " value =" Submit " />
</ form >
$ curl -L https://get.rvm.io | bash -s stable --ruby
)gem install bundler
)git clone [email protected]:GSA-OCSIT/pdf-filler.git
und cd
in das Zielverzeichnis (höchstwahrscheinlich pdf-filler
)bundle install
Führen Sie zum Ausführen einfach den Befehl ruby app.rb
aus dem Projektverzeichnis aus. Der Dienst wird standardmäßig auf Port 4567
verfügbar gemacht.
Sie können PDF Filler kostenlos als Webdienst nutzen. Wenn Sie jedoch den Quellcode abrufen und lokal hosten möchten, ist das eigentlich ziemlich einfach.
PDF Filler verwendet pdftk, um das Ausfüllen des Aktionsformulars zu übernehmen. pdftk kann auf den meisten Systemen kostenlos heruntergeladen und installiert werden. Wenn die Installation an einem anderen Ort als /usr/local/bin/pdftk
erfolgt, müssen Sie die Konfiguration unbedingt aktualisieren, indem Sie die Umgebungsvariable PATH_TO_PDFTK
auf den richtigen Pfad setzen.
PDF Filler ist in Ruby geschrieben und verwendet Sinatra, um eine RESTful-API zu generieren
PDF Filler lässt sich einfach als Backend-Dienst auf Ihrem Server bereitstellen. Befolgen Sie die Anweisungen hier: http://www.kalzumeus.com/2010/01/15/deploying-sinatra-on-ubuntu-in-which-i-employ-a-secretary/ als Beispiel für die Bereitstellung und Einrichtung Richten Sie die App als Backend-Dienst auf Ihrem Computer ein. Zu diesem Zweck gibt es eine Datei namens daemon.rb, die Teil der App ist.
Die App ist für das Hosting auf Hosting-Diensten wie Heroku konzipiert. Wenn Sie Heroku verwenden, wählen Sie unbedingt den Build „Bamboo“ (der mit pdftk kompiliert wird) und legen Sie eine Umgebungskonfiguration für PATH_TO_PDFTK
auf /usr/bin/pdftk
fest.
Jeder wird ermutigt, zum Projekt beizutragen, indem er einen Pull-Request forkt und einreicht. (Wenn Sie neu bei GitHub sind, können Sie mit einem grundlegenden Tutorial beginnen.)
Indem Sie zu diesem Projekt beitragen, gewähren Sie allen Benutzern eine weltweite, gebührenfreie, unbefristete, unwiderrufliche, nicht exklusive, übertragbare Lizenz gemäß den Bedingungen der MIT-Lizenz.
Dieses Projekt stellt ein Werk der US-Regierung gemäß 17 USC 105 dar und wird unter den Bedingungen der MIT-Lizenz vertrieben.