Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For a single WordPress page, open the public URL in a browser, choose Print, select Save as PDF, set paper size, orientation, margins and scale, then save. To give visitors a repeatable Download PDF control, use a PDF/print plugin or a custom print template. Your choice depends on whether you need one file or an ongoing feature, whether the page must be publicly reachable by a hosted converter, and how much control you need over headers, sidebars, CSS and page breaks.

Choose the right conversion method

Use case Best fit Rendering location Main consideration
One page, one time Browser Print → Save as PDF Your browser No plugin; result follows the browser’s print CSS and current page state.
Download button on posts or pages HTML to PDF Converter by html2pdf.app or PDF Generator for Posts & Pages Hosted service or visitor browser Configure layout, media mode and button placement; check current plugin terms.
Readable print view or a collection of posts Print My Blog Print-focused page in the browser Designed for print pages, PDFs and multi-post output rather than a full theme screenshot.
Clean URL such as /print/ WP-Print WordPress print endpoint, then browser PDF Resave permalinks after activation and customize the endpoint template/CSS if needed.
Hosted URL conversion PDFCrowd or html2pdf.app Provider’s servers The page must be publicly reachable; the URL is sent to the provider.

Plugin compatibility, pricing, quotas and privacy terms change. Check each plugin’s current changelog and provider documentation before deploying it on a production site.

Method 1: Save a WordPress page as a PDF in your browser

This is the fastest method and works without changing WordPress.

  1. Open the published page in a desktop browser. Use the public, logged-out URL if you want the PDF to match what visitors see.
  2. Open the browser menu and choose Print (or press Ctrl+P on Windows/Linux or Cmd+P on macOS).
  3. Set the destination to Save as PDF (Chrome/Edge) or the equivalent PDF option in your browser.
  4. Choose the paper size, orientation and margins. Turn on Background graphics only when the design requires them.
  5. Adjust scale until headings, tables and images fit. Inspect every preview page for clipped columns, orphaned headings and blank pages.
  6. Disable browser headers and footers if you do not want the URL, date or page number added. Choose a file name and save.

When the preview contains the header or sidebar

Print output is controlled primarily by print CSS. A theme can hide navigation, widgets and controls with @media print rules. If your theme does not, use a print-focused plugin or add a print stylesheet in the child theme. Never hide content only with JavaScript that may not run before printing.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Quick print CSS for a child theme

Add this to the child theme stylesheet (or the Additional CSS area, if your theme accepts print rules):

