Yes, the license allows you to use the product indefinitely on your WordPress site. The fee also entitles you to support and updates for 12 months from the date of purchase.

After 12 months, you are free to continue to use the software, but if you require support or updates you would need to buy a new license at that point.

As an incentive to renew annually, we will offer a 50% reduced renewal rate for customers who renew their license before their previous license expires.

When you install the premium product and enter your license key, it will tell you when your support/updates license expires, but of course you will still be welcome to use the product even with an expired support/updates license.

We believe this situation is better than a one-time purchase since you will receive updates beyond the purchase date – at least for a year – and it offers a sustainable position for support and continued product development in the future. A one-off purchase could easily leave you exposed and in need of a new solution a few months down the line.

If you can't find the answers to your questions on these pages, please get in touch with us by email:

It's always helpful if you can send us a link to a page on your site showing any problem you're having so we can see it for ourselves. Other screenshots and as much information as possible is always appreciated.

Also let us know which version of the plugin you are using.

After purchase you will receive an email containing a link to download a ZIP file containing the plugin, and you will also receive a license key.

However, the link will expire after a week or so. If you need a new download link in the future, you can obtain this from our website as follows.

Go to the Login page of our website: or by clicking on the My Account link in the main navigation.

Unless you have already set a password on your account, you will need to click Lost your password and enter the email address you used to purchase the plugin

Follow the link sent to your email address for setting a password and then logging in.

You should be taken to a page listing your purchases - click the 'My Purchases' link towards the top of the screen if not.

You can download the latest ZIP from there.

To view Upgrade options (e.g. to upgrade from 2-5 site license to an unlimited license) click 'View Licenses'.

Downloading with a Mac / Safari - installation error

Occasionally when trying to install a downloaded plugin using a Mac / Safari an error message is generated such as "The package could not be installed". This is due to the download being unzipped automatically when saved to your computer.

To fix the ZIP issue, you need to alter your Safari's default settings. You can do this by navigating Safari > Preferences > General and then uncheck "Open Safe Files After Downloading". This will prevent the download from being unzipped automatically.

You will then need to re-download the plugin ZIP file so it remains zipped. The plugin can now be uploaded the correct zipped format to your WP Admin > Plugins > Add New.

If your email address is not registered on our site

Please make sure you are trying to access the site using the email address you entered when you purchased the plugin.

If your most recent purchase was before 14 Feb 2017 then an account may not have been created automatically on our site.

In this case please get in touch via email asking us to create an account for you:

In the free version of the plugin, the only way to move between pages in a PDF Embedder embed is using the next/prev arrows in the toolbar.

The Premium (and Premium Secure) version now has functionality allowing the user to continuously scroll down through the document to all pages - using the mouse wheel, click-and-drag etc, or touch on a phone etc.

Please see the Premium demos.

It is possible to retain form fields inside an embedded PDF for users to fill in. Such PDFs should display without problems using PDF Embedder; however, there will be no way for the user to enter text into the fields and thereby save their responses.  The fields will still be intact for the user to fill offline but you would need another method for the user to submit their responses.

PDFs can be produced that are password-protected so need a password in order to be viewed. No version of the plugin supports this. The PDF Embedder Premium Secure version does allow you to embed a (non password protected) PDF in a WordPress page in such a way that it is difficult for the user to obtain the source PDF; it should also be possible to prevent access to that page without being logged in with an appropriate WordPress account, or to password-protect the whole page.

Troubleshooting Fields

If your fields are not being retained after embedding, it is likely due to how the PDF was initially created.

MS Office software seems to have problems exporting fields correctly in PDFs. If you believe that you have created proper fields in your Word document, but they just don't seem to be appearing in the exported PDF, please try the following workaround. In Word don't accept the default save as 'Word Document (*.docx)' - instead save the file as a 'Word 97-2003 Document (*.doc)' initially, and then select File > Export as PDF (*.pdf)'. This method also works for Excel Spreadsheets.

In the Premium (and Secure) version of the plugin, an optional Download button appears in the toolbar. Users can download the PDF to their computer, open it to browse using their default PDF viewer, and print from there.

However, no version of the plugin has a direct 'print' button in the embedded viewer's toolbar in your WordPress site.

Some users also ask if the Secure version allows a PDF to be printed but still make downloads difficult.

It can never be possible to allow printing but not downloading because most browsers will allow the user to "print as PDF". This has exactly the same effect as downloading the file - so you can't really have print functionality without download being just as easy.

Yes, if you purchase the PDF Embedder Premium Secure version then you can switch between 'secure' and normal modes. You should not also purchase the regular PDF Embedder Premium version.

In Settings -> PDF Embedder / Secure tab, there is an option "Send PDF media uploads to 'securepdfs' folder". If this is checked, subsequent PDF uploads will be uploaded as 'secure', and embedded as such when selected for inclusion in a page. If unchecked, uploads will go to the normal media uploads area (outside the special 'securepdfs' folder), and will be embedded as normal without 'secure' protection.

You can find out more by reading the Secure Instructions.

It is also possible to ensure your 'normal' PDFs have a download button available to your viewer, but your 'secure' PDFs do not. To do this, set the main Download Button checkbox to on or off depending on whether the bulk of your PDFs are likely to be secure or normal - do this in the 'Main Settings' tab of Settings -> PDF Embedder.

Then for individual embedded PDFs you can add a 'download' attribute to the shortcode if you wish to override the global setting. This is described under shortcode parameters - you would insert download="on" or "off" before the end of the shortcode: [pdf-embedder url="..." download="on"].

