Wie weit sich ein mitgeliefertes PDF entpacken darf

Legen Sie fest, wie weit sich ein Stream eines gesendeten PDF entpacken darf, sodass eine Datei, die die Maschine füllen soll, vorher abgelehnt wird.

In einem echten PDF ansehen

Ein erhaltener und ergänzter Vertrag, ohne dass sich ein Byte verschoben hat

Ein Wartungsvertrag, den jemand anderes geschickt hat, mit einem Unterschriftsbereich, einem Datum und einer eigenen Zeile über seiner letzten Seite, einem danach angefügten Anhang und einer leeren Unterschriftsstelle über dem Unterschriftsbereich, wobei jedes Byte des Vertrags an seinem Platz bleibt.

Das PDF öffnen Das vollständige Beispiel ansehen

Zusammenfassung

Wenn Sie ein PDF mitsenden — einen Briefkopf, auf den gedruckt werden soll, oder eine zu platzierende Seite —, ist diese Datei komprimiert, wie ein ZIP-Ordner. Eine komprimierte Datei lässt sich so bauen, dass ein sehr kleines Paket sich zu etwas Riesigem entpackt, und ein Programm, das sie ungeprüft entpackt, füllt die Maschine und hält an. Erhöhen Sie die Obergrenze, bis zu einem Gibibyte, wenn Sie wissentlich sehr große Seiten senden; senken Sie sie, wenn Sie Dateien von Unbekannten annehmen.

Technisch

Auf der obersten Ebene einer Anfrage geschrieben, unter "supplied_pdfs"

supplied_pdfs legt fest, wie die mit der Anfrage gelieferten PDFs gelesen werden: die Vorlagen, auf die die Seiten gestempelt werden, die Seiten, die die Elemente platzieren, und die source, mit der das Dokument beginnt. expansion_limit ist die Obergrenze, auf die ein Stream einer solchen Datei dekomprimiert werden darf. Die Prüfung erfolgt, bevor Speicher belegt wird, nicht danach: Eine Datei mit einem Stream, der mehr verlangt, wird sofort abgelehnt, sodass ein kleines Paket, das darauf ausgelegt ist, sich auf Gigabytes zu entpacken, nie die Gelegenheit dazu bekommt. Fehlt expansion_limit, gilt die Obergrenze, die die Bibliothek beim Lesen einer Datei anwendet. add_to nennt eine dieser Dateien als das Dokument, dem die erzeugten Seiten hinzugefügt werden, in einem Abschnitt, der hinter seinem letzten Byte angehängt wird.

Anfrageschema

  • supplied_pdfs — Objekt, optional.
  • supplied_pdfs.expansion_limit — Ganzzahl, optional, eine Anzahl Bytes, höchstens 1 073 741 824. Die maximale Größe, auf die ein Stream eines mitgelieferten PDF dekomprimiert werden darf. Fehlt sie, gilt die eigene Obergrenze der Bibliothek, 268 435 456. Eine Anfrage, die mehr als das Maximum nennt, wird mit 400 abgelehnt, und es wird kein PDF gelesen.
  • supplied_pdfs.add_to — Objekt, optional. Das mitgelieferte PDF, dem die erzeugten Seiten hinzugefügt werden, statt als eigenes Dokument zurückgegeben zu werden. Die Antwort ist diese Datei, jedes Byte an seinem Platz, gefolgt von einem Abschnitt mit dem Hinzugefügten: Eine bereits enthaltene Signatur deckt weiterhin ab, was sie abgedeckt hat, und eine Anzeigesoftware, die die früheren Versionen der Datei zeigt, zeigt weiterhin die, die angekommen ist.
  • supplied_pdfs.add_to.pdf — Zeichenkette, erforderlich. Der Name des Teils, der das PDF enthält.
  • supplied_pdfs.add_to.over — Array von ab eins gezählten Ganzzahlen, optional, standardmäßig leer. Für die ersten erzeugten Seiten der Reihe nach die Seite des mitgelieferten PDF, über die jede gelegt wird, ab der linken unteren Ecke ihres Blattes. Jede weitere erzeugte Seite wird nach der letzten Seite des mitgelieferten PDF angefügt, in der Reihenfolge, in der die Erzeugung sie hervorgebracht hat.
  • Ein signature_field neben add_to wird der Seite hinzugefügt, auf der seine erzeugte Seite landet, mit dieser Seite auf das Blatt verschoben, über das sie gezeichnet wird, jedes in einem eigenen Abschnitt nach dem, der die Seiten enthält. Es enthält keine Signatur: Der Dienst signiert nicht. Signiert wird später, von dem, der die Antwort erhält, in einem danach angefügten Abschnitt.
  • Ein signature_field neben add_to nennt eine einzige Seite in pages, es sei denn, die Erzeugung ergibt eine Seite. Eines, das auf mehr als einer erzeugten Seite landet oder wie ein anderes benannt ist, wird mit einem 400 abgelehnt, das dies angibt.
  • Mit 400 abgelehnt neben add_to: eine Anfrage, die außerdem bookmarks, metadata, archive, protection, structure, Ebenen, Links oder andere Formularfelder als ein signature_field verlangt; ein signature_field, das wie ein Feld benannt ist, das das Formular des mitgelieferten PDF bereits enthält, eines, das andere Felder locks, und eines, das bei einem Ereignis etwas auslöst; ein Name, für den kein Teil mitgeliefert wurde; eine zu überzeichnende Seite hinter der letzten des mitgelieferten PDF; ein mitgeliefertes PDF, das geschützt ist oder dessen Querverweistabelle sich nicht verfolgen lässt; und ein over, das mehr Seiten nennt, als die Erzeugung hervorgebracht hat. Das Ergänzen eines mitgelieferten PDF erfordert einen Lizenzschlüssel: Ein Evaluierungsserver antwortet mit 402.

Geltungsbereich: jedes PDF, das die Anfrage mitliefert, ob es als Vorlage gestempelt oder platziert wird. Es legt nichts über das geschriebene Dokument fest, nur über die gelesenen Dateien.

Eine vollständige Anfrage, die ein PDF erzeugt

{
  "supplied_pdfs": { "expansion_limit": 33554432 },
  "standard_fonts": [{ "name": "sans", "face": "helvetica" }],
  "items": [
    {
      "type": "pdf_page",
      "pdf": "letterhead",
      "page": 1,
      "rect": { "llx": 0, "lly": 0, "urx": 595.276, "ury": 841.89 }
    },
    {
      "type": "text",
      "rect": { "llx": 72, "lly": 700, "urx": 523, "ury": 740 },
      "content": ["Written over the sheet that was supplied"],
      "font": "sans",
      "font_size": 12
    }
  ]
}

Die Zeile, die es sendet, in drei Sprachen

Das Blatt und was darunter gelegt wird

Die Größe der Seiten Ein eigenes Format für bestimmte Seiten Die Einheit, in der eine Seite gemessen wird Wo das Blatt einer Seite in der Zeichnung sitzt Die Bereiche, die eine Seite angibt Die Formen, die eine Seite über das Gezeichnete legt Wie herum eine Seite gezeigt wird Wie eine Seite erscheint und wie lange sie stehen bleibt Ein mitgesendetes PDF als Seiten des Dokuments Die Vorlage unter den Seiten Ein über eine Reihe von Seiten gelegtes Wasserzeichen Benannte Bereiche, die eine Seite zum Füllen markiert

Wohin als Nächstes

Jeder JSON-Schlüssel einer Anfrage, auf einer Seite Die übrigen einundvierzig Einstellungen einer Anfrage

Die Preise ansehen Die Beispiele ansehen