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
| Komponente | Was sie tut |
|---|---|
| Create Document | Rendert eine Vorlage. Mit der Auswahl der Vorlage kommt je Feld ihres Datenschemas oder ihrer Beispieldaten eine Prop hinzu. |
| Create Document From HTML | Rendert HTML, das früher im Workflow gebaut wurde, in Jinja2, Liquid oder Handlebars. |
| Create Document From URL | Rendert eine öffentliche Seite. |
| Get Render | Liefert ein Rendering anhand seiner ID, mit frischer Download-URL. |
| Convert Document to PDF | Wandelt 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 File | Legt 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:
| Aktion | Props |
|---|---|
| Create Document | Template (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 HTML | HTML (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 URL | URL (Pflicht, eine öffentliche https-Seite), Output (PDF, die Vorgabe, PNG, JPG oder WebP), File Name, Settings, Save File |
| Get Render | Render ID (Pflicht, rnd_…) |
| Convert Document to PDF | File (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 File | File (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).