---
title: "HTML in PDF format: How to convert HTML to PDF (5 methods)"
canonical_url: "https://www.nutrient.io/blog/html-in-pdf-format/"
md_url: "https://www.nutrient.io/blog/html-in-pdf-format.md"
last_updated: "2026-07-15T18:08:48.596Z"
description: "Five ways to convert HTML to PDF — browser print, online converters, JavaScript libraries, Python libraries, and production SDKs. Includes code examples."
---

**TL;DR**

Five ways to convert HTML to PDF format:

- **[Browser print](#method-1-use-your-browser-print-to-pdf)** — Press Control-P (Command-P on Mac) and select **Save as PDF**. This method is free and works offline.

- **[Online converters](#method-2-free-online-html-to-pdf-converters)** — Upload an HTML file or paste a URL to get a PDF back. Best for quick one-off conversions.

- **[JavaScript libraries](#method-3-javascript-libraries-for-developers)** — Libraries like html2pdf.js, jsPDF, and Puppeteer let you build PDF export directly into your applications.

- **[Python libraries](#method-4-python-libraries-for-developers)** — WeasyPrint and pdfkit convert HTML templates to PDF server-side from Django, Flask, or any Python backend.

- **[Professional SDKs](#method-5-professional-sdks-for-production-apps)** — Nutrient Document Engine provides full CSS support, automatic form conversion, and enterprise-scale performance.

To convert HTML to PDF, open the page in any browser and press Control-P (Command-P on Mac). Then choose **Save as PDF**. For automated or production use — generating invoices, archiving pages, or batch conversion — a Chromium-based library or a PDF SDK preserves full CSS and can turn HTML forms into fillable PDF fields.

Converting HTML to PDF format is one of the most common document tasks. A PDF gives you a portable, printable document that looks the same on any device. This is useful for archiving webpages, sharing reports offline, or generating invoices from web applications.

This guide covers five methods, from quick browser options to developer-focused solutions for automated workflows.

## Method 1: Use your browser (print to PDF)

Your browser’s built-in print function converts any webpage or local HTML file to PDF.

### Chrome

1. Open the HTML file or webpage in Chrome

2. Press **Control-P** (Windows) or **Command-P** (Mac)

3. Change **Destination** to **Save as PDF**

4. Adjust settings (margins, scale, and background graphics)

5. Click **Save** and choose a location

### Firefox

1. Open the HTML file or webpage in Firefox

2. Press **Control-P** (Windows) or **Command-P** (Mac)

3. Select **Microsoft Print to PDF** or **Save to PDF**

4. Adjust layout options as needed

5. Click **Save**

### Safari

1. Open the HTML file or webpage in Safari

2. Go to **File** > **Export as PDF**, or press **Command-P**

3. Click the **PDF** dropdown in the bottom-left corner

4. Select **Save as PDF**

5. Choose a location and click **Save**

### Edge

1. Open the HTML file or webpage in Edge

2. Press **Control-P** (Windows)

3. Change **Printer** to **Microsoft Print to PDF** or **Save as PDF**

4. Adjust settings and click **Save**

### Tips for better output

- Enable **Background graphics** to include colors and images

- Set **Margins** to **None** or **Minimum** for more content per page

- Use **Scale** to fit wide content on the page

- Remove **Headers and footers** for cleaner output

| Pros                      | Cons                         |
| ------------------------- | ---------------------------- |
| Free, no software needed  | Limited control over output  |
| Works offline             | May break complex layouts    |
| Available in all browsers | Manual process for each page |

## Method 2: Free online HTML-to-PDF converters

Online converters handle quick conversions without installing software. Upload an HTML file or enter a URL, and the service returns a PDF.

### Popular free converters

| Tool         | Maximum file size | Watermark      | Batch convert |
| ------------ | ----------------- | -------------- | ------------- |
| pdfcrowd     | 2 MB              | No (free tier) | No            |
| sejda        | 50 MB             | No             | Yes (3 files) |
| ilovepdf     | 25 MB             | No             | Yes           |
| html2pdf.com | 15 MB             | No             | No            |
| cloudconvert | 1 GB              | No             | Yes           |

### When to use online converters

Online converters make sense when you need a quick PDF and don’t want to install anything. They’re useful for one-off conversions of public webpages or simple HTML files where exact formatting isn’t critical.

Avoid them for anything automated or sensitive, or where you need consistent results across multiple conversions.

### Limitations to consider

- **Privacy** — Your HTML content is uploaded to third-party servers, which may not be suitable for confidential documents.

- **File size limits** — Free tiers restrict upload sizes, typically ranging from 2 MB to 50 MB.

- **Internet required** — These tools require an active internet connection and cannot work offline.

- **Inconsistent rendering** — CSS support varies significantly between tools, so complex layouts may not convert accurately.

For sensitive documents, avoid online converters. Use browser print or local tools instead.

## Method 3: JavaScript libraries (for developers)

Several JavaScript libraries can add PDF export to your applications. These run either client-side (in the browser) or server-side (on your backend).

### Client-side: html2pdf.js

html2pdf.js combines html2canvas and jsPDF to convert HTML elements to PDF directly in the browser:

```javascript

// Include via CDN.
// <script src="https://unpkg.com/html2pdf.js@0.14.0/dist/html2pdf.bundle.min.js"></script>

const element = document.getElementById('content');
html2pdf().from(element).save('document.pdf');

```

This works for simple documents but produces image-based PDFs with limited CSS support.

### Client-side: jsPDF

jsPDF creates PDFs programmatically from JavaScript objects rather than HTML:

```javascript

// Include via CDN.
// <script src="https://unpkg.com/jspdf@4.2.1/dist/jspdf.umd.min.js"></script>

const doc = new jsPDF();
doc.text('Hello World', 10, 10);
doc.save('document.pdf');

```

Best for structured documents like invoices where you control the exact layout.

### Server-side: Puppeteer and Playwright

Puppeteer and Playwright control headless browsers to render pages with full CSS support:

```javascript

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch();
  const page = await browser.newPage();
  await page.setContent('<h1>Invoice</h1><p>Details here...</p>');
  await page.pdf({ path: 'invoice.pdf', format: 'A4' });
  await browser.close();
})();

```

These produce high-fidelity PDFs but require server infrastructure.

### Server-side: Prince (CSS-first)

[Prince](https://www.princexml.com/) is a commercial command-line tool that renders HTML and XML to PDF using CSS — including advanced print stylesheets, paged media, and complex CSS layouts. Unlike browser-based renderers, Prince is built specifically for print, so headers, footers, page numbers, and cross-references work without scripting:

```bash

prince input.html -o output.pdf

```

It’s a good fit when your priority is precise CSS-driven print output (books, technical manuals, regulatory documents) rather than matching exactly what a browser displays.

### When to use JavaScript libraries

- Building apps with PDF export features

- Automated report generation

- Custom PDF workflows in your codebase

For a detailed comparison of JavaScript libraries, refer to our blog post on how to [convert HTML to PDF with JavaScript](https://www.nutrient.io/blog/html-to-pdf-in-javascript/).

## Method 4: Python libraries (for developers)

Python has several libraries for converting HTML to PDF server-side. These integrate directly with web frameworks like Django and Flask, so you can generate PDFs from templates without spinning up a headless browser.

### WeasyPrint

[WeasyPrint](https://weasyprint.org/) is a pure-Python library that renders HTML and CSS to PDF. It supports most CSS3, including flexbox, grid, and print media queries for standard layouts — without requiring an external binary. Complex nested grid and flexbox page-break combinations have known limitations:

```python

from weasyprint import HTML

# From an HTML string.

HTML(string="<h1>Invoice</h1><p>Details here...</p>").write_pdf("invoice.pdf")

# From a URL.

HTML(url="https://example.com").write_pdf("page.pdf")

# From a local file.

HTML(filename="template.html").write_pdf("output.pdf")

```

Install with `pip install weasyprint`. WeasyPrint is the best Python choice when your templates are HTML/CSS and you need accurate rendering without JavaScript execution.

### pdfkit (wkhtmltopdf)

wkhtmltopdf was archived in January 2023 and is no longer maintained. It has a known CVSS 9.8 SSRF vulnerability. Don’t use pdfkit or wkhtmltopdf with untrusted HTML. For new projects, use WeasyPrint or Playwright instead.

[pdfkit](https://pypi.org/project/pdfkit/) wraps the [wkhtmltopdf](https://wkhtmltopdf.org/) command-line tool, converting HTML to PDF via the QtWebKit engine. It’s still widely referenced in existing codebases but shouldn’t be used in new projects:

```python

import pdfkit

# From a URL.

pdfkit.from_url("https://example.com", "output.pdf")

# From an HTML string.

pdfkit.from_string("<h1>Hello</h1>", "output.pdf")

# From a local file.

pdfkit.from_file("template.html", "output.pdf")

```

If you have an existing pdfkit dependency, the recommended migration path is WeasyPrint for Python stacks not requiring JavaScript execution, or Playwright for full browser rendering.

### When to use Python libraries

- Flask or Django apps with PDF export features

- Server-side report generation from HTML templates

- Data pipelines that produce PDFs without a Node.js dependency

For a broader comparison of Python PDF tools, see our [Python PDF libraries guide](https://www.nutrient.io/blog/best-python-pdf-libraries/).

## Method 5: Professional SDKs (for production apps)

Free tools and open source libraries work for prototypes and internal tools. But when HTML-to-PDF conversion becomes part of your product — such as generating customer invoices, compliance reports, or contracts — you need reliability, consistent output, and support.

### Why use a professional SDK?

Open source libraries render CSS inconsistently, produce flat PDFs without fillable form fields, and crash on large documents. They also lack enterprise security features and dedicated support. Professional SDKs solve these problems for production applications.

### Nutrient solutions

Nutrient offers several options for HTML-to-PDF conversion: Document Engine for server-side processing, native SDKs for mobile and desktop platforms, a cloud API for zero-infrastructure setups, and no-code integrations for automated workflows.

#### Document Engine

[Document Engine](https://www.nutrient.io/sdk/document-engine/) is a server-side toolkit that powers document processing, rendering, and automation behind the scenes of web, mobile, and desktop apps. It handles more than just HTML-to-PDF conversion: You can use it for document viewing, generation, conversion, OCR, redaction, and real-time collaboration at scale.

Document Engine uses a Chromium-based rendering engine, so modern CSS (flexbox, grid, custom fonts, and print stylesheets) works out of the box. We recommend previewing your HTML in Chrome before conversion, though minor differences may occur. HTML form elements (`input`, `select`, and `textarea` tags) automatically become fillable PDF form fields.

You can run document workflows entirely on the backend, or pair Document Engine with a frontend SDK. The backend handles large files and high-volume document batches that would overwhelm browser-based solutions. Features like form filling, annotation, and signing work through frontend and backend syncing, so users interact with documents in the browser while the server handles processing.

Document Engine integrates with.NET, Node.js, Java, iOS, Android, React Native, and Flutter.

```bash

curl -X POST http://localhost:5000/api/build \
  -H "Authorization: Token token=<API token>" \
  -F page.html=@/path/to/page.html \
  -F instructions='{ "parts": [{ "html": "page.html" }] }' \
  -o result.pdf

```

Three deployment options:

| Option      | You manage | Nutrient manages           | Good for                              |
| ----------- | ---------- | -------------------------- | ------------------------------------- |
| Self-hosted | Everything | Nothing                    | Full control, air-gapped environments |
| Cloud API   | Nothing    | Everything                 | Quick start, pay-per-document         |
| Managed     | Nothing    | Dedicated instance for you | Compliance needs without ops work     |

Self-hosted means you run the Docker container on your own servers. You control the infrastructure, updates, and scaling. This option works for air-gapped environments or when regulations require data to stay on-premises.

[Nutrient Processor API](https://www.nutrient.io/api/html-to-pdf-api/) is the fastest way to get started. You send HTTP requests to Nutrient’s servers and receive PDFs back. No infrastructure to manage, and you pay based on credits consumed. The API supports multiple languages, including JavaScript, Python, Java, C#, and PHP:

```javascript

const axios = require('axios')
const FormData = require('form-data')
const fs = require('fs')

const formData = new FormData()
formData.append('html', fs.createReadStream('index.html'));

(async () => {
  try {
    const response = await axios.post('https://api.nutrient.io/processor/generate_pdf', formData, {
      headers: formData.getHeaders({
        'Authorization': 'Bearer your_api_key_here'
      }),
      responseType: "stream"
    })

    response.data.pipe(fs.createWriteStream("result.pdf"))
  } catch (e) {
    const errorString = await streamToString(e.response.data)
    console.log(errorString)
  }
})()

function streamToString(stream) {
  const chunks = []
  return new Promise((resolve, reject) => {
    stream.on("data", (chunk) => chunks.push(Buffer.from(chunk)))
    stream.on("error", (err) => reject(err))
    stream.on("end", () => resolve(Buffer.concat(chunks).toString("utf8")))
  })
}

```

Managed gives you a dedicated Document Engine instance that Nutrient operates on your behalf. You get the isolation of self-hosting without the operational overhead. This option fits organizations that need compliance guarantees but don’t want to manage infrastructure.

####.NET SDK

The [.NET SDK](https://www.nutrient.io/guides/dotnet/conversion/html-to-pdf.md) brings HTML-to-PDF conversion to.NET applications. It uses Chrome-based rendering for consistent output.

The SDK integrates with C# and other.NET languages. You pass an HTML string or file path to the conversion method, and it returns a PDF document. Since it runs locally, your HTML content never leaves your servers.

#### Android and iOS SDKs

Our [Android SDK](https://www.nutrient.io/guides/android/pdf-generation/from-html.md) and [iOS SDK](https://www.nutrient.io/guides/ios/pdf-generation/from-html.md) generate PDFs directly on mobile devices. Android uses the system WebView for rendering, while iOS uses WebKit. Both produce PDFs without requiring a network connection or external server.

On-device conversion keeps sensitive data on the device instead of sending it to a server. You can convert HTML strings or local HTML files (including `file` and `content` URIs on Android).

#### React Native and Flutter SDKs

Our [React Native SDK](https://www.nutrient.io/guides/react-native/pdf-generation/from-html.md) and [Flutter SDK](https://www.nutrient.io/guides/flutter/pdf-generation/from-html.md) provide HTML-to-PDF conversion for cross-platform mobile development. Both SDKs use native implementations under the hood (WebView on Android, WebKit on iOS), so you write one codebase that works on both platforms.

In Flutter, the `generatePdfFromHtmlString` and `generatePdfFromHtmlUri` methods return a path to the generated PDF file. The React Native SDK offers similar PDF generation capabilities.

Beyond conversion, Nutrient’s mobile SDKs include viewing, annotation, form filling, and digital signature features.

#### Zapier and Power Automate

[Zapier integration](https://www.nutrient.io/blog/nutrient-api-zapier-convert-html-to-pdf/) and Power Automate connectors bring HTML-to-PDF conversion to no-code workflows. You can trigger PDF generation from events in other apps without writing any code.

These integrations let you automate HTML-to-PDF generation as part of larger workflows — for example, generating documents from templates or form submissions. The PDF generation happens on Nutrient’s servers, and you receive the finished document in your workflow.

### What you can build with Nutrient

**Invoices** — Generate branded invoices from HTML templates with dynamic data, watermarks, and automatic delivery to customers.

**Compliance reports** — Add digital signatures, encryption, and tamper-evident seals for SOC 2, HIPAA, or financial audits.

**Contracts** — Convert HTML contracts to PDF with fillable signature fields.

**Customer exports** — Let users download reports, statements, or receipts as PDFs from your web app.

**Document pipelines** — Chain HTML conversion with OCR, redaction, and merging in a single API call.

**[Start a free trial](https://www.nutrient.io/try/)** to test full CSS support, form conversion, and high-volume processing. No watermarks or credit card required.

## HTML-to-PDF conversion methods compared

| Method               | Best for                             | Cost | CSS support | Form fields |
| -------------------- | ------------------------------------ | ---- | ----------- | ----------- |
| Browser print        | Quick one-off saves                  | Free | Basic       | No          |
| Online tools         | Non-sensitive documents              | Free | Limited     | No          |
| JavaScript libraries | Prototypes, JS apps                  | Free | Varies      | No          |
| Python libraries     | Django/Flask apps, data pipelines    | Free | Good        | No          |
| Nutrient             | Production apps, automated workflows | Paid | Full        | Yes         |

## Common issues when converting HTML to PDF

| Issue                | Cause                  | Solution                               |
| -------------------- | ---------------------- | -------------------------------------- |
| Formatting breaks    | CSS not supported      | Use browser print or SDK with full CSS |
| Images not appearing | Relative paths         | Use absolute URLs or Base64 encoding   |
| CSS not rendering    | Modern CSS unsupported | Avoid flexbox/grid with basic tools    |
| Large file sizes     | Uncompressed images    | Optimize images before conversion      |
| Page breaks wrong    | No CSS page rules      | Add `page-break-before` CSS rules      |

## FAQ

#### How do I save an HTML file as a PDF?

Open the HTML file in any browser, press Control-P (Windows) or Command-P (Mac), select **Save as PDF** as the destination, and click **Save**. This works in Chrome, Firefox, Safari, and Edge. For better results, enable **Background graphics** in the print settings to preserve colors and images.

#### How do I open an HTML file in PDF format?

HTML and PDF are different file formats, so you cannot open an HTML file directly as a PDF. First, convert the HTML to PDF using one of these methods: browser print (Control-P), an online converter, or a PDF generation tool. Once converted, open the resulting PDF file in any PDF reader.

#### Can I convert HTML to PDF for free?

Yes. Use your browser’s print to PDF feature (Control-P or Command-P), or open source libraries like html2pdf.js for basic use cases. [Nutrient’s Cloud API](https://www.nutrient.io/api/html-to-pdf-api/) offers 50 free credits monthly for testing.

#### How do I convert HTML to PDF without losing formatting?

Use a Chromium-based tool. Browser print may break flexbox or grid layouts. [Nutrient Document Engine](https://www.nutrient.io/sdk/document-engine/) and the [Cloud API](https://www.nutrient.io/api/html-to-pdf-api/) support modern CSS, including flexbox, grid, custom fonts, and print stylesheets.

#### What is the best HTML-to-PDF converter?

For one-off conversions, use your browser’s print function. For production applications, [Nutrient](https://www.nutrient.io/sdk/document-engine/) offers Chromium-based rendering, automatic form field conversion, and enterprise features. The [Cloud API](https://www.nutrient.io/api/html-to-pdf-api/) is SOC 2-compliant and requires no infrastructure.

#### How do I convert HTML to PDF in JavaScript?

Client-side: html2pdf.js or jsPDF for simple documents. Server-side: Puppeteer, Playwright, or [Nutrient’s Cloud API](https://www.nutrient.io/api/html-to-pdf-api/). See our [JavaScript guide](https://www.nutrient.io/blog/html-to-pdf-in-javascript/) for code examples.

#### Can I convert HTML forms to fillable PDF forms?

Most converters produce flat PDFs. [Nutrient](https://www.nutrient.io/sdk/document-engine/) automatically converts HTML form elements into interactive, fillable PDF form fields.

#### How do I convert HTML to PDF on mobile devices?

On iOS and Android, you can use the browser’s share or print function for basic conversions. For in-app PDF generation, Nutrient provides native SDKs for [iOS](https://www.nutrient.io/guides/ios/pdf-generation/from-html.md), [Android](https://www.nutrient.io/guides/android/pdf-generation/from-html.md), [React Native](https://www.nutrient.io/guides/react-native/pdf-generation/from-html.md), and [Flutter](https://www.nutrient.io/guides/flutter/pdf-generation/from-html.md). These SDKs generate PDFs on-device without requiring a server connection.

#### How do I convert HTML to PDF in Python?

Use [WeasyPrint](https://weasyprint.org/) for full CSS3 support: `pip install weasyprint`, then `HTML(string=your_html).write_pdf("output.pdf")`. For URL-based conversion, use `HTML(url="https://example.com").write_pdf("output.pdf")`. If you prefer a wkhtmltopdf-based approach, [pdfkit](https://pypi.org/project/pdfkit/) offers a simple wrapper: `pdfkit.from_string(html, "output.pdf")`. For production-scale conversion with advanced features, [Nutrient’s Cloud API](https://www.nutrient.io/api/html-to-pdf-api/) supports Python via HTTP requests.

#### How do I convert HTML to PDF with CSS preserved?

CSS support depends on the tool. Browser print preserves most styles but may break flexbox or grid. Server-side tools like WeasyPrint (Python) and Puppeteer (Node.js) support full CSS3, including flexbox, grid, and custom fonts. [Nutrient Document Engine](https://www.nutrient.io/sdk/document-engine/) uses a Chromium-based renderer that matches what you see in Chrome, including print stylesheets.

#### How do I convert HTML to PDF from the command line?

Two options: [wkhtmltopdf](https://wkhtmltopdf.org/) (`wkhtmltopdf input.html output.pdf`) and [Prince](https://www.princexml.com/) (`prince input.html -o output.pdf`). wkhtmltopdf is free and widely used; Prince is commercial and excels at complex CSS-driven print layouts. Both accept URLs as input, so you can convert live webpages directly.

## Conclusion

For one-off conversions, your browser’s print function works. For production applications that need consistent output and automated workflows, [Nutrient](https://www.nutrient.io/sdk/document-engine/) provides self-hosted, cloud, and SDK options with Chromium-based rendering and enterprise security.

**[Start your free trial](https://www.nutrient.io/try/)** to test HTML-to-PDF conversion with no watermarks.
---

## Related pages

- [The business case for accessibility: Five ways it drives enterprise value](/blog/5-ways-accessibility-drives-enterprise-value.md)
- [Accessibility Untangled Why It Matters Guide](/blog/accessibility-untangled-why-it-matters-guide.md)
- [Advanced Techniques For React Native Ui Components](/blog/advanced-techniques-for-react-native-ui-components.md)
- [`vector_store` holds your indexed documents (see the multimodal RAG post](/blog/agentic-rag.md)
- [Ai Document Automation Extraction To Action](/blog/ai-document-automation-extraction-to-action.md)
- [Ai Legal Assistant Document Authoring](/blog/ai-legal-assistant-document-authoring.md)
- [Angular File Viewer Pdf Image Office Files](/blog/angular-file-viewer-pdf-image-office-files.md)
- [Auto Tagging And Document Accessibility In Dotnet Sdk](/blog/auto-tagging-and-document-accessibility-in-dotnet-sdk.md)
- [Best Document Viewers](/blog/best-document-viewers.md)
- [The CEO’s AI playbook: Why decision architecture beats model selection](/blog/ceo-ai-playbook-decision-architecture.md)
- [1. Extract and chunk the PDF.](/blog/chat-with-pdf.md)
- [Complete Guide To Pdfjs](/blog/complete-guide-to-pdfjs.md)
- [Construction Document Data Extraction](/blog/construction-document-data-extraction.md)
- [Convert One Drive Files To Pdf In Sharepoint](/blog/convert-one-drive-files-to-pdf-in-sharepoint.md)
- [Create And Edit Pdfs In Flutter](/blog/create-and-edit-pdfs-in-flutter.md)
- [Create Pdfs With React](/blog/create-pdfs-with-react.md)
- [Creating A Document Scanner With Ocr In Python](/blog/creating-a-document-scanner-with-ocr-in-python.md)
- [Creating And Filling Pdf Forms Programmatically In Javascript](/blog/creating-and-filling-pdf-forms-programmatically-in-javascript.md)
- [The CTO’s AI playbook: Why accountability architecture beats orchestration](/blog/cto-ai-playbook-accountability-architecture.md)
- [Digital Signatures](/blog/digital-signatures.md)
- [Digital Workflow Automation](/blog/digital-workflow-automation.md)
- [Document Ai Vs Ocr](/blog/document-ai-vs-ocr.md)
- [Document Viewer](/blog/document-viewer.md)
- [Document Watermarking](/blog/document-watermarking.md)
- [Emerging threats: Your logging system may be an agentic threat vector](/blog/emerging-threats-your-logging-system.md)
- [app.py](/blog/extract-text-from-pdf-using-python.md)
- [How To Add Digital Signature To Pdf Using React](/blog/how-to-add-digital-signature-to-pdf-using-react.md)
- [How To Build A Dotnet Maui Pdf Viewer](/blog/how-to-build-a-dotnet-maui-pdf-viewer.md)
- [How To Build A Flutter Pdf Viewer](/blog/how-to-build-a-flutter-pdf-viewer.md)
- [or](/blog/how-to-build-a-javascript-pdf-viewer-with-pdfjs.md)
- [How To Build A Javascript Pdf Viewer](/blog/how-to-build-a-javascript-pdf-viewer.md)
- [or](/blog/how-to-build-a-nextjs-pdf-viewer.md)
- [How To Build A Powerpoint Viewer Using Javascript](/blog/how-to-build-a-powerpoint-viewer-using-javascript.md)
- [Using Yarn](/blog/how-to-build-a-react-excel-viewer.md)
- [How To Build A React Native Pdf Viewer](/blog/how-to-build-a-react-native-pdf-viewer.md)
- [How To Build A React Powerpoint Viewer](/blog/how-to-build-a-react-powerpoint-viewer.md)
- [How To Build A Reactjs File Viewer](/blog/how-to-build-a-reactjs-file-viewer.md)
- [or](/blog/how-to-build-a-reactjs-pdf-viewer-with-react-pdf.md)
- [or](/blog/how-to-build-a-reactjs-pdf-viewer.md)
- [How To Build A Reactjs Viewer With Pdfjs](/blog/how-to-build-a-reactjs-viewer-with-pdfjs.md)
- [How To Build A Vuejs Pdf Viewer With Pdfjs](/blog/how-to-build-a-vuejs-pdf-viewer-with-pdfjs.md)
- [How To Build A Vuejs Pdf Viewer](/blog/how-to-build-a-vuejs-pdf-viewer.md)
- [How To Build An Android Pdf Viewer](/blog/how-to-build-an-android-pdf-viewer.md)
- [How To Build An Angular Pdf Viewer With Ng2 Pdf Viewer](/blog/how-to-build-an-angular-pdf-viewer-with-ng2-pdf-viewer.md)
- [How To Build An Angular Pdf Viewer With Pdfjs](/blog/how-to-build-an-angular-pdf-viewer-with-pdfjs.md)
- [How To Convert Docx To Pdf Using Javascript](/blog/how-to-convert-docx-to-pdf-using-javascript.md)
- [How To Convert Docx To Pdf Using Python](/blog/how-to-convert-docx-to-pdf-using-python.md)
- [How To Convert Html To Pdf Using Html2pdf](/blog/how-to-convert-html-to-pdf-using-html2pdf.md)
- [or](/blog/how-to-convert-html-to-pdf-using-react.md)
- [or](/blog/how-to-convert-html-to-pdf-using-wkhtmltopdf-and-python.md)
- [How To Convert Word To Pdf In Nodejs](/blog/how-to-convert-word-to-pdf-in-nodejs.md)
- [or](/blog/how-to-create-a-react-js-signature-pad.md)
- [How To Create Pdfs With React To Pdf](/blog/how-to-create-pdfs-with-react-to-pdf.md)
- [How To Edit Pdfs Using Ios Pdf Library](/blog/how-to-edit-pdfs-using-ios-pdf-library.md)
- [How To Embed A Pdf Viewer In Your Website](/blog/how-to-embed-a-pdf-viewer-in-your-website.md)
- [How To Generate Pdf From Html With Nodejs](/blog/how-to-generate-pdf-from-html-with-nodejs.md)
- [base_url tells WeasyPrint where to resolve relative asset paths](/blog/how-to-generate-pdf-reports-from-html-in-python.md)
- [Open an image.](/blog/how-to-use-tesseract-ocr-in-python.md)
- [Javascript Pdf Libraries](/blog/javascript-pdf-libraries.md)
- [Linearized Pdf](/blog/linearized-pdf.md)
- [Swift Package Manager](/blog/mobile-pdf-sdk.md)
- [`elements` come from your document parser — each has a type and content.](/blog/multimodal-rag.md)
- [Nutrient Vs Conga Composer](/blog/nutrient-vs-conga-composer.md)
- [Online Document Viewer](/blog/online-document-viewer.md)
- [Open Pdf In Your Web App](/blog/open-pdf-in-your-web-app.md)
- [Pdf Page Labels](/blog/pdf-page-labels.md)
- [Pdf Sdk Compliance Security Checklist](/blog/pdf-sdk-compliance-security-checklist.md)
- [Pdf Sdk Performance Benchmark](/blog/pdf-sdk-performance-benchmark.md)
- [Pdf Ua Compliance Guide](/blog/pdf-ua-compliance-guide.md)
- [Pdfjs Annotation Editor Layer](/blog/pdfjs-annotation-editor-layer.md)
- [Pdfjs Area Annotations Canvas Capture](/blog/pdfjs-area-annotations-canvas-capture.md)
- [Pdfjs Coordinate Systems Pdf To Screen](/blog/pdfjs-coordinate-systems-pdf-to-screen.md)
- [Pdfjs Eventbus Guide](/blog/pdfjs-eventbus-guide.md)
- [Pdfjs Limitations Commercial Upgrade](/blog/pdfjs-limitations-commercial-upgrade.md)
- [Pdfjs Native Annotation Layer Forms](/blog/pdfjs-native-annotation-layer-forms.md)
- [Pdfjs Navigation Zoom Rotation](/blog/pdfjs-navigation-zoom-rotation.md)
- [Pdfjs Pdf Page Manipulation Pdf Lib](/blog/pdfjs-pdf-page-manipulation-pdf-lib.md)
- [Pdfjs React Viewer Setup](/blog/pdfjs-react-viewer-setup.md)
- [Pdfjs Rendering Overlays React Portals](/blog/pdfjs-rendering-overlays-react-portals.md)
- [Pdfjs Server Side Text Extraction](/blog/pdfjs-server-side-text-extraction.md)
- [Pdfjs Sticky Note Annotations](/blog/pdfjs-sticky-note-annotations.md)
- [Pdfjs Text Highlight Annotations](/blog/pdfjs-text-highlight-annotations.md)
- [Pdfjs Text Search Pdffindcontroller](/blog/pdfjs-text-search-pdffindcontroller.md)
- [Pdfjs Thumbnail Sidebar](/blog/pdfjs-thumbnail-sidebar.md)
- [Process Flows](/blog/process-flows.md)
- [React Native Pdf Annotation](/blog/react-native-pdf-annotation.md)
- [or](/blog/sample-blog-updated.md)
- [Open an image file.](/blog/tesseract-python-guide.md)
- [Top 5 Javascript Pdf Viewers](/blog/top-5-javascript-pdf-viewers.md)
- [Convert an HTML file to PDF.](/blog/top-ten-ways-to-convert-html-to-pdf.md)
- [Vector Pdf](/blog/vector-pdf.md)
- [Wcag2 Accessibility Requirements Documents](/blog/wcag2-accessibility-requirements-documents.md)
- [Web Sdk Is Now Headless](/blog/web-sdk-is-now-headless.md)
- [What Are Annotations](/blog/what-are-annotations.md)
- [What Is A Vpat](/blog/what-is-a-vpat.md)
- [What Is Pdf Ua](/blog/what-is-pdf-ua.md)
- [Why Pdfium Is A Trusted Platform For Pdf Rendering](/blog/why-pdfium-is-a-trusted-platform-for-pdf-rendering.md)
- [Why Your Ai Agent Hallucinates Pdf Table Data](/blog/why-your-ai-agent-hallucinates-pdf-table-data.md)

