So sánh

gPdf vs Puppeteer: edge JSON-to-PDF API hay headless Chromium

So sánh API JSON-to-PDF chạy ở edge của gPdf với mô hình headless Chromium tự vận hành bằng Puppeteer: độ trễ, giá, runtime và workload phù hợp.

Tóm tắt

Puppeteer là công cụ tự động hóa trình duyệt đa dụng, và nó cũng có thể xuất PDF. gPdf là engine tạo PDF chạy ở edge trong vài mili giây. Nếu workload là tài liệu có cấu trúc như PDF hóa đơn, nhãn vận chuyển, sao kê ở sản lượng production, gPdf cho độ trễ thấp hơn 50-100× và chi phí thấp hơn 10-20×. Nếu cần chuyển đổi trang web đang chạy hoặc PDF kiểu screenshot từ HTML có sẵn, Puppeteer vẫn là công cụ đúng.

Cạnh nhau

Tiêu chí gPdf Puppeteer Lợi thế
p50 tạo PDF (hóa đơn A4 một trang)
Cả hai được đo trên cùng input qua 1.000 lượt gọi.
3 ms 312 ms gPdf
cold start ~12 ms (request đầu tiên vào isolate mới) 1,5-2,5 giây (Chromium boot) gPdf
runtime
Puppeteer cần browser binary 200–800 MB; gPdf được đóng gói như module WASM khoảng 2 MB.
V8 isolates trên Cloudflare Workers container Node.js + Chromium chạy dài hạn gPdf
Vùng edge 300+ Cloudflare PoPs Nơi bạn deploy container (thường 3-6 region) gPdf
Tuân thủ PDF/A PDF/A-1b · 2b · 3b · 4 chọn được theo từng request Không hỗ trợ tích hợp sẵn; cần hậu xử lý bằng Ghostscript hoặc veraPDF gPdf
E-hóa đơn (Factur-X / ZUGFeRD) endpoint tích hợp sẵn; nhúng CII XML trong PDF/A-3b Không hỗ trợ; cần một stage pipeline riêng gPdf
Vector barcodes
Puppeteer có thể in những gì page render, nhưng hình học barcode, quiet zone và kích thước cho máy in nhiệt vẫn do ứng dụng sở hữu.
Tích hợp sẵn hơn 30 chuẩn mã (QR, GS1-128, PDF417, DataMatrix, …) Phụ thuộc thư viện barcode trong page, lựa chọn SVG/canvas và kích thước in gPdf
Xử lý CJK font NotoSans CJK đóng gói sẵn; tự động dự phòng glyph Tùy font cài trong container; cần setup ở mức OS gPdf
Độ trung thực HTML/CSS layout Không áp dụng — gPdf nhận JSON, không phải HTML Rất mạnh. Render được bất kỳ trang web nào. Puppeteer
Tốt nhất cho kiểu screenshot web→PDF Không Puppeteer
Giá niêm yết cho 100.000 tài liệu một trang
Bản thân Puppeteer miễn phí. Phần tốn tiền là Chromium service mà bạn tự xây quanh nó.
Basic plan 5 USD/tháng gồm 100.000 trang Không có phí license; bạn trả hosting, lưu trữ, monitoring và thời gian kỹ thuật gPdf
Chi phí sở hữu production Hosted edge API, quy trình Studio trực quan, templates, fonts, barcode primitives, PDF/A/e-invoice paths Chromium container, warm pool, năng lực vùng, page mẫu, font, retry, observability gPdf
Tính xác định (cùng input → cùng bytes) Có — output giống từng byte giữa các isolate Không — font hinting và rasterisation của Chromium có thể lệch giữa các version gPdf

Khi nào chọn cái nào

Chọn gPdf khi
  • Bạn tạo tài liệu có cấu trúc (hóa đơn, nhãn vận chuyển, sao kê, phiếu lương, vé) ở mọi sản lượng.
  • Cần tạo PDF trong vài mili giây cho luồng tương tác như xem trước trước khi gửi.
  • Cần tuân thủ lưu trữ PDF/A hoặc output e-hóa đơn EU Factur-X / ZUGFeRD.
  • Bạn đã mệt với áp lực bộ nhớ của Chromium, chi phí warm pool cho container, hoặc chuỗi timeout do cold start.
  • Cần PDF xác định, giống từng byte để test hoặc audit.
  • Bạn tạo PDF ở edge và cần 300+ region, không phải 3-6 region.