While it may be possible to use the PDF Embedder Free or PDF Embedder Premium version of the plugin on a paid account on a hosting site, it is problematic due to being a closed environment (i.e. you do not have access to security settings, htaccess, or other server tools). For this reason, it is not possible to use the PDF Embedded Secure version of the plugin on a hosted site.

It is recommended that any of the plugin versions only be used on a self-hosted WordPress(.org) website being hosted by someone other than

No version of the plugin can be installed on a basic (free) site. To understand the difference between and self-hosted WordPress sites, see here.

The PDF Embedder plugin does not collect or save any personal user data. The plugin only provides the means to display an interactive PDF viewer on your site.

The Premium and Secure versions do record the number of times a document is viewed and/or downloaded if you enable that option within the plugin settings and this is stored in your database as part of the documents metadata, but it does not record any information (name, email address, IP address, location, etc.) of the user that viewed/downloaded the document.

If you require a formal invoice for accounting purposes, please send us an email to with the following information:

  • Invoice # (located on the emailed purchase receipt)
  • Buyer name
  • Company name
  • Billing address
  • VAT / Tax number, if applicable


This error comes up if there is a caching and/or minifying plugin on the site that has cached the previous version of the plugin scripts and now does not match with the updated plugin. To rectify this error, you need to clear the cache and allow the site to reload the scripts.

Using WP Rocket, disable the option for "Remove Query Strings from static resources":

Using Autoptimize: disable the option for "Aggregate JS-files":

For other caching plugins, first disable any options for aggregate/inline JS or other static resources,  flush the cache, and do a hard reload the browser. The error should now be gone.

If it persists, exclude the following paths from your site's cache and/or minifying plugin.

Free version paths:
/wp-content/plugins/pdf-embedder/js/pdfjs/pdf-4.6.min.js, and

Premium version paths:

Secure version paths:
/wp-content/plugins/PDFEmbedder-premium-secure/js/pdfjs/pdf-4.4.1.min.js, and

Once you have excluded these paths, again  flush the cache, and do a hard reload the browser.

If after following the above steps the error persists, make a note of the file URL presented in the error message. You will need to determine how that file is being generated by your caching tool in order to prevent/exclude it.

This error comes up if there is a caching and/or minifying plugin on the site that has cached the previous version of the plugin scripts and now does not match with the updated plugin. To rectify this error, you need to clear the cache and allow the site to reload the scripts.

To prevent this error from occurring again in the future, you would need to exclude the following paths from your site's cache and/or minifying plugin.

Free version paths:
/wp-content/plugins/pdf-embedder/js/pdfjs/pdf.min.js, and

Premium version paths:
/wp-content/plugins/PDFEmbedder-premium/js/pdfjs/pdf.min.js, and

Secure version paths:
/wp-content/plugins/PDFEmbedder-premium-secure/js/pdfjs/pdf.min.js, and

Once you have excluded these paths, flush the cache and do a hard reload the browser as well; the error should now be gone.

If you are not using a caching tool on your site but are still seeing the error, the scripts maybe caching in your browser and a hard reload is required.

Browser hard reload keystrokes:

  • Windows: Ctrl + F5
  • Mac/Apple: Apple + R or Cmd + R
  • Linux: F5

Using WP Super Cache, W3 Total Cache, WP Rocket, Autoptimize, or other plugins to minify and/or cache the scripts running on your site has been known to create issues with the plugin's function. Some themes also provided caching / minifying of JavaScript. The plugin scripts are already minified so you will not be losing any efficiency or load speed by excluding them from these tools.

This error often presents as PDFs failing to load, appearing as a link, or get stuck on loading. To rectify this error, you will need to exclude the following URIs for the plugin scripts from any caching and/or minifying tools:

PDF Embedder version (free):

  • /wp-content/plugins/pdf-embedder/js/all-pdfemb-basic.min.js,
  • /wp-content/plugins/pdf-embedder/js/pdfjs/pdf.min.js, and
  • /wp-content/plugins/pdf-embedder/js/pdfjs/pdf.worker.min.js

PDF Embedder Premium version:

  • /wp-content/plugins/PDFEmbedder-premium/js/all-pdfemb-premium.min.js,
  • /wp-content/plugins/PDFEmbedder-premium/js/pdfjs/pdf.min.js, and
  • /wp-content/plugins/PDFEmbedder-premium/js/pdfjs/pdf.worker.min.js

PDF Embedder Secure version:

  • /wp-content/plugins/PDFEmbedder-premium-secure/js/all-pdfemb-premium.min.js,
  • /wp-content/plugins/PDFEmbedder-premium-secure/js/pdfjs/pdf.min.js, and
  • /wp-content/plugins/PDFEmbedder-premium-secure/js/pdfjs/pdf.worker.min.js

Note: all caching and minifying plugins differ as to where exclusions can be added. Please refer to the caching / minifying plugin's documentations for specific instructions on where and how to add these script paths as these exclusions maybe located in "hidden" Advanced settings options. The scripts should be excluded from aggregate / inline caching as well as general JS caching.

Be sure to flush any caches including ones specifically for JS after you exclude the scripts so that they can be loaded by the site again and the embed viewer should be displayed correctly once this has been done.

If the PDF doesn't display at all then please get in touch with our support team via email: Send a link to the page containing the 'broken' embedded PDF.

First, you may be able to diagnose the problem yourself - or at least find out some more information that could help the support team.

Most often, there is something else on your site (such as a plugin or theme) that is causing a conflict with PDF Embedder's Javascript code.

