I just installed my first self-written WordPress plugin, called Kalin’s PDF Creation Station, which adds a page into my admin panel where I can select any combination of pages and posts, then export them to a PDF file which is saved in the plugin directory. This has been something I’ve wanted to do for years, to be able to parse through my writings and dynamically create PDF files so that I can distribute my collections as single books, and I’ve never been able to find a way to do it until now. There’s a few other PDF creation plugins out there for WordPress, but they’re all quite limited. I based this plugin off of Marcos Rezende’s Blog as PDF and basically took his code (one of the beauties of open source is the ability to “steal” and improve upon other people’s work) and added a bunch of cool features like the ability to add pages as well as posts, to select individual pages and posts, to insert a custom title page, page titles, page headers, font size and to automatically save it to the server instead of forcing a download. I also ajaxified it so that the page never needs to reload throughout creating and deleting PDFs and altering input fields.
I have not released this plugin to the WordPress community yet because I want to test it a little more, tweak my default data, and write a decent plugin page and instructions. Hopefully I’ll be able to actually have people downloading and using it in the next couple weeks.
In the future, I hope to add a feature where PDF files will be automatically updated when you update a post, and if I can think of a good user interface, when you add new posts or pages. Then I want to replace the per-page PDF generator plugin I’m currently using with something that can be configured for each individual page and post so I don’t have a link to a PDF for a page that’s only a few paragraphs long. Then I want to create a stripped down version of the Kalin’s PDF Creation Station and pop it in a widget so that blog readers can select only the pages and posts and get a personalized PDF file. But first I need to finish the ‘change page order’ feature I’m currently working on.