Chọn Puppeteer khi
  • Bạn chuyển đổi trang web đang chạy tùy ý — landing page, bài báo, snapshot marketing.
  • Nguồn thiết kế của tài liệu là HTML/CSS đã render đúng trong browser, và bạn không muốn viết lại thành JSON.
  • Bạn render các visualisation JavaScript phía client như chart hoặc dashboard cần browser thật.
  • Sản lượng nhỏ (dưới 1.000 lượt render/ngày) và bạn không quan tâm độ trễ hay chi phí mỗi lần render.
  • Cần khớp pixel-perfect giữa DOM trên màn hình và PDF vì lý do pháp lý/forensic.
Khả năng

gPdf là API tạo PDF từ JSON trên Edge cho hóa đơn, tài liệu, nhãn vận chuyển, mã vạch, PDF/A và hóa đơn điện tử khối lượng lớn. Kết xuất PDF ở cấp mili giây trên Edge toàn cầu — tối ưu cho quy trình tạo tài liệu công nghiệp, ổn định và dễ dự đoán. Mức giá cấp hạ tầng, đủ thấp để thay thế việc tự xây dựng và vận hành hạ tầng PDF.

Khả năng

Puppeteer rất tốt khi sản phẩm là một trang web

Puppeteer điều khiển một browser Chromium thật. Đó là sức mạnh của nó. Nếu nguồn chuẩn là một trang HTML có sẵn, một dashboard có chart JavaScript, snapshot pháp lý của web app đã render, hoặc export kiểu screenshot, Puppeteer thường là lựa chọn sản phẩm đúng.

Câu hỏi sản phẩm là PDF của bạn có thật sự là trang web hay là tài liệu nghiệp vụ có cấu trúc. PDF hóa đơn, nhãn, sao kê, biên nhận, vé và form thường đến từ dữ liệu, không phải từ DOM đang chạy. Với các luồng đó, chạy cả browser có thể là kiến trúc nặng hơn nhu cầu của tài liệu.

Cùng artifact, khác ranh giới sản phẩm

Puppeteer biến HTML thành PDF in ra thông qua Chromium. Ứng dụng sở hữu mẫu HTML, rule CSS print, cài đặt font, runtime browser, năng lực worker, retry và triển khai theo vùng.

gPdf biến JSON có cấu trúc trực tiếp thành PDF. Ứng dụng gửi DocumentRequest hoặc template_id + data; bộ tạo PDF ở edge sở hữu layout execution, font đóng gói sẵn, primitive barcode, profile PDF/A và đóng gói e-hóa đơn. Không có browser process, không có CSS cascade và không có Chromium container cần giữ ấm.

Độ phù hợp sản phẩm: capture web hay tạo tài liệu

Chọn Puppeteer khi tài liệu phải trông đúng như một trang web đã có, hoặc khi JavaScript phía client tạo ra trạng thái hình ảnh cuối cùng. Gồm web archive, dashboard động, report nặng DOM và các quy trình mà việc viết lại layout thành JSON tạo thêm rủi ro hơn là giảm.

Chọn gPdf khi sản phẩm là tạo tài liệu: nhãn, hóa đơn, vé, sao kê, chứng nhận, biên nhận hoặc gói tuân thủ cần được tạo theo cùng một cách từ dữ liệu sạch mỗi lần.

Thời gian phát triển: debug HTML print hay mẫu API

Puppeteer bắt đầu nhanh khi HTML đã có. Thời gian phát triển xuất hiện về sau: CSS cho print, ngắt trang, cài font trong container, case header/footer, kích thước barcode và drift giữa các version browser.

gPdf bắt đầu từ mẫu có cấu trúc. Team có thể viết JSON trực tiếp, dùng AI để phác thảo layout hợp schema, hoặc dùng gPdf Studio để thêm và kéo thả text, table, image, shape, header, footer và barcode trực quan. Khi mẫu đã lưu, production call có thể giữ nguyên template_id + data.

Mô hình giá: thư viện automation miễn phí hay fleet browser phải vận hành

Puppeteer không có phí license. Điều đó không làm một production Puppeteer PDF service trở thành miễn phí.

Bề mặt chi phí nằm ở service quanh Chromium:

  • container hoặc serverless runtime cho browser binary.
  • warm pool hoặc hàng đợi để hấp thụ cold start.
  • Dự phòng bộ nhớ cho page, font, image và PDF bytes.
  • Triển khai vùng nếu kho hoặc khách hàng ở nhiều nơi.
  • monitoring, retry, browser upgrade và security patch.

