We’ve just released a new version of PDF Newspaper, our tool to create printable versions of web articles and feeds. Here’s what’s new.
The biggest change in this release is the ability to request HTML output instead of PDF. It may seem odd to offer HTML output in an application called PDF Newspaper, but browser support for recent CSS specifications means that browsers are now quite adept at producing print layouts very similar to what we were generating before as PDF files.
The HTML view we generate contains a print stylesheet to produce a somewhat similar result to our PDF output when printing. There are a number of differences though:
- You can edit the text before printing.
- Unlike our PDF output, columns are balanced (roughly same height) in this view.
- You can convert to PDF using your own PDF creator (e.g. Acrobat) provided it has a PDF print driver.1
- Our print stylesheet will use 3 columns if you print A4 landscape or larger, 2 columns for A4 portrait, and 1 column for A5 or smaller.2
- Right-to-left languages can now be displayed.3
- If you know HTML/CSS, you can make changes to the template.4
Here’s a short video demonstrating some of the features of HTML output – mainly the multi-column CSS rules being applied in print view, based on paper size and orientation.
To load the feeds we used in the video with PDF Newspaper, use the links below:
PDF screenshots (A4)
|multi-story mode||single-story mode|
We’ve made changes to our PDF output to address problems with PDF.js rendering (used by recent versions of Firefox to render PDFs in the browser) and iOS rendering. If you used a previous version of PDF Newspaper and had trouble seeing your PDFs on Firefox or iOS devices, this new version should work better.
We also now offer a Letter template in addition to A4 and A5.
Combining stories from different sources
If you’d like to generate a newspaper by selecting articles from different sources, you’ll have to first create a feed from those articles. The easiest way to do that is to use our Feed Creator. Here you can paste URLs, one per line, and create a static feed containing only the URLs you’ve entered.
Let’s say we want to create a newspaper from the following articles:
- It’s the other Oscars - and yet again the winner slips away by John Pilger
- The Menace of the Military Mind by Chris Hedges
- Propaganda: ‘The Dominant Grand Narrative Of Our Time’ by Medialens
We would paste the URLs to these articles in the Feed Creator field provided and click Create Simple RSS. This will generate a feed containing the 3 items above:
Now if we give this feed URL to PDF Newspaper, here’s what it can produce:
PDF Newspaper 2.5 is live now at FiveFilters.org.
Using the form we provide is the easiest way to get started, but if you want to call PDF Newspaper programmatically, the following table of request parameters will tell you what PDF Newspaper can accept. These parameters should be used in a HTTP GET request to makepdf.php.
|url||string||URL of a feed or a single web article.|
|mode||multi-story (default), single-story||
|template||A4 (default), Letter, A5||Sets PDF paper size. The A4 and Letter templates produce a larger, two-column PDF. The A5 template produces a smaller, single-column PDF.|
|output||pdf (default), pdf-download, html||
|dir||auto (default), ltr, rtl||Sets text direction: auto = browser decides, ltr = left-to-right, rtl = right-to-left. This parameter currently only works for HTML output.|
|images||1 or 0 (default)||Include images. Pass 1 to enable.|
|date||1 or 0 (default)||Include date and time for each article (if available). Pass to 1 to enable.|
|sub||string||This can be a tagline, slogan, or the main title if using single story mode. If omitted, the default one set in the config file will be used.|
Multi-story parameters — These parameters only apply when multi-story mode is enabled (see mode parameter above).
|title||string||Newspaper title. If you’d like to use the default title image instead, delete the title.|
|order||desc (default) or asc||Determines how stories will be ordered by date. Pass asc for chronological ordering (oldest story in the feed appears first). Pass desc to have the latest stories shown first.|
|date_start||string||If the feed contains dates for feed items, you can restrict items returned by specifying a start date. Any items with a publish date earlier than date_start will be omitted from the output.
|date_end||string||If the feed contains dates for feed items, you can restrict items returned by specifying an end date. Any items with a publish date later than date_end will be omitted from the output. See note above about using relative and absolute dates.|
Full-Text RSS integration — When you give PDF Newspaper a URL to a web article, Full-Text RSS is automatically used to extract its content. For a partial feed, you will have to tell PDF Newspaper if you’d like it passed to Full-Text RSS for full content. (Full-Text RSS integration can be configured or disabled within the config file.)
|fulltext||1 or 0 (default)||Use for partial feeds. Runs feed through Full-Text RSS before processing result. Pass 1 to enable.|
|use_extracted_title||1 or 0 (default)||Normally feed titles take precedance over extracted titles. Pass 1 to tell Full-Text RSS to replace feed titles with those it extracts. (Requires Full-Text RSS version 3.2 or greater. Has no effect without fulltext parameter.)|
API keys — If you want to restrict access to PDF Newspaper you can specify API keys in the config file. URLs produced by PDF Newspaper can be used publically, e.g. linked from a website, so the API key should not appear in the final URL.
|api_key||string||A key that you’ve entered in the config. If you’re calling PDF Newspaper programattically, it’s better to use the key and hash parameters (see below) to hide the actual key in the HTTP request. If this parameter is used, PDF Newspaper will produce the key and hash values automatically and redirect to a new URL to hide the API key. If you’d like to link to a PDF publically while protecting your API key, make sure you copy and paste the URL that results after the redirect. If you’ve configured PDF Newspaper to require a key, an invalid key will result in an error message.|
|key||integer||This should be the index number which identifies an API key without revealing it. It must be passed along with the hash parameters. See the config file.|
|hash||string||A SHA-1 hash value of the API key (actual key, not index number) and requested URL, concatenated. It must be passed along with the key parameter. In PHP, for exmaple: $hash = sha1($api_key.$url);|
Required parameters: url must be supplied.
- New: HTML output with editable content and print stylesheet (Firefox recommended for printing)
- New: Output parameter to choose between PDF, HTML, and PDF for download
- New: Text direction parameter (only for HTML output for the time being)
- New: PDF Letter template for US users
- New: Form field to specify start date (if feed items include dates)
- New: Config option to set PDF filename - see
- New: Config option to enable/disable output caching - see options->caching
- New: Config option to for whitelisting/blacklisting hosts - see
- Font subsetting disabled in PDF output to improve iOS and PDF.js rendering
- PDF is no longer generated if there are no items to include (e.g. no articles published after start date)
- Table showing available request parameters now shown in index.php
- Full-Text RSS updated to version 3.1
- HTML Purifier updated to version 4.6.0
- SimplePie updated to version 1.3.1
- PHP Typography updated
- Humble HTTP Agent updated
- TCPDF fonts updated
- TCPDF minor update (latest version not compatible with our modifications)
- Plus other minor fixes/improvements
If you have a PDF print driver, you’ll see it in your list of printers when you go to print. If you have Acrobat, you’ll probably see ‘Adobe PDF’ in the list. If you get an error creating a PDF using Adobe PDF, go into Properties and in Adobe PDF Settings, uncheck 'Rely on system fonts only; do not use document fonts’. ↩︎
Not all browsers currently support multi-column printing. Notably, Chrome, which supports multi-column layouts in its regular view, does not support it in its print view. In our tests, Firefox (tested with version 26) and IE (version 11) had the best support for multi-column printing. ↩︎
By default we rely on the browser to decide (based on the content) whether it should show the result as right-to-left (we use dir=“auto” attribute). You can override this, however, by passing
&dir=rtlin the querystring to makepdf.php. ↩︎
To make changes to the template used in the HTML view, save a copy of
custom_html_template.htmland edit it. The custom file will be used if it exists. This only applies to users of our self-hosted package. ↩︎