Documentation

How to use PDFBlade

Overview

Welcome to the PDFBlade documentation! This page and its sections contain all of the information you need to get started consuming the API, converting your website links and raw HTML to formatted PDFs.

Use the links in the sidebar to skip through the different sections of this documentation, or continue scrolling down.

Getting Started

In order to start using the API, you'll have to register for an account on the website. You can click the 'Sign Up' button at the very top-right of this page, or go to the link here.

Once your account has been created, you'll be taken to the dashboard. From there, you can view your API access key by clicking the 'Show Key' button in the dashboard menu. This will reveal the key that you'll need to make calls to the API, as we'll explain further down.

Additionally, when your account was created, you were gifted 20 free conversion credits. These are used to make calls to the API, and are spent when a website or raw HTML has been converted successfully to a PDF. Only a single credit is used per conversion regardless of any options set, and by default you'll be notified via email when your account starts to run low. Additional conversion credits can then be purchased through your dashboard in the billing section.

Basic Usage

After you've obtained your authorization key, you can start making calls to the API right away. Authentication is possible in two ways:

  • By setting the x-api-key header and using your key as the value
  • By including a key parameter in the request with its value

Calls to the API may also be made via either POST or GET requests. The command below is probably the most basic call you can make to the API. After it completes the GET request, it will return back an Amazon S3 url containing google.com converted into a PDF.

Bash
curl -v https://pdfblade.com/api/convert/https://google.com&key=my-key-here&store=true

And that same command as a POST request looks like this:

Bash
curl -v --data="key=my-key-here&store=true&url=https://google.com" https://pdfblade.com/api/convert

Parameter Details

Listed below are all of the possible parameters you can include in your calls to the PDFBlade API, along with their details. All of them work as either parts of the body of a POST request, or tacked on as query variables if you're using the GET request method.

If you have a request for a new option or any suggestions for the parameters that are currently available, please don't hesitate to contact us at hello@pdfblade.com.

type NEW!

  • Required: no
  • Type: string
  • Default: pdf

Used to determine whether or not to render the URL/HTML as a full PDF or as an image.

store

  • Required: no
  • Type: boolean
  • Default: false

Used to determine whether or not the compiled PDF is cached and stored in Amazon S3. If you set this to true, we will store your PDF on our Amazon S3 bucket and return back a URL that remains active for 48 hours. Otherwise, you will get back the full PDF binary as a response. You can check your account dashboard to see if stored files are still active.

format

  • Required: no
  • Type: string
  • Default: Letter

The paper format and size of the individual pages in the compiled PDF. Available options are as follows: Letter, Legal, Tabloid, Ledger, A0, A1, A2, A3, A4, A5, or A6

margins

  • Required: no
  • Type: string
  • Default: 0

The margins (in inches) that are set around the individual pages in the compiled PDF. You can pass in a single value like 3, which will give you a margin of 3 inches around the document. Alternatively, you can use two values separated by a comma like 3,5 for top/bottom and left/right respectively, or four like 1,3,1,5 for top, right, bottom, and left respectively.

background

  • Required: no
  • Type: boolean
  • Default: false

Determines whether the background of the website is rendered in the PDF. By default, it is not. Set this to true in order to include it in your PDFs.

landscape

  • Required: no
  • Type: boolean
  • Default: false

Determines whether the rendered PDF will be in landscape mode. By default, PDFs are returned in portrait mode, but set this to true to change it to landscape.

pages

  • Required: no
  • Type: string
  • Default: (null)

Allows you to control what pages are returned in the compiled PDF. You can pass in a single value like 2 which will only return the second page, or a range of pages like 3-5. If you request a page that doesn't exist in the final PDF, it will return blank.

media

  • Required: no
  • Type: string
  • Default: screen

Gives you the ability to spoof the media agent that the site or HTML is rendered with. Possible values are screen, speech, and print.

userAgent

  • Required: no
  • Type: string
  • Default: Chromium

Gives you the ability to spoof the browser's User Agent string sent to the requested site being converted.

timeout

  • Required: no
  • Type: integer
  • Default: 30

Sets a limit (in seconds) of how long the renderer will wait for the requested site before timing out and returning back a response. If a site times out before it is rendered, a conversion credit will not be used. The minimum for this is 5 and the maximum is 99.

delay

  • Required: no
  • Type: integer
  • Default: 0

