Zum Hauptinhalt springen

Pipedream

Die Formfeed-Komponenten für Pipedream sind gebaut und warten darauf, dass Pipedream die App in seine Registry aufnimmt; bis Pipedream sie aufgenommen hat, lassen sie sich in Pipedream nicht nutzen. Bis dahin erledigt ein Node.js-Schritt dieselbe Aufgabe, siehe das Ende dieser Seite.

Die Komponenten sind englischsprachig; Aktionen und Felder heißen in Pipedream so, wie sie hier stehen.

Verbinden​

Verbinden Sie ein Formfeed-Konto mit einem API-Schlüssel aus der App (API-Schlüssel). Ein ff_test_-Schlüssel rendert kostenlos (im Free-Plan mit Wasserzeichen). Die Vorgabe-Scopes eines neuen Schlüssels (render:create, render:read, template:read, account:read) decken den Verbindungstest, Vorlagenliste und Felder und jede Render-Aktion ab; kreuzen Sie file:write für Upload File und webhook:manage für die Sources an, die einen Webhook-Endpunkt registrieren.

Aktionen und Sources​

KomponenteWas sie tut
Create DocumentRendert eine Vorlage. Mit der Auswahl der Vorlage kommt je Feld ihres Datenschemas oder ihrer Beispieldaten eine Prop hinzu.
Create Document From HTMLRendert HTML, das früher im Workflow gebaut wurde, in Jinja2, Liquid oder Handlebars.
Create Document From URLRendert eine öffentliche Seite.
Get RenderLiefert ein Rendering anhand seiner ID, mit frischer Download-URL.
Convert Document to PDFWandelt eine Word-, Excel-, PowerPoint-, OpenDocument- oder RTF-Datei (URL oder /tmp-Pfad) oder das Rendering einer Word- oder PowerPoint-Vorlage in ein PDF um. Ab dem Starter-Tarif.
Upload FileLegt ein Bild oder PDF in der Dateibibliothek ab, wo Vorlagen es mit asset() verwenden.
New Render Completed (Instant)Gibt jedes erfolgreiche Rendering aus.
New Render Failed (Instant)Gibt jedes gescheiterte Rendering mit seinem Problem aus.
New Batch Finished (Instant)Gibt jeden fertigen Batch (job.completed und job.failed) mit Zip-URL und Renderings aus.

Die Props der Aktionen:

AktionProps
Create DocumentTemplate (Pflicht; gerendert wird die veröffentlichte Version), Version (ein Release Channel; leer published), eine Prop je Feld der Vorlage, Data (ein Objekt, das über diese Felder gelegt wird), Output (leer: das Format der Vorlage; PDF, PNG, JPG, WebP, DOCX oder PPTX), File Name, Locale (etwa de-DE), Save File (voreingestellt an)
Create Document From HTMLHTML (Pflicht, bis 5 MB), Template Language (Jinja2, die Vorgabe, Liquid oder Handlebars), Data, Output (PDF, die Vorgabe, PNG, JPG oder WebP), File Name, Settings (Papier, Ränder, Kopf- und Fußzeile, wie unter Einstellungen pro Anfrage überschreiben), Save File
Create Document From URLURL (Pflicht, eine öffentliche https-Seite), Output (PDF, die Vorgabe, PNG, JPG oder WebP), File Name, Settings, Save File
Get RenderRender ID (Pflicht, rnd_…)
Convert Document to PDFFile (eine URL oder ein Pfad unter /tmp: DOCX, XLSX, PPTX, ODT, ODS, ODP, DOC, XLS, PPT oder RTF, bis 20 MB) oder Render ID (rnd_… eines Renderings mit Ausgabe DOCX oder PPTX); Page Ranges (etwa 1-3,5), Landscape, One Page per Sheet, File Name (leer der eigene Name der Datei mit .pdf), Save File
Upload FileFile (Pflicht, eine URL oder ein Pfad unter /tmp: PNG, JPEG, WebP, GIF, SVG, AVIF oder PDF, bis 10 MB), Name in Library (der Name, den Vorlagen mit asset() verwenden, etwa brand/logo.png; leer der eigene Name der Datei; derselbe Name ersetzt die Datei)

Die Liste Template zeigt die Vorlagen des Workspace mit Name und Art; rendern lassen sich nur veröffentlichte, eine unveröffentlichte scheitert mit template_not_found.

Die Dokument-Aktionen speichern die Datei unter /tmp (im File Stash) und liefern ihren Pfad als filePath neben dem Rendering, sodass der nächste Schritt sie anhängt oder hochlädt; schalten Sie Save File aus, wenn die Download-URL genügt. Listen wie Rechnungspositionen gehören in Data, das Wert für Wert über die Felder gelegt wird: Ein Objekt ergänzt die Felder an derselben Stelle, ein Wert ersetzt den des Felds, und eine Liste ersetzt die ganze Liste. Ein Rendering, das länger als eine Minute dauert, läuft im Hintergrund weiter; die Aktion prüft es dann fünf Minuten lang alle fünf Sekunden und gibt es im aktuellen Stand zurück, wenn es bis dahin nicht fertig ist. Ein gescheitertes Rendering beendet den Schritt mit Beschreibung und Code des Problems.

Die Sources registrieren beim Deployment einen Webhook-Endpunkt im Workspace und entfernen ihn beim Löschen; in der App steht er unter Webhooks als Pipedream. Environment wählt, wessen Renderings zählen: die von Live-Schlüsseln, von Test-Schlüsseln oder beide (die Vorgabe). Beim Deployment gibt eine Source bis zu zehn passende Ereignisse der letzten Zeit aus, damit der Workflow echte Daten zum Bauen hat. Die Signatur jeder Zustellung wird mit dem Secret des Endpunkts geprüft (und abgelehnt, wenn sie älter als fünf Minuten ist), und jedes Ereignis wird anhand seiner ID nur einmal ausgegeben.

Bis die App gelistet ist​

Ein Node.js-Code-Schritt rendert mit dem TypeScript-SDK und dem Schlüssel aus einer Umgebungsvariablen (FORMFEED_API_KEY in den Umgebungsvariablen von Pipedream):

import { Formfeed } from '@formfeed/sdk';

export default defineComponent({
async run({ steps, $ }) {
const formfeed = new Formfeed({ apiKey: process.env.FORMFEED_API_KEY });
return await formfeed.renders.create({
template: 'invoice-de',
data: { invoice: { number: '2026-0042' } },
});
},
});

Der Schritt liefert das Rendering mit seiner download_url. Ein Rendering, das länger als eine Minute dauert, kommt mit status: queued zurück; await formfeed.renders.waitFor(render.id) wartet darauf (bis zu zwei Minuten).