gPdf định giá trực tiếp bề mặt tạo PDF. Basic plan bắt đầu từ 5 USD/tháng cho 100.000 trang, và đơn giá công khai bắt đầu từ 0,00005 USD/trang. Không có seat, không có phí riêng cho môi trường test/prod, và không có pool Chromium để vận hành.

Tạo PDF ở edge đổi hình dạng độ trễ và chi phí

Với Puppeteer, browser thường nằm ở nơi bạn host nó. Nếu kho, khách hàng hoặc backend job ở xa region đó, render path gồm cả network latency lẫn công việc browser. Thêm region nghĩa là nhân bản dịch vụ browser, pipeline triển khai, monitoring và capacity plan.

gPdf chạy trên Cloudflare Workers V8 isolate. Với PDF có cấu trúc, bộ tạo PDF đủ nhỏ để chạy gần caller thay vì dồn mọi render về một region. Hiệu quả kinh doanh không chỉ là p50 nhanh hơn; đó là loại bỏ một fleet Chromium theo vùng khỏi sản phẩm.

Những capability thường quyết định cuộc so sánh

Với tài liệu vận hành, danh sách capability quan trọng không kém tốc độ render:

  • Element barcode tích hợp sẵn cho nhãn, vé và tài liệu kho.
  • font CJK và dự phòng đa ngôn ngữ đóng gói sẵn.
  • Profile PDF/A cho quy trình lưu trữ.
  • Đóng gói e-hóa đơn Factur-X/ZUGFeRD.
  • PDF có mật khẩu và kiểm soát siêu dữ liệu ở tier cao hơn.
  • Lặp lại layout trực quan qua gPdf Studio.

Puppeteer có thể hỗ trợ nhiều điểm này bằng page code, thiết lập browser hoặc hậu xử lý. Câu hỏi là nhóm của bạn có muốn sở hữu toàn bộ stack đó hay không.

Khi Puppeteer vẫn là câu trả lời đúng

Có một hạng mục gPdf không cạnh tranh: chuyển HTML tùy ý sang PDF. Nếu document đã được render, nguồn thiết kế là HTML và bạn cần browser thật để chạy JavaScript hoặc khớp DOM, Puppeteer vẫn là công cụ đúng.

Nếu sản lượng nhỏ và độ trễ không quan trọng, chi phí vận hành cũng có thể chấp nhận được. Vài export nội bộ mỗi ngày không đáng để viết lại HTML ổn định thành JSON.

Hình dạng chuyển đổi

Với các nhóm chuyển workload hóa đơn hoặc nhãn từ Puppeteer sang gPdf, chuyển đổi thường trông như:

- // Before: render an HTML template through Chromium
- const browser = await puppeteer.launch({ headless: 'new' });
- const page = await browser.newPage();
- await page.setContent(invoiceHtml);
- const pdf = await page.pdf({ format: 'A4' });
+ // After: POST the structured DocumentRequest
+ const res = await fetch('https://api.gpdf.com/api/v1/template-render', {
+   method: 'POST',
+   headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json' },
+   body: JSON.stringify({ template_id: 'invoice-v2', data }),
+ });
+ const pdf = Buffer.from(await res.arrayBuffer());

Công việc không nằm ở API call; mà ở việc author template một lần. Sau đó mỗi lần render chỉ là một HTTPS POST.

Các scenario tạo PDF liên quan

Nếu bạn đang so sánh Puppeteer và gPdf, hãy xem thêm JSON to PDF API, invoice PDF API, shipping label API, GS1 barcode API, PDF/A APIFactur-X API. Puppeteer vẫn hợp với web capture; gPdf hợp hơn khi sản phẩm là document generation từ dữ liệu có cấu trúc.

FAQ

Puppeteer có miễn phí không?

Puppeteer miễn phí như một thư viện. Chi phí production nằm ở dịch vụ browser: container, bộ nhớ, cold start, capacity theo vùng, monitoring, retry và bảo trì.

gPdf có render trang HTML tùy ý không?

Không. gPdf là JSON-tích hợp sẵn. Nếu nguồn thiết kế là HTML tùy ý hoặc trang web đang chạy, Puppeteer phù hợp hơn.

Vì sao so sánh Studio với Puppeteer?

Nhiều nhóm dùng HTML vì có thể nhìn thấy kết quả. gPdf Studio cho mẫu PDF có cấu trúc một bề mặt chỉnh sửa trực quan mà không biến runtime thành browser.

Xem thêm