Sets a delay (in miliseconds) that the renderer will wait before beginning to convert the site to a PDF. The minimum for this is 0 and the maximum is 15000.

images

  • Required: no
  • Type: boolean
  • Default: true

Determines whether or not the renderer will include images in the compiled PDF. Set this to false to hide all images.

auth

  • Required: no
  • Type: string
  • Default: (null)

Passes through a basic http authentication to the requested website. Use the format username:password when making calls that contain this option.

css

  • Required: no
  • Type: string
  • Default: true

The value of this should be a fully-qualified URL that points to a CSS stylesheet. This is injected into the head of the requested website and can let you affect the styling of the rendered PDF.

scale NEW!

  • Required: no
  • Type: integer
  • Default: 0.75

Sets the scale of the returned browser view to better accommodate some PDF formats.

javascript

  • Required: no
  • Type: boolean
  • Default: true

Determines whether or not the renderer will include and run JavaScript on the requested website before compiling a PDF (handy to remove pop ups and other browser annoyances.). Set this to false to block all JavaScript on the requested website.

cors NEW!

  • Required: no
  • Type: boolean
  • Default: false

If you are experiencing any CORS related issues, you can set this option to true to disable web security settings for the renderer.

lang NEW!

  • Required: no
  • Type: string
  • Default: en

If you need to reder your file in specific browser language, set this option to the browser language code desired. The following language codes are supported (if you need another language code, please message us).
en,en-us,en-gb,en-au,en-ca,en-nz,en-ie,es,de,ja,da,nl,fr,el,he,hi,it,is,ko,no,pl,pt,ro,ru,sv,th,tr,uk

Code Examples

Below you'll find a few examples of PDFBlade implemented in a few popular programming languages and frameworks. If you'd like to see a particular example, or know of a wrapper package for one of these examples, please let us know at hello@pdfblade.com.

PHP
                                             use GuzzleHttp\Client;
                                             
                                             $client = new Client();
                                             $response = $client->request('POST', 'https://pdfblade.com/api/convert', [
                                             'json' => [
                                             'key'    => 'my-key-here',
                                             'store'  =>  true,
                                             'url'    =>  'https://google.com',
                                             'images' =>  false,
                                             'margins' => '1,3'
                                             ]
                                             ]);
                                             $pdfUrl = $response->getBody();
                                             
                                             return $pdfUrl;
                                        
JavaScript
                                             import axios from 'axios';
                                             
                                             axios.post('https://pdfblade.com/api/convert', {
                                                  key: 'my-key-here',
                                                  store: true,
                                                  url: 'https://google.com',
                                                  images: false,
                                                  margins: '1,3'
                                             })
                                             .then((response) => {
                                                  alert(response.data);
                                             })
                                             .catch((error) => {
                                                  console.error(error);
                                             });
                                        
C#
                                             using System.Net;
                                             using System.Collections.Specialized;
                                             
                                             using (var wb = new WebClient())
                                             {
                                                  var data = new NameValueCollection();
                                                  data["key"] = "my-key-here";
                                                  data["store"] = true;
                                                  data["url"] = "https://google.com";
                                                  data["images"] = false;
                                                  data["margins"] = "1,3";
                                                  
                                                  var response = wb.UploadValues("https://pdfblade.com/api/convert", "POST", data);
                                                  string pdfUrl = Encoding.UTF8.GetString(response);
                                             }
                                        
Python
                                             import requests
                                             
                                             data = {'key': 'my-key-here',
                                             'store': true,
                                             'url': 'https://google.com',
                                             'images': false,
                                             'margins': '1,3'}
                                             
                                             r = requests.post(url = 'https://pdfblade.com/api/convert', data = data)
                                             
                                             pdf_url = r.text
                                        

File Storage

As stated earlier in the parameter description, when you set the store option to true the returned PDF is stored in our Amazon S3 bucket and you get a URL returned as the response from the API call. This URL is active for 48 hours from when you made the request, and after that time is up it is deleted from S3 and no longer active.

While the file is active, please feel free to view it and share it as an alternative to having to recompile a PDF multiple times. Additionally, you can save the file before it expires to ensure longevity.

In your dashboard, you can see if a file is stored for a particular conversion, determine if it's still active or not, and view the link that it's stored at if it is.

Support

If you have any questions about this documentation, need help using the PDFBlade API, or have comments on the platform in general, please don't hesitate to reach out to us.

We're available by email at hello@pdfblade.com and on Twitter @pdfblade.