{"id":364393,"date":"2026-09-10T08:31:48","date_gmt":"2026-09-10T08:31:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/postpdf-button-pdf-button-for-posts-pages\/"},"modified":"2026-09-10T10:18:57","modified_gmt":"2026-09-10T10:18:57","slug":"onodev77-pdf-print-button-posts-pages","status":"publish","type":"plugin","link":"https:\/\/su.wordpress.org\/plugins\/onodev77-pdf-print-button-posts-pages\/","author":23217191,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.15","stable_tag":"1.0.15","tested":"7.1","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"PostPDFButton - Add PDF Button to posts and pages","header_author":"OnoDev77","header_description":"Let visitors print or save the currently rendered frontend DOM as a multi-page PDF, preserving translated text, modern CSS, images, and page-builder layouts.","assets_banners_color":"","last_updated":"2026-09-10 10:18:57","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":40,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.15":{"tag":"1.0.15","author":"onodev77","date":"2026-09-10 10:18:57","revision":3689714}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3689560,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128}},"assets_banners":[],"assets_blueprints":{},"all_blocks":{"onodev77-pdf-print-button\/download-button":{"apiVersion":3,"name":"onodev77-pdf-print-button\/download-button","version":"1.0.14","title":"PostPDFButton - Add PDF Button to posts and pages","category":"widgets","icon":"media-document","description":"Adds a button that prints the currently rendered frontend DOM so visitors can save it as PDF.","textdomain":"onodev77-pdf-print-button-posts-pages","attributes":{"label":{"type":"string","default":"Download As PDF"}},"editorScript":"file:.\/editor.js","supports":{"html":false}}},"tagged_versions":["1.0.15"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3689560,"resolution":"1","location":"assets","locale":"","width":800,"height":600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3689560,"resolution":"2","location":"assets","locale":"","width":800,"height":600}},"screenshots":{"1":"Configure the PDF button style and placement.","2":"The \"Save as PDF\" button displayed inside a WordPress post."}},"plugin_section":[],"plugin_tags":[247474,269516,8606,51086,66418],"plugin_category":[],"plugin_contributors":[237523],"plugin_business_model":[],"class_list":["post-364393","plugin","type-plugin","status-publish","hentry","plugin_tags-pages-to-pdf","plugin_tags-pdf-button","plugin_tags-posts-to-pdf","plugin_tags-print-page","plugin_tags-save-as-pdf","plugin_contributors-onodev77","plugin_committers-onodev77"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/onodev77-pdf-print-button-posts-pages\/assets\/icon-128x128.png?rev=3689560","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/onodev77-pdf-print-button-posts-pages\/assets\/screenshot-1.png?rev=3689560","caption":"Configure the PDF button style and placement."},{"src":"https:\/\/ps.w.org\/onodev77-pdf-print-button-posts-pages\/assets\/screenshot-2.png?rev=3689560","caption":"The \"Save as PDF\" button displayed inside a WordPress post."}],"raw_content":"<!--section=description-->\n<p>PostPDFButton - Add PDF Button to posts and pages adds a configurable PDF button to frontend posts and pages.<\/p>\n\n<p>Unlike plugins that rebuild a document from stored post content, this plugin prepares the DOM that is already rendered in the visitor's browser. This means text changed by client-side translation or JavaScript before the button is clicked remains part of the printable output.<\/p>\n\n<p>The plugin uses the browser's native print engine. After the visitor clicks the button, a short \u201cPreparing your PDF\u2026\u201d overlay is shown and the browser print dialog opens. The visitor can then choose \u201cSave as PDF\u201d.<\/p>\n\n<p>Features:<\/p>\n\n<ul>\n<li>Prints the currently rendered frontend DOM.<\/li>\n<li>Preserves text already changed in the browser, including client-side translated text.<\/li>\n<li>Waits for fonts, images, image decoding and DOM changes to settle before printing.<\/li>\n<li>Supports lazy-loaded images.<\/li>\n<li>Uses native browser multi-page pagination instead of creating one giant screenshot.<\/li>\n<li>Supports A4, A5, A3, Letter, Legal and custom page sizes.<\/li>\n<li>Supports portrait and landscape orientation.<\/li>\n<li>Configurable margins.<\/li>\n<li>Optional header\/footer text and page numbers where supported by the browser.<\/li>\n<li>Site header can be included or excluded.<\/li>\n<li>Can remove common advertising blocks and comment sections from print output.<\/li>\n<li>Configurable selectors for print target, exclusions and page-break avoidance.<\/li>\n<li>Optional full-width content mode.<\/li>\n<li>Automatic button before or after content.<\/li>\n<li>Optional floating button.<\/li>\n<li>Multiple built-in button styles.<\/li>\n<li>Gutenberg block.<\/li>\n<li>Shortcode: <code>[onodev_pdf_button]<\/code>.<\/li>\n<li>Visibility controls by post type and post\/page ID.<\/li>\n<li>Per-post visibility override.<\/li>\n<li>No tracking, telemetry, remote API calls or CDN JavaScript.<\/li>\n<\/ul>\n\n<p>Because the output is produced by the visitor's browser, support for CSS features such as flexbox, grid, web fonts, SVG, backgrounds and border radius depends on that browser's print implementation and the site's own print CSS.<\/p>\n\n<h4>Client-side translation<\/h4>\n\n<p>The plugin does not fetch the original WordPress post again when preparing the page for print. It works with the DOM that exists at the moment the visitor clicks the button. If a client-side translation tool has already changed visible text in the DOM, the translated text is used for printing.<\/p>\n\n<h4>Privacy<\/h4>\n\n<p>The plugin does not send page content, visitor information, analytics or telemetry to the developer or to any external service. PDF preparation happens locally in the visitor's browser.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Open Settings &gt; PostPDFButton - Add PDF Button to posts and pages.<\/li>\n<li>The automatic \u201cDownload As PDF\u201d button is shown before post\/page content by default.<\/li>\n<li>Adjust placement, print layout and visibility settings if needed.<\/li>\n<li>You can also insert <code>[onodev_pdf_button]<\/code> or use the Gutenberg block.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20generate%20the%20pdf%20on%20an%20external%20server%3F\"><h3>Does the plugin generate the PDF on an external server?<\/h3><\/dt>\n<dd><p>No. It uses the DOM already rendered in the visitor's browser and invokes the browser's native print system.<\/p><\/dd>\n<dt id=\"why%20does%20the%20browser%20print%20dialog%20open%3F\"><h3>Why does the browser print dialog open?<\/h3><\/dt>\n<dd><p>Ordinary page JavaScript cannot silently select the browser's native \u201cSave as PDF\u201d printer or bypass the print dialog. Using the normal print dialog preserves native browser rendering and multi-page pagination.<\/p><\/dd>\n<dt id=\"does%20it%20work%20after%20client-side%20translation%3F\"><h3>Does it work after client-side translation?<\/h3><\/dt>\n<dd><p>Yes, when the translated text is present in the current DOM before the visitor clicks the PDF button.<\/p><\/dd>\n<dt id=\"can%20i%20print%20only%20the%20main%20article%20area%3F\"><h3>Can I print only the main article area?<\/h3><\/dt>\n<dd><p>Yes. Use the \u201cPrint target selector\u201d setting and enter a selector that matches the desired content wrapper on your site.<\/p><\/dd>\n<dt id=\"can%20i%20exclude%20elements%20from%20the%20pdf%3F\"><h3>Can I exclude elements from the PDF?<\/h3><\/dt>\n<dd><p>Yes. Add comma-separated CSS selectors to the exclusion setting. The plugin button itself is always excluded.<\/p><\/dd>\n<dt id=\"does%20it%20contact%20external%20services%3F\"><h3>Does it contact external services?<\/h3><\/dt>\n<dd><p>No.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.14<\/h4>\n\n<ul>\n<li>Renamed the plugin with a distinctive OnoDev77 identifier.<\/li>\n<li>Updated plugin slug\/text domain and block namespace for the new directory name.<\/li>\n<li>Improved readme wording and setup instructions.<\/li>\n<li>Removed unsupported \u201cTested up to\u201d metadata from the PHP plugin header.<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>Developer\/author metadata updated to OnoDev77.<\/li>\n<li>Readme wording generalized for compatibility with WordPress themes and page builders.<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Fix: remove print-only borders, outlines and shadows from desktop navigation links while preserving menu typography and spacing.<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Fix: normalize masthead\/header wrapper geometry to the printable page instead of retaining desktop offsets.<\/li>\n<li>Fix: keep logo and navigation inside the printable area while preserving their original visual styling.<\/li>\n<li>Changed default button label to \"Download As PDF\" and migrates the old untouched default label.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Fix: protect #masthead and all ancestors from print-scope hiding.<\/li>\n<li>Fix: force desktop navigation structures to remain visible during printing while hiding mobile toggles.<\/li>\n<li>Improved compatibility with themes that reuse modal\/mobile menu markup for desktop navigation.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Keep the site header visible when printing only the article\/content target.<\/li>\n<li>Broaden header and primary navigation detection for more themes.<\/li>\n<li>Preserve content image sizes using the actual rendered width, with A4-safe max-width clamping.<\/li>\n<li>Unify scaling for screenshots, inline download badges, and linked images.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Fixed small inline images, download badges and image buttons becoming oversized in PDF output.<\/li>\n<li>Preserves the rendered pixel size of small linked graphics while keeping large content images responsive.<\/li>\n<li>Prevents inline image buttons from being forced onto separate PDF pages by generic break-avoid rules.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Reworked Preserve page styles to use a selective, chunked pass instead of processing every DOM element, preventing long browser freezes on complex pages.<\/li>\n<li>Reworked header\/navigation preservation to keep the original DOM in place and freeze only screen-visible styling, improving logo and menu alignment in PDF output.<\/li>\n<li>Added a redesigned professional settings screen with grouped cards, clearer hierarchy, sticky save action, and live button-style preview.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Improved site-header printing by creating a frozen desktop header\/navigation snapshot before print.<\/li>\n<li>Added direct print-time removal for dynamically injected Google AdSense\/DoubleClick ad elements.<\/li>\n<li>Rechecks excluded dynamic elements immediately before printing.<\/li>\n<li>Improved button style visibility and added green, red, purple, and orange styles.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Preserve the visible desktop site header\/navigation when theme print CSS switches to a print\/mobile menu.<\/li>\n<li>Remove common Google advertising blocks from PDF by default, with a setting to disable this behavior.<\/li>\n<li>Remove comments and comment forms from PDF by default, with a setting to disable this behavior.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Improved full-width printing by expanding the runtime wrapper path for narrow flex\/grid layouts.<\/li>\n<li>Site header is now included by default, with a dedicated setting to disable it.<\/li>\n<li>Automatic button defaults to Before content.<\/li>\n<li>Added Classic, Dark, Outline, Minimal, Pill and Soft button styles.<\/li>\n<li>Migrates the development 1.0.1 defaults when upgrading.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Renamed to OnoDev77 PDF Print Button for Posts and Pages.<\/li>\n<li>Added full-width print mode for narrow theme layouts and common WordPress themes\/WordPress wrappers.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Render current frontend DOM using native browser print.<\/li>\n<li>Added font\/image\/dynamic-content waiting.<\/li>\n<li>Added shortcode, Gutenberg block, automatic and floating buttons.<\/li>\n<li>Added WordPress themes-oriented break avoidance defaults.<\/li>\n<li>Added page format, orientation, margins, optional paged-media header\/footer\/page numbers.<\/li>\n<li>Added visibility rules and per-post override.<\/li>\n<\/ul>","raw_excerpt":"Let visitors print or save the currently rendered frontend page as a multi-page PDF using the browser&#039;s native print engine.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/364393","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=364393"}],"author":[{"embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/onodev77"}],"wp:attachment":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=364393"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=364393"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=364393"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=364393"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=364393"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=364393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}