ナビゲーション

基本ガイド

PDF の生成

請求書や証明書などの PDF ファイルを、テンプレートから生成する方法を説明します。

どのテンプレートも、PDF として描画できます。レイアウトを一度デザインし、顧客ごとに詳細を埋める、請求書、領収書、ラベル、証明書などに便利です。

PDF の内容

生成される PDF は 1 ページです。ページの幅と高さ(ポイント)は、キャンバスの幅と高さ(ピクセル)と同じ数値になります。テキスト、図形、枠線はベクターで描画されるため、どれだけ拡大しても鮮明で、テキストを選択、コピー、検索できます。PDF には、テキストが使うフォントが埋め込まれ、画像は元の解像度を保ちます。

PDF では、blur() と drop-shadow() のフィルターは描画できません。これらを使うテンプレートは、BAD_REQUEST エラーとともに 400 で応答します。PDF として描画するには、フィルターを外してください。ぼかしのあるボックスシャドウは、柔らかいベクターの影として描画されるため、同じテンプレートの PNG と少し見た目が異なる場合があります。

エディターの A4 @72dpi プリセットは、キャンバスを 595 × 842(A4 縦のページ)に設定します。A4 @96dpi と A4 @300dpi のプリセットは、より大きなページ(794 × 1123 と 2480 × 3508 ポイント)になります。

テンプレートは 2 ページ目に伸びないので、想定する最も長いコンテンツに合わせてキャンバスをデザインしてください。

PDF を生成する

  1. API Keys ページで API キーを作成し、テンプレートカードのメニューからテンプレート ID をコピーします。
  2. JSON ボディを付けて、/v1/templates/createPdf に POST リクエストを送ります。
curl --request POST \
  --url https://api.bannerify.co/v1/templates/createPdf \
  --header 'Content-Type: application/json' \
  --output invoice.pdf \
  --data '{
    "apiKey": "YOUR_API_KEY",
    "templateId": "tpl_invoice",
    "modifications": [
      { "name": "customer", "text": "Acme Studio" },
      {
        "name": "line-items",
        "columns": ["Item", "Qty", "Total"],
        "rows": [
          { "Item": "Automate plan", "Qty": 1, "Total": "$29.00" }
        ]
      }
    ]
  }'
  1. レスポンスを読み取ります。ボディは PDF ファイルで、Content-Type ヘッダーは application/pdf です。

PDF のリクエストが受け付けるフィールドは、apiKey、templateId、modifications の 3 つです。format や quality のオプションはありません。テキスト、画像、表の埋め方は、Modificationsで説明しています。

ファイルの代わりにリンクを取得する

POST /v1/templates/createStoredPdf は、同じボディを受け取り、バイト列の代わりに URL を返します。

{
  "url": "https://images.bannerify.co/files/0b3c1c1e-5d6f-4c52-9e0a-8f6a4c0f2a11.pdf"
}

Bannerify はファイルを保存し、CDN から公開 URL で配信します。Scale プランと Enterprise プランでは、s3Config オブジェクトを送ると、自分の S3 互換バケットにファイルを保存することもできます。フィールドは、自分の S3 バケットにファイルを保存するにまとめています。

SDK を使う

JavaScript、Python、PHP、Go の SDK には、バイト列を返す createPdf メソッドがあります。createStoredPdf をラップする SDK はないため、そのエンドポイントは REST で呼び出してください。JavaScript の例は、画像と PDF の作成にあります。

クォータとエラー

PDF は 1 つにつき 1 回の生成として数えられます。何が数えられ、どの上限が適用されるかは、クォータと制限にまとめています。失敗したリクエストは、error オブジェクトを含む JSON を返します。コードは、エラーの処理にまとめています。