@media print {
  header, nav, aside, footer, .site-header, .site-footer,
  .sidebar, .comments, .print-button { display: none !important; }
  main, .content-area, .entry-content { width: 100% !important; max-width: none !important; }
  a { color: #000; text-decoration: none; }
  img, table { max-width: 100%; }
  h1, h2, h3 { break-after: avoid; }
  pre, blockquote, table, figure { break-inside: avoid; }
}

Preview again after changing CSS. Fonts, lazy-loaded images, animations and client-side content can still differ between the screen and print render.

Method 2: Add a Download PDF button with HTML to PDF Converter

The HTML to PDF Converter plugin by html2pdf.app lets visitors save a WordPress page or post as a PDF. Its documented shortcode is [html2pdf text="Save as PDF"]; it can also add an automatic button for selected post types.

Installation and button placement

  1. In WordPress, open Plugins → Add New, search for HTML to PDF Converter, install the plugin created by html2pdf.app, and activate it.
  2. Place [html2pdf text="Save as PDF"] in the post or page content, a widget, or a template location supported by the plugin.
  3. In the plugin settings, select the post types that should receive an automatic button, if you prefer not to add shortcodes manually.
  4. Choose screen or print media. Use print when your print stylesheet removes navigation and sidebars; use screen when the on-screen layout is the intended design.
  5. Set A4 or Letter, portrait or landscape, margins and any custom dimensions. Save settings and test while logged out.

Remove theme chrome from the rendered file

Add the documented html2pdf_hide class to elements that should not appear, such as the header, sidebar and button itself. The plugin also adds an html2pdf-rendering body class during rendering, which you can target in CSS:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
.html2pdf-rendering .site-header,
.html2pdf-rendering .sidebar,
.html2pdf-rendering .site-footer,
.html2pdf-rendering .html2pdf-button {
  display: none !important;
}

The converter fetches the public page URL and sends the URL plus conversion settings to https://api.html2pdf.app/v1/generate. Do not use this workflow for content that cannot be reached without a login unless the provider explicitly supports authenticated fetching.

Method 3: Create a print page or multi-post PDF with Print My Blog

Print My Blog is suited to a clean reading copy, a series of posts or an eBook-style collection. It loads selected content into a print-focused page that you then send to the browser’s PDF destination.

Useful shortcodes

  • [pmb_print_buttons] adds print controls.
  • [pmb_print_page_url format=pdf] creates a PDF-format print-page link.

These shortcodes can be placed in content, widgets or templates. Configure which posts, taxonomies and metadata are included, open the generated print page, then use the browser’s print dialog to save it.

Method 4: Give each post a clean /print/ endpoint with WP-Print

WP-Print adds a print endpoint for posts, pages and custom post types. It can include content, selected comments, images and featured images while leaving out the theme’s navigation and sidebar.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Install and activate WP-Print.
  2. Open its settings and choose the post types, image behavior and comments you want.
  3. Resave permalinks at Settings → Permalinks → Save Changes. This registers the endpoint after activation.
  4. Open a post’s print URL, verify the layout, and use the browser’s Save as PDF destination.
  5. For branding or page-break changes, copy the plugin’s template and CSS into your theme as documented by the plugin, then maintain those overrides when the plugin updates.

Method 5: Generate the PDF in the visitor’s browser

PDF Generator for Posts & Pages adds a Download PDF button for posts, pages and custom post types. Its listing says it uses React PDF renderer in the visitor’s browser, without server-side processing or temporary files stored on your host. This can reduce server work, but the output is governed by the plugin’s layout configuration and the visitor’s browser rather than a server-side copy of your theme.

Use this approach when client-side generation and local processing are acceptable. Test long posts, complex tables, web fonts and images on the browsers your audience actually uses.

Hosted URL conversion with PDFCrowd

PDFCrowd’s WordPress documentation describes selecting which version of a page is used for the PDF and recommends a public URL that anyone can open without logging in. Treat it as a hosted-service dependency: verify current pricing, limits, retention and privacy terms, and avoid sending confidential or unpublished URLs unless your contract and configuration allow it.

Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server. It can capture a rendered WordPress URL as PNG, JPEG, WebP or PDF with one request. Before capture it accepts cookie/consent banners and removes more than 60 known consent platforms, newsletter popups and chat widgets; each step can be disabled. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and the response identifies the result with X-Page-Verdict and X-Billed headers.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com/your-wordpress-page -o page.webp

Python

import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://example.com/your-wordpress-page"},
    timeout=90,
)
r.raise_for_status()
open("page.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({
  access_key: 'YOUR_API_KEY',
  url: 'https://example.com/your-wordpress-page'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const fs = await import('node:fs/promises');
await fs.writeFile('page.webp', Buffer.from(await res.arrayBuffer()));

See the ScreenshotNeo documentation for the full parameter set. Relevant options include full-page capture with lazy images loaded, a CSS-selector element, dark mode, 12 device presets or a custom viewport, retina scale, PDF paper size/margins/orientation/page ranges, custom CSS and JavaScript, clicks, waits (selector, delay or network idle), blocked ads/trackers/requests/resource types, custom headers/cookies/user agent/Authorization, timezone and geolocation, transparent backgrounds, resizing, chosen cache TTL, signed image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, usage reporting and an OpenAPI specification. Common parameter names used by other screenshot APIs also work.

WordPress-specific API considerations

  • Use a published URL; a private preview or localhost address is not reachable by an external service.
  • Use a wait-for-selector or network-idle condition when a page loads content asynchronously.
  • Pass authentication headers or cookies only when your access policy permits external processing.
  • Choose PDF output when pagination matters; choose an image when you need a visual snapshot for a card, archive or social workflow.

ScreenshotNeo has every feature on every plan: 1,000 shots per month free with no card, then Starter $5 for 3,000, Growth $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000 and Business $249 for 1,000,000. Yearly billing provides two months free. Create a free ScreenshotNeo account to start with 1,000 screenshots a month and no card.

Make WordPress PDFs readable and stable

Control page breaks

Keep headings with the following paragraph using break-after: avoid, and keep tables, figures and code blocks together with break-inside: avoid. Very large tables may still split because the print engine must fit them on paper; test landscape orientation for wide data.

Handle images and fonts

Use absolute image URLs, provide width and height attributes, and avoid lazy-loading that waits for scrolling unless your converter explicitly scrolls the full page. Web fonts can fall back or load late; wait for network idle or use a system font in the print stylesheet when consistency matters.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Keep links useful on paper

For a PDF intended for offline reading, consider a print rule that appends URLs after links, but do not do this for navigation menus. Remove hover-only controls and interactive elements that have no meaning on paper.

Respect access and privacy

A hosted converter or API can only fetch what it can reach. Password-protected, membership-only and staging pages require an authenticated workflow or a local browser print. Review provider retention and processing terms before sending personal, embargoed or regulated content.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting

The PDF is blank or shows a login page

Confirm the URL is publicly reachable in an incognito window. A hosted service cannot use your WordPress admin session. For private content, print locally while authenticated or configure an explicitly supported authenticated request.

The header, sidebar or cookie banner remains

Select print media, add print CSS, or apply the plugin’s hide class to those elements. Consent banners injected after page load may need a wait condition or a converter that handles them before rendering.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Images or fonts are missing

Check that assets are served over HTTPS, are not blocked by hotlink protection, and finish loading before capture. Replace scroll-triggered lazy loading with eager loading for print, or wait for a selector/network idle condition.

Text or columns are clipped

Reduce print scale, switch to landscape, use narrower table columns and set images to max-width:100%. A page designed for a wide screen cannot always fit Letter or A4 without layout changes.

The WP-Print URL returns 404

Resave permalinks at Settings → Permalinks. If a security or caching plugin rewrites requests, exclude the print endpoint and clear caches.

The hosted conversion is slow or fails intermittently

Test the page without optimization plugins, remove scripts that never finish, and set a sensible wait rather than an arbitrary long delay. Check the provider’s current status, limits and response details; do not assume a timeout means the WordPress page itself is unavailable.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Decision checklist

  • One file: browser Print → Save as PDF.
  • Button on individual posts: HTML to PDF Converter or a client-side PDF Generator.
  • Print collection or eBook: Print My Blog.
  • Dedicated clean URL: WP-Print.
  • Automated captures, PDFs or many URLs: ScreenshotNeo API or MCP server.
  • Confidential or login-only content: prefer local printing unless an approved authenticated workflow exists.

Frequently asked questions

Can WordPress convert a page to PDF without a plugin?

Yes. Open the page in a browser, use Print, select Save as PDF and adjust the print settings. WordPress itself does not need to be modified for a one-off file.

Will a PDF exactly match my WordPress page?

Not necessarily. Print engines apply print CSS and can render fonts, JavaScript state, images and cross-origin assets differently from the screen. Preview the file and design a print stylesheet for repeatable output.

Do visitors need a WordPress account to download a PDF?

No, if the page and the conversion endpoint are public. A private or membership page still requires an authenticated method and should not be exposed through a publicly accessible hosted converter.

Frequently Asked Questions

Can I convert a password-protected WordPress page with a hosted converter?

Usually not with a plain public-URL workflow. Use a local browser while signed in, or an authenticated integration that the provider explicitly documents and that your privacy policy permits.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Which output should I choose for a long article with tables?

Use PDF with controlled paper size, margins and page ranges, then test landscape orientation and page-break CSS for wide tables. An image format is better for a visual snapshot, not a paginated document.

How can I automate PDFs for many WordPress URLs?

Use an API workflow such as ScreenshotNeo’s asynchronous or bulk capture options, or script the browser-print process only when local authenticated access is required.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.