There are three possible approaches to diagnosing the problem.

1. Trial-and-error to find conflicting plugin/theme

In the WordPress Plugins page, try temporarily deactivating all plugins other than PDF Embedder, and switch to a simple Theme such as Twenty Seventeen.

Reload the problem page to see if the PDF now displays. If so, there must be a conflict with a Theme/Plugin. To find out which one, reactivate each one at a time and reload the page containing the PDF after each reactivation. When the PDF breaks again, you know which plugin/theme is at fault. Your next course of action may be to get in touch with us to explain your findings, or just switch plugins/themes if you are happy to do so.

If you are using a theme or plugin that enables you to create your posts using a drag & drop layout builder, such as Divi, Elementor, etc., please see the following tutorial: Using PDF Embedder with Drag & Drop Layout Builders

2. Javascript Console error messages

Sometimes the conflict causes an error message to be displayed. To look, open up the Javascript Console in your web browser's developer tools section. For example, in Chrome, go to View -> Developer -> Javascript Console.

You may need to reload the web page.

If there are any messages in red, what do they say, and do they point to a particular plugin? It may not be obvious why the error has occurred, but in any case you can send a screenshot to our support address to help our investigation.

3. Check the Javascript files are loading correctly

Also in Developer Tools (as above in 2), there is a Network tab that can show you which files are loaded into the page, and we need to make sure all the plugin's files are loading.

Once the Network tab is open, reload the page, then you can enter the text 'pdfemb' to filter the list of loaded files to those that might be relevant.

You should see at least:

all-pdfemb-premium.min.js (or -basic.min.js)
compatibility.min.js (no longer included in plugin with version 3.1.8+)

If some or all of these aren't listed - particularly the first one - then somehow your site is failing to respect the PDF Embedder plugin's request to include those files. Sometimes this happens if your Theme does not contain a wp_head or wp_footer section - which should mean something to your theme developer... As in 1 above, try switching to a simpler theme to see if that at least shows us that the theme was at fault.

Another possibility is that a caching plugin or 'Javascript optimizer/minifier' is behaving incorrectly, so you could try turning it off. Some themes offer such facilities built in. Please see for specific information on how to correct caching issues.

Seek Support

In all cases, please just get in touch if you have a problem with the plugin. Send a link to the page containing the broken PDF embed, and any information gleaned from the steps above. Just ignore the steps if they are outside your comfort zone. We have listed them so some more technically-minded users can potentially diagnose problems without assistance.


You will usually see this error in your browser because your PDF does not sit on the same domain as the current page on your site.

For example, if you access the page and see the error message:
Failed to Fetch while retrieving PDF ""
this is because the shortcode for the embedded document references the URL on whereas the page is sitting on

The "www" is important - it references a different domain to the PDF's URL that does not contain "www".

This error can also occur if an SSL certificate has been incorrectly installed where the admin side of the site is under HTTPS, but the front end of the site is under HTTP protocol or vice versa.

For security reasons, browsers are not allowed to load the PDF from a different domain. This error will also occur if you try to embed a PDF from another 3rd party site.


You will need to ensure all your PDF Embedder requires a url attribute shortcodes refer to the PDF's URL in the new preferred manner.

Sometimes, the problem might be that WordPress is configured to upload PDFs to, or something similar, perhaps due to a content-delivery plugin that is attempting to speed up your site. It may still be possible to load PDFs hosted on a different domain, at least if you have the ability to set up the configuration of that domain - see Hosting PDFs on other services such as Amazon S3.

It is also possible that a PDF URL is being prevented from loading by a browser Ad Blocker. In the browser console, this shows up as an error net::ERR_BLOCKED_BY_CLIENT. To fix this, be sure that the PDF file name does not contain any words such as advertisement, advert, ad, click, doubleclick which are trigger words for Ad Blockers.

The Failed to Fetch error occurring on GoDaddy may be a recent problem for your site that had previously worked without issue. This is due to the new CDN that GoDaddy has implemented on their hosting packages.

The cause of the issue is that GoDaddy is trying to redirect the document loading through which is resulting in a "No Access-Control-Allow-Origin header" error. The first step would be to set up a CORS rule for the CDN. The following documentation has the required information needed to permit access for the document to be loaded from a CDN:

Once you have the CORS set up correctly, this should resolve the Failed to Fetch error depending on how the CDN for your account is set up. If not, you should next have GoDaddy support create a Post Processing rule to stop anything going to .pdf to remain with the domain and URI path.

This procedure has worked successfully for other users hosting with CDNs.

Alternatively, if you do not need the CDN, you can simply disable that in your hosting settings:

You will usually see this error in your browser because your PDF does not sit on the same domain as the current page on your site.

For example, if you access the page and see the error message:
Error: URL to the PDF file must be on exactly the same domain as the current web page or Failed to Fetch (as of update v. 3.1.8 this error may appear as "Failed to Fetch") while retrieving PDF ""
this is because the shortcode for the embedded document references the URL on whereas the page is sitting on

The "www" is important - it references a different domain to the PDF's URL that does not contain "www".

For security reasons, browsers are not allowed to load the PDF from a different domain.

Let's say your site is available via both and Then that's an inconsistency that is also confusing to search engines and users.

To fix this, ask your web hosting company to make it consistent - for example, to redirect users direct from to, so everyone is using the same domain.

Then, you will need to ensure all your [pdf-embedder] shortcodes refer to the PDF's URL in the new preferred manner.

