MarkupGo Blog

We write about lovely things like code, design, and, of course, how to use MarkupGo
Page Numbers, Headers and Footers in HTML-to-PDF: Why Puppeteer's headerTemplate Fights You

Page Numbers, Headers and Footers in HTML-to-PDF: Why Puppeteer's headerTemplate Fights You

You add a footerTemplate to your Puppeteer page.pdf() call, pass pageNumber and totalPages, and the result is either invisible text, a footer stamped over your…
MarkupGo Team
Markdown to Image: Turn READMEs, Code Snippets and Release Notes into Social Cards Programmatically

Markdown to Image: Turn READMEs, Code Snippets and Release Notes into Social Cards Programmatically

You can turn a Markdown changelog or README snippet into a branded social card with one API call, but most tools force you to choose between watermarked free…
MarkupGo Team
Add a Payment QR Code to Your Generated Invoices (UPI, EPC, SEPA) Without a Plugin

Add a Payment QR Code to Your Generated Invoices (UPI, EPC, SEPA) Without a Plugin

Customers in India and Europe now expect to scan and pay directly from an invoice PDF. Yet the tools developers rely on either omit QR codes entirely or gate…
MarkupGo Team
Save Any Webpage as a PDF Programmatically: How URL-to-PDF Rendering Works (and Why Pages Get Cut Off)

Save Any Webpage as a PDF Programmatically: How URL-to-PDF Rendering Works (and Why Pages Get Cut Off)

URL-to-PDF is not a screenshot. When Chromium prints a page, it re-lays the entire layout at paper width, switches to @media print rules, and paginates by…
MarkupGo Team
PowerPoint (PPTX) to PDF in Node.js: The LibreOffice Hang, Font Drift, and When to Just Call an API

PowerPoint (PPTX) to PDF in Node.js: The LibreOffice Hang, Font Drift, and When to Just Call an API

Search "pptx to pdf node.js" and you will find Aspose marketing posts and narrow Stack Overflow fixes, but almost nothing about the production failure modes. A…
MarkupGo Team
Generate PDF Invoices from Google Sheets Automatically (No Code)

Generate PDF Invoices from Google Sheets Automatically (No Code)

A new row lands in your Google Sheets client tracker. Thirty seconds later, a designed, branded invoice PDF is sitting in your Drive folder and on its way to…
MarkupGo Team
Convert Excel (XLSX) to PDF in Node.js: Why Spreadsheet Parsers Can't Do It, and What Actually Works

Convert Excel (XLSX) to PDF in Node.js: Why Spreadsheet Parsers Can't Do It, and What Actually Works

ExcelJS reads and writes XLSX beautifully but has no PDF export — a gap documented in GitHub issues 1562 and 1806. After workbook.xlsx.writeBuffer(), you have…
MarkupGo Team
chrome-headless-shell vs Full Chromium for PDF Rendering (and the ARM64 Problem Nobody Warns You About)

chrome-headless-shell vs Full Chromium for PDF Rendering (and the ARM64 Problem Nobody Warns You About)

Chrome 132 killed --headless=old. That flag now prints an error instead of launching, so every PDF pipeline that relied on it must pick a new binary: the…
MarkupGo Team
Dynamic OG Images Without Code: Magic Template URLs for Webflow, Ghost and WordPress

Dynamic OG Images Without Code: Magic Template URLs for Webflow, Ghost and WordPress

Next.js developers can lean on ImageResponse and Satori for dynamic social cards, but Webflow, Ghost and WordPress builders lack a code-level hook. MarkupGo's…
MarkupGo Team
DOCX to PDF in Production: Why Headless LibreOffice Hangs, and When to Use an API

DOCX to PDF in Production: Why Headless LibreOffice Hangs, and When to Use an API

The command libreoffice --headless --convert-to pdf is the first result for "docx to pdf linux" and it is a production trap. A Stack Overflow thread…
MarkupGo Team
Render Chart.js Charts as PNG Images Server-Side (Without Fighting node-canvas)

Render Chart.js Charts as PNG Images Server-Side (Without Fighting node-canvas)

Server-side Chart.js to PNG looks simple until you actually try it. The canonical path runs through node-canvas, which needs Cairo, Pango, libpng, jpeg,…
MarkupGo Team
Auto-Generate Branded PDF Invoices from Stripe Payment Events

Auto-Generate Branded PDF Invoices from Stripe Payment Events

Stripe issues a PDF for every invoice, but the layout is locked. You can upload a logo and pick a brand color, yet you cannot add VAT IDs, custom fonts, or a…
MarkupGo Team
Why Your Server-Generated PDF Shows Boxes and Fallback Fonts (Unicode, CJK, Emoji)

Why Your Server-Generated PDF Shows Boxes and Fallback Fonts (Unicode, CJK, Emoji)

Your PDF looks perfect on your MacBook. Every glyph, every emoji, every CJK character in the customer name renders exactly as designed. Then you ship to…
MarkupGo Team
Puppeteer on Serverless Keeps Breaking: When to Use a Screenshot API

Puppeteer on Serverless Keeps Breaking: When to Use a Screenshot API

It's 2am, PagerDuty fires, and the invoice PDF job on Lambda has died again (TimeoutError: Waiting for navigation ... 30000ms exceeded), on every third…
MarkupGo Team
html-to-image vs html2canvas: CORS, Fonts and When to Render Server-Side

html-to-image vs html2canvas: CORS, Fonts and When to Render Server-Side

Your toPng() call returns a blank image. Or a SecurityError about cssRules. Or a canvas with everything except the fonts — and it works fine in Chrome, but…
MarkupGo Team
HTML to PDF in Node.js: Puppeteer vs a Hosted Conversion API

HTML to PDF in Node.js: Puppeteer vs a Hosted Conversion API

Your Puppeteer PDF code works perfectly on your laptop. Then you deploy it to Lambda: the third deploy breaks the build, every emoji turns into a hollow…
MarkupGo Team
How to create PDF invoices with HTML templates
Reusable Templates

How to create PDF invoices with HTML templates

Learn how to create PDF invoices using HTML templates and MarkupGo's powerful API. Generate professional invoices with dynamic data and reusable templates.
MarkupGo Team
Creating Reusable Templates for Images and PDFs
Reusable Templates

Creating Reusable Templates for Images and PDFs

Learn how to create reusable templates for generating images and PDFs with MarkupGo. This feature allows you to create custom templates for your projects and automate the generation of visual content.
MarkupGo Team
Automate Images with Make.com, Google Sheets & MarkupGo
Automation

Automate Images with Make.com, Google Sheets & MarkupGo

Learn how to easily automate image generation by connecting Google Sheets, Make.com, and MarkupGo. Simplify your workflow with this step-by-step guide!
MarkupGo Team
How powerful is the HTML to Image feature?
HTML to Image

How powerful is the HTML to Image feature?

We’re excited to showcase our HTML-to-Image feature and show how it can be used to convert HTML content into images, making your projects more dynamic and visually engaging.
MarkupGo Team