導覽

基本功能

生成 PDF

了解如何從範本生成發票和證書等 PDF 檔案。

你可以把任何範本繪製成 PDF。這很適合用於發票、收據、標籤和證書:版面只需要設計一次,再為每位客戶填入細節。

PDF 包含什麼

生成的 PDF 只有一頁。頁面的寬度和高度(以點為單位),與畫布的寬度和高度(以像素為單位)數值相同。文字、形狀和邊框都以向量繪製,所以無論放大多少都能保持銳利,讀者也可以選取、複製和搜尋文字。PDF 會嵌入文字所使用的字型,圖片則保留自己的解析度。

PDF 無法繪製 blur() 和 drop-shadow() 濾鏡。使用了這些濾鏡的範本會回應 400 和 BAD_REQUEST 錯誤;移除濾鏡後,才能繪製成 PDF。模糊的方塊陰影會被繪製成柔和的向量陰影,所以看起來可能與同一個範本的 PNG 略有不同。

編輯器中的 A4 @72dpi 預設尺寸會把畫布設為 595 × 842,也就是 A4 直式頁面。A4 @96dpi 和 A4 @300dpi 預設尺寸會產生較大的頁面(794 × 1123 和 2480 × 3508 點)。

請依你預期最長的內容來設計畫布,因為範本不會延伸到第二頁。

生成 PDF

  1. 在 API Keys 頁面建立 API 金鑰,並從範本卡片選單複製範本 ID。
  2. 傳送一個 POST 請求到 /v1/templates/createPdf,並帶上 JSON 本文:
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,沒有 format 或 quality 選項。如何填入文字、圖片和表格,請見 Modifications。

取得連結而不是檔案

POST /v1/templates/createStoredPdf 接受相同的本文,並回傳網址,而不是位元組:

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

Bannerify 會儲存檔案,並透過 CDN 以公開網址提供。在 Scale 和 Enterprise 方案中,你也可以傳送 s3Config 物件,把檔案儲存到你自己相容 S3 的儲存桶。它的欄位請見把檔案儲存到你自己的 S3 儲存桶。

使用 SDK

JavaScript、Python、PHP 和 Go 的 SDK 都有會回傳位元組的 createPdf 方法。沒有任何 SDK 包裝 createStoredPdf,所以請透過 REST 呼叫該端點。JavaScript 的版本請見建立圖片與 PDF。

用量額度與錯誤

每份 PDF 都會計為一次生成。哪些情況會計算,以及適用哪些限制,請見用量額度與限制。失敗的請求會回傳含有 error 物件的 JSON,錯誤碼請見處理錯誤。