Sometimes, the problem might be that WordPress is configured to upload PDFs to, or something similar, perhaps due to a content-delivery plugin that is attempting to speed up your site. It may still be possible to load PDFs hosted on a different domain, at least if you have the ability to set up the configuration of that domain - see Hosting PDFs on other services such as Amazon S3.

It is also possible that a PDF URL is being prevented from loading by a browser Ad Blocker. In the browser console, this shows up as an error net::ERR_BLOCKED_BY_CLIENT. To fix this, be sure that the PDF file name does not contain any words such as advertisement, advert, ad, click, doubleclick which are trigger words for Ad Blockers.

If you attempt to embed the PDF viewer within a tab that is controlled by Javascript, you may find that it does not display at the correct size when the tab is opened. If you resize the browser window slightly, it should jump to the correct size. This is because the size was calculated when the tab was closed, and wasn't updated for the size of the opened tab.

You could modify the tab opening code to force a window resize event after the tab is open:

window.dispatchEvent(new Event('resize'));

If you have AJAX-style 'smooth' page transitions, perhaps provided by your theme, then you may find that the PDF viewer only displays at all when you load the page directly. Clicking on to the PDF's page from a different page may miss out on the initialization code of the plugin.

You might need to ensure that all relevant plugin Javascript files are loaded, and then fire this event to initialize the plugin after the new page content has been loaded:


If that doesn't work, the following bit of code can be tried (edit the to whatever class the tab is actually labeled with):

     jQuery('').on('click',function() {
        function() {
          window.dispatchEvent(new Event('resize'));

To be honest, we don't really feel that 'smooth page transitions' make sense in a WordPress environment where different plugins will assume a particular initialization order, so our preference would be to disable these transitions. Please understand that we can't necessarily support custom coding solutions like these, but hopefully these notes will help developers.

To ensure the menu is behind the viewer when in full screen, you could try adding the following CSS to your theme's style.css or similar:

.pdfemb-fsp-wrapper {
   z-index: 999999 !important;

You might need to increase the number to something even higher to ensure it takes priority over the 'z-index' of your Theme's header.

Some Themes have Javascript code that automatically adds scrollbars or positions other features depending on the exact height of every item on the page. However, because PDF Embedder changes height after the PDF is fully loaded, the Theme really needs to recalculate everything after the PDF loads. But unfortunately some Themes fail to account for this possibility, and they can display the page as truncated or without scrollbars when they are needed.

If the Theme cannot be fixed, a simple workaround may be to 'reserve' extra space for the full-height PDF. To do this, add some CSS code under Appearance -> Customize -> Additional CSS.

.pdfemb-viewer {
  height: 2000px !important;

You may need to experiment with the number used (2000 above) for best results.

With any problems, please email a link to the problem page to us.

If you see this error message, do you have a download manager installed on your browser? This sometimes causes problems - maybe take a look at your extensions, and also try on a different browser to see if that works. If it does, it seems likely to be limited to your original browser.

Disabling the download manager should help, but if not please send us a link to the page containing the PDF:

You may also be able to configure the download manager not to intercept PDF downloads.

When you click the link to download the ZIP file for a plugin you've purchased, you may find that it appears to be a folder of files instead of one ZIP file.

This is usually because Safari tries to be 'helpful' and unzips the ZIP immediately upon downloading. This isn't what you wanted - you need the ZIP intact.

You should normally still be able to find the original ZIP if you go to your Downloads folder, or you could try 'Compressing' the folder to recreate the ZIP for yourself.

Alternatively, you can change this behavior in Safari. Go to Preferences > General, and then uncheck the option "Open 'safe' files after downloading".

Go back to the original link and try to download the ZIP file again.

Premium Troubleshooting

Hyperlinks in your PDFs are only supported in the Premium (and Premium Secure) version of the plugin, so please make sure you are definitely using one of those versions.

If your links are all displayed as URLs e.g. in the PDF text, then the most likely explanation is that the links in your document aren't 'real links' according to the PDF format.

I know that sounds daft given that some viewer software still converts them to working links, but they do that by guessing because it starts with 'www' or 'http' etc. As far as I understand, the PDF specification doesn't suggest that behavior so you'll find that it needs to be a real link in some viewers (including ours). At the moment, the URL is technically just some text rather than a working hyperlink.

What software you are using to create the PDF? Does the hyperlink work in that software before it's exported as a PDF?

Please get in touch, sending a copy of the broken PDF:

Users of Microsoft Word: this MS Office software seems to have problems exporting hyperlinks correctly in PDFs. If you believe that you have created proper hyperlinks in your Word document, but they just don't seem to be appearing in the exported PDF, please try the following workaround. In Word don't accept the default save as 'Word Document (*.docx)' - instead save the file as a 'Word 97-2003 Document (*.doc)' initially, and then select File > Export as PDF (*.pdf)'. This method also works for Excel Spreadsheets.

You see the 'View in Full Screen' message when the PDF is embedded in too narrow a column. This is designed so that on mobile devices, the user always has to open in full screen rather than trying to grapple with the inline PDF viewer which is difficult to use in a small screen.

You can remove this feature by going to Settings -> PDF Embedder, and clicking on the Mobile tab.

Set the 'Mobile Width' to 0. This should always display the viewer inline by default, without the 'View in Full Screen' overlay, and then the user can still click the full screen icon in the toolbar to open in full screen only if they want.

If you still want the overlay to appear for mobile users then use a non-zero (i.e. somewhere in the range of 250 - 320) number in the 'Mobile Width' setting.

In Settings -> PDF Embedder within your WordPress site, there should be a License tab, and there you can enter the license key you received in your purchase email.

If there is no License tab, then you are almost certainly still using the free version of the plugin. In the Plugins page, Deactivate the free version and follow the instructions to install the Premium plugin you have purchased.

Sometimes mobile devices will cause problems:

  • Image quality is low - PDF appears pixellated and unreadable, or
  • Toolbar is difficult to locate - it keeps moving out of view

These can be caused be conflicts within your own site's settings, e.g. Theme styles.

You can try an advanced setting to see if that helps. Go to Settings -> PDF Embedder, and click the Mobile tab.

Check the box labelled 'Enable if you are experiencing quality issues on mobiles' then click 'Save Changes'.

This will add the following HTML to the head section of every page on your site:

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />

This should have the effect on most mobile browsers of disabling the browser's own zoom feature, meaning all zooming is carried out by the plugin itself. Sometimes, conflicts between the browser and the plugin can cause complications.

Please note you may also need to remove any existing <meta name="viewport" ...> tags from your theme's header.

In full screen mode (Premium versions only), the following keyboard shortcuts can be used:

Page Up / Down (Cmd + Up / Down on a Mac) - move to next/prev page

Arrow keys - pan around the current page of the PDF

Escape - exit full screen mode

You may find that when you click on the 'download' button within the PDF viewer, the PDF opens in a new tab instead of downloading.

This behavior normally happens in Chrome, and you might consider it annoying - when you download a file you want it to be downloaded to your hard drive, and then you can choose to view it from there!

It is possible to change the default behavior on Chrome so that this doesn't happen when you download PDFs. It is also possible to convince most browsers to download the file directly, so this will help all your users (not just you).

To disable this behavior just for your own Chrome installation, type chrome://plugins in the URL bar and then click the 'Disable' link underneath 'PDF Viewer'.

To force downloads of all PDFs on your WordPress site, the configuration may depend on your server so please ask your web hosting company for help. As a guideline, on Apache you could try adding the following text to the .htaccess file in your site's root folder (e.g. via FTP).

<FilesMatch "\.(?i:pdf)$">
  ForceType application/octet-stream
  Header set Content-Disposition attachment

Details for why this works can be found in this article.

This is a strange issue, and really your web hosting company may have to investigate.

You may find that your web server sometimes redirects requests for the PDF file to your home page. If you enter the PDF URL directly into the Edge URL bar you will probably see that it sends you to the homepage...

So instead of sending the PDF to the viewer, it sends the home page of your site instead... of course that causes problems!

So this is not normally an issue with the PDF Embedder plugin per se - it (correctly) detects that the 'PDF' downloaded isn't really a PDF.

Hopefully your web hosting company will be able to help here. One other customer ran into this problem and their hosting company found that their 'hotlink protection' was causing this problem, and everything was fixed once that was disabled through cPanel. In fact, you may only need to check the option in cPanel to allow direct access via a URL entered directly into the browser.

Once the PDF is served correctly by your site, the plugin should have no problems at all.

Please just send us a link to the problem page on your site if this doesn't help you.

Secure Troubleshooting

If you see 'Invalid PDF Structure' where you expected the PDF to display, this may be due to server configuration problems. Either the encrypted file isn't being streamed correctly to the browser (maybe due to gzip being applied incorrectly), or the decryption key in the browser is stale.

Reload the page to check it's not a one-off. Clear any cache (e.g. through a caching plugin), and ideally disable the cache for the page containing the secure PDF going forward. That should ensure the latest decryption key is used and may fix the problem.

In any case, please just get in touch for our help in diagnosing the problem:

This only applies if you are using the Secure version of PDF Embedder.

If you have the 'disable right click' option selected, but this doesn't seem to be effective, then most likely your PDF isn't uploaded in secure mode. Please see the instructions on how to turn on secure mode and upload the PDF again.

When you are logged in to the site as an admin and view the page containing the PDF, you should see a 'secure' marker in the toolbar if it is displaying in secure mode.

If you right-click on the embedded PDF and Inspect Element, maybe you can see the direct URL of the PDF file. This might be disconcerting since you expected the 'secure' PDF to be obscured.

However, take a look at the URL. If it does not contain 'securepdfs' then it has not uploaded in secure mode, so please see instructions above and try again.

If it does contain 'securepdfs', then copy the URL to the clipboard and try to access it directly. You should see a '403 unauthorized' message - which is great, since the PDF is supposed to be protected and only visible within the viewer. If you can downloaded the PDF direct then that's a problem, and indicates something is wrong. On non-Apache servers, extra work may be required to ensure the 'securepdfs' folders are protected against direct access. For example, see a typical configuration required for nginx.

The problem is the size of the file (in MB), unfortunately it just takes longer to process and transmit larger file sizes.

Non-secure version of the file loads more quickly because there isn't an encryption overhead and it is possible to transmit in chunks since it does not need to be encrypted.

The possible solutions are:

  • Optimize the PDF itself so that it is smaller. Perhaps try a service such as Smallpdf.
  • Fine-tune the web server (and/or upgrade it). It might be possible to upgrade the memory/processing capabilities of your server to ensure processing happens more efficiently. All of this would need your web host's involvement.
  • There is the option to cache the encrypted version of the PDF so only the first time the PDF is viewed will it be need to be encrypted. The 'Cache Encrypted PDFs' option can be checked on the Secure tab of the plugin settings.

Ultimately, if you find secure PDFs are too slow for your site, you may prefer to try uploading the PDFs in non-secure mode instead. It is a trade-off for how important you think the 'secure' functionality is in your case.

For users of our PDF Embedder Secure plugin.

If your web server is using the NGINX software at its heart (most WordPress installations run under Apache instead), then you will probably need to take extra steps to secure your /securepdfs/ folder so that the PDF Embedder Secure plugin can do its job fully.

For example, if your shortcodes show something like this:

[pdf-embedder url=""]

Try entering the url in your web browser directly. You should not be allowed to download the PDF directly.

Your web host should be able to help protect the securepdfs folder from direct access. An example configuration is as follows:

location ~ ^/(wp-content/uploads/securepdfs) {
deny all;

A couple notes when upgrading from the Premium to the Secure plugin:

  1. You will receive a new plugin download and license (available on your Purchase History dashboard). You must deactivate the Premium version of the plugin before you activate the Secure, otherwise you will receive a fatal error (only one version can be activated at one time),
  2. Any PDFs that you had previously uploaded to your site will need to be re-uploaded in order to have them placed in the "securepdfs" folder located in wp-content/uploads of your site (folder will be created automatically with the first upload).
    • You can move existing PDFs either by uploading again via the Add Media, or using FTP / your webhost's File Manager to move the files.
    • Additional steps to register the media files in the database after using FTP must be completed before the PDFs will appear in the Media library (tutorial article).
    • Any shortcodes already added to your content will need to be updated with the new file path.
  3. There is a set up guide specific to the Secure version of the plugin here:


The PDF Embedder plugin v.4.0 for the free, Premium, and Secure versions work with WordPress v.5.0 and Gutenberg Editor plugin v.4.6.1.

Open the Common Blocks menu and select the PDF Embedder:

An element will be inserted into the page / post content. Click on the generated link to navigate to the Media Library:

Select or Upload your PDF and click the "Select" button. The element will now display the URL to the document you are embedding:

With the block element selected as per screenshot above, you can also customise the specific height, width, toolbar location and behavior from the menu to the right for that particular embed. If this is left blank, the defaults configured in the plugin Settings tab will be used instead.

The plugin also works with the Classic Editor block with the Add Media button to embed the PDF normally—this is also the best way to insert a thumbnail image and have it linked to the PDF's attachment page, or use the Shortcode block to copy and paste the PDF's URL into the shortcode added manually [pdf-embedder url="path-to-pdf"]:

By default, web browsers have security policies that do not allow Javascript code to fetch files from a different domain to the web page on which the code is already running.

However, it is possible to configure Amazon S3 and other storage services to permit this, and then you'd just have to change the shortcode URL to point to the PDF on S3. i.e. [pdf-embedder url="<url to pdf on S3>"]

To do this, you must "enable CORS on S3 Buckets". To ensure that browsers are able to access the files stored on S3, follow these steps:

  • Navigate to the AWS console and find the S3 configuration area
  • Select the bucket you are using to store your assets
  • Click the ‘Properties’ tab
  • Under ‘Permissions’ click ‘Add CORS Configuration’

AWS will provide a default XML configuration that should work correctly:


However, you may prefer to limit access to your own WordPress site's domain, for security reasons:


Using CloudFront with S3

If you also use CloudFront as a CDN to serve S3 media faster, you will also need to enable Header Forwarding in CloudFront. Select the CloudFront distribution that is paired with the S3 bucket. Under Distribution Settings go to the Behaviours tab, then click the behaviour (if you have more than one, you'll need to do the following for all of them) and click Edit. Change the Forward Headers dropdown to 'Whitelist'. Select 'Origin' in the left-hand list and click 'Add' to move it to the right-hand list. Click Yes, Edit to save and then wait for CloudFront to propagate the change (approx 30 mins).

Using CloudFront standalone

It is also possible to use CloudFront to directly serve your site's media by taking your files directly from your WordPress site (not via S3 at all). They call your website a 'Custom Origin'. In this case, please follow these steps:

  1. Include the header Access-Control-Allow-Origin: * when serving PDFs on your WordPress site.

    For example in your .htaccess file on Apache:

    <FilesMatch ".pdf">
    Header set Access-Control-Allow-Origin "*"
  2. Edit your CloudFront distribution Behavior to Forward Headers and add Origin to the whitelist:

    (Image credit
  3. Invalidate the cache in the AWS console or just wait until CloudFront refreshes its cache automatically.

Secure Plugin

Please note that the Secure version of the plugin, when in secure mode, can only display PDFs that are stored on your WordPress server in its 'securepdfs' folder, and not easily via a CDN or similar.

CORS is already enabled on some Dropbox domains, so it can be possible to embed PDFs directly from Dropbox, although only if your site is running under HTTPS. Try the following. Obtain the 'share' link from Dropbox ('Copy Dropbox link' from the right-click menu in your file browser). It should be something like this:

You need to change the domain to and the dl=0 parameter to 1. So you end up with a shortcode as follows:

[pdf-embedder url=""]

If you obtain the link from a Public folder, you may only need to change the dl=0 to dl=1 in order for it to work.

The Thumbnails plugin generates images of the PDF for you. You can display the thumbnails as a grid on a page or post; however, this is something you would do as part of editing your content rather than a plugin setting or functionality.

With both plugins activated, selected the PDF you want to add to the page as a thumbnail in the grid. (If you are on WP5 and/or Gutenberg 4.6.1, use the Classic Editor block for this.)

Select Link To: Attachment Page.

Select Media: Thumbnail to use the thumbnail image. Set your Alignment to Left so that the thumbnails will "float" next to each other. See screenshot:

If done correctly, the code inserted into the page will look like:

<a href="" rel="attachment wp-att-#" title="PDF Title" target="_blank">
   <img src="" alt="" width="150" height="150" />

The end result looks like:
Please note that depending on your theme, you may need to add some CSS to fix margins and or spacing to get a full grid layout.

This method will work with both the Premium and Secure versions of the PDF Embedder plugin. If you are using the PDF Secure Embedder, you must manually activate the automatic generation of attachment pages in the Secure settings.

Generally, you will use the plugin to embed a PDF in a WordPress page through the 'Add Media' button in the page editor, selecting the PDF you want in the page. You can add further content above and below the PDF, but sometimes you just want a basic page template to show only the PDF. And if you have many PDFs to embed, manually creating these 'container pages' is time consuming.

The Premium versions of the plugin allow you to automatically generate such pages using a WordPress feature called 'Attachment Pages'.

WordPress automatically generates a page corresponding to every item uploaded to the Media Library. PDF Embedder Premium (and Premium Secure) will insert an embedded version of the PDF in the Attachment Page corresponding to any PDF in the Media Library.

To find the Attachment Page for a PDF, click once on the PDF in Media Library and then you should see a link to 'Attachment Page' on the right. You will need to view the Media Library in grid (not table) format for this to be available.

Click the link to the Attachment Page and you should see an embedded version of the PDF. You could link directly to this Attachment Page directly elsewhere in the site.

Please note that by default, Attachment Pages are not generated for PDFs uploaded in 'secure mode'. You can enable secure Attachment Pages through a setting in the Secure tab in the plugin settings ("Auto-generate Attachment Pages for Secure PDFs").

When you select a PDF from the Media Library to insert into your post, by default PDF Embedder will insert it as a shortcode: [pdf-embedder url="<url of PDF>"]. This will cause it to use the plugin's interactive viewer to display the PDF when the page is published.

You can also type the shortcode manually, and maybe you don't normally want the shortcode to be inserted automatically - perhaps most often you just want the WordPress default of a straight 'a href' link to the source PDF file. Another scenario is that some other plugins can break if they use the Media Library to select files for use elsewhere, and they just need WordPress' default link to be inserted - the pdf-embedder shortcode can break them.

To ensure the shortcode is not inserted automatically by default, you can add the following code to your Theme's functions.php or a functions plugin such as My Custom Functions or Functionality (please take backups first as incorrect editing can break your site).

add_filter('pdfemb_override_send_to_editor', 'my_pdfemb_override_send_to_editor', 10, 4);

function my_pdfemb_override_send_to_editor($shortcode, $html, $id, $attachment) {
    return $html;

This requires version 2.7.3+ to work.

PDF Embedder doesn't provide a way to accept payment from users before they are allowed to view a PDF, but PDF Embedder Secure can be used in conjunction with other plugins to ensure PDFs are not available until users have paid to access them.

Pay before downloading

You don't really need any of our plugins to force users to pay for a PDF before they can download it directly to their computer. If you want to sell PDFs in this way, check out something like Easy Digital Downloads that can store your files securely and provide a download link only once the user has paid.

Preview before paying to download

Some sites want users to be able to preview a PDF, but then not download fully until they pay for the PDF. To do this, use a combination of a 'digital sales' system (such as Easy Digital Downloads suggested in the previous section) and our PDF Embedder Secure plugin.

The easiest thing will be to maintain two copies of your PDF: one uploaded directly to a 'Download' for sale, and secured by the digital sales plugin; the other to be uploaded to your Media Library as a secure PDF. The 'secure PDF' means that it is difficult for users to obtain the original PDF directly, but they will be allowed to view it within any WordPress page on which you embed it.

So you can embed the 'secure PDF' on your public-facing website through the 'Add Media' button, perhaps with an option beneath the embedded preview PDF to 'buy the full download' through your sales plugin. You might even choose to upload a shortened version of the PDF and embed that as your preview to tempt visitors to buy the full download.

Pay to view the PDF

Membership sites might only want paying users to be able to view the PDF at all - and not be able to download it to their computer either (although it can never be possible to completely prevent a determined user from doing so). To do this, you would set up a membership site using a plugin such as s2Member. A free version of this is available in the WordPress plugin directory.

Set up s2Member on your site, integrating with PayPal so people can pay to become members. Then, with PDF Embedder Secure active on your site, you would upload your PDF to your Media Library. Create a new WordPress Page and embed your PDF there through 'Add Media' in the page editor.

For your new page, change the s2Member page level restrictions to 'level #1' or higher to ensure only paid members can view the entire page (and therefore the embedded PDF too):

Check your 'secure' PDF is not directly accessible

In either case above, if you want viewers of your PDF to be unable to obtain the PDF directly, you should check the PDF is definitely embedded in 'secure mode'. Sometimes, web server configuration can require extra steps before this is working correctly.

The URL to the PDF in the pdf-embedder shortcode should contain 'securepdfs' in it somewhere. Copy and paste the full URL to the PDF in a new browser tab. It should not be directly accessible, so you should see an 'unauthorized' or 'not found' message. If you do get to see the PDF through its URL, check the instructions to understand the plugin settings, or get in touch with us.

The default settings of the plugin will display your PDF at 'maximum width' to fit the area available to it.

If you specify a fixed width for your PDFs that is smaller than the width available, you will probably find the PDF is left-justified within the main area of your web page.

If you want to center the PDF, this really depends on your theme's CSS styles, so you might need to ask your web designer to take a closer look, but one way or another you'd need to target the following CSS element in your theme's style.css file:

div.pdfemb-viewer {
margin: 0px auto !important;

It is unlikely the above suggestion would work directly - again, it depends on the rest of your CSS and layout, but hopefully this clarifies what your web designer needs to target in the CSS.

You can also add bespoke CSS through Appearance -> Customize -> Additional CSS.

It should be possible to override the border color by adding something like this to your Theme's styles:

div.pdfemb-viewer {
    border: 1px solid red !important;

To hide the border, you would use:

div.pdfemb-viewer { 
     border: none !important; 

Of course, you might need to ask your web designer to help if you're not sure where to add that for your particular site.

The best arrangement is to have a child theme and to add the above code to the style.css there.

But the easiest method is to paste the code into Appearance -> Customize -> Additional CSS.

You can also add other CSS styles to change other aspects of the PDF Embedder, such as the button color.

To hide the toolbar, you could try:

div.pdfemb-toolbar {
   display: none !important;

With a little bit of HTML / CSS you can accomplish this. You will likely want to set a default max-width in the plugin settings or you can use the width attribute to the shortcode to limit the viewer width on specific embeds - I mention it just for future reference in case you want to set other documents at wider or narrower dimensions than your preset default (

Create a new CSS class with the following rules (you may want to add other margins to suit your theme):

.left {
     float: left; 
     margin-right: 10px; /* set a right margin to push the wrapped text off the viewer box */

Then in the page / post content using the Text (HTML) tab, wrap the embedder shortcode in a div with the new class:

<div class="left">
     [pdf embedder shortcode]

The end result:

You can set most settings in the Settings -> PDF Embedder page in WordPress. These apply to all embeds by default, but you can override the settings of individual embeds by manually adding shortcode parameters to the individual [pdf-embedder] shortcodes - see details here.

It is also possible to override the global defaults by writing PHP code, using a filter named 'pdfemb_filter_shortcode_attrs'.

For example, to add the 'pagetextbox' option to every embed so you don't have to add it to every shortcode manually (there is no global setting available for this parameter), you could add the following code to your Theme's functions.php or similar:

add_filter('pdfemb_filter_shortcode_attrs', 'mypdfshortcodes', 10, 1);

function mypdfshortcodes($atts) {
   $atts['pagetextbox'] = 'on';
   return $atts;

You could inspect the value of $atts['url'] if you want to vary the attributes based on the specific PDF file being displayed.

There is no option to automatically open up in full screen mode.

The best alternative is to create a 'full page' template in your theme that doesn't have many of the features of most pages (e.g. header menu and sidebars) and allows the content to take up most of the width of the page.

When using a theme that has a module based layout builder such as Elementor, WPBakery, DIVI Builder, Beaver Builder, etc. the reguler embed method will result in the PDF appearing as a link instead of the expected embedded viewer. Most of these drag and drop editors use their own propriety method to access the Media Gallery with breaks the automatic shortcode insertion by the PDF Embedder plugin.

A Text, HTML, Raw Code, or Shortcode module is required to insert the PDF successfully.  This will need to add this manually to the page or post content. It is suggested that the Media Gallery is kept open in another browser tab for convenience.

  1. With the layout editor, use a module that supports plain text, raw HTML, or code,
  2. Manually enter [pdf-embedder url=" "],
  3. From the Media Gallery tab, select the PDF to be embedded and copy the File URL (triple click to highlight, Ctrl+V / right-click copy),
  4. Paste the URL into the shortcode,
  5. Publish the page / post.

This method will add the required shortcode to embed the PDF so that the PDF will be displayed in the viewer on the front end of the site.

Elementor layout builder example

Divi theme builder example

Note: this code will only work with the Premium and Secure versions of the plugin and only with files served from the /wp-content/uploads directory on your server.

You will need to write a bit of PHP for this feature. The code can be added to a custom or child theme's functions.php file or by using a plugin that inserts PHP code into your site such as My Custom Functions or Functionality*.

The PHP code:

// Code for PDF Embedder Counts

function pdfemb_get_attachment_id($url, $invertscheme=false) {
   global $wpdb;

   if ($invertscheme) {
      $url = set_url_scheme($url, preg_match('#^https://#i', $url) ? 'http' : 'https');

   $attachment = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid='%s';", $url));
   if (is_array($attachment) && isset($attachment[0]) && $attachment[0] > 0) {
      return $attachment[0];
   return false;

function pdf_embedder_counts($atts, $content = "") {
   if (!isset($atts['url'])) {
      return '<b>PDF Embedder counts requires a url attribute</b>';
   $url = $atts['url'];
   $post_id = pdfemb_get_attachment_id($url);
   if (!$post_id) {
      $post_id = pdfemb_get_attachment_id($url, true);
   if ($post_id) {
      $count_views = get_post_meta($post_id, 'pdfemb-views', true);
      $count_downloads = get_post_meta($post_id, 'pdfemb-downloads', true);
      if (is_numeric($count_views)) {
         $content .= 'Views: '.$count_views;
      if (is_numeric($count_downloads)) {
         $content .= ' Downloads: '.$count_downloads;
   return $content;

add_shortcode('pdf-embedder-counts', 'pdf_embedder_counts');

You will need to use the Classic editor block if using the blocks editor or a Text/HTML/Code module with a drag and drop editor. In the page or post content, use the following shortcode replacing the path-to-pdf.pdf with your document's file path:

[pdf-embedder-counts url="path-to-pdf.pdf"]

Add the document title, thumbnail, or a link to the embed page and the end result will be something similar to this (the stats will update whenever the page is loaded):

* has no affiliation with either of these plugins