v0.8 - optimise PDF::Reader::Reference#from_buffer - ruby-prof shows the match() call in this function is a real killer - add extra callbacks - list implemented features - encrypted? tagged? bookmarks? annotated? optimised? - Allow more than just page content and metadata to be parsed (see spec section 3.6.1) - bookmarks? - outline? - articles? - viewer prefs? - Don't remove comment when tokenising in the middle of a string - Tweak encoding mappings to differentiate between bytes that are invalid for an encoding, and bytes that are unchanged. poppler seems to do this in a quite reasonable way. Original Encoding -> Glyph Names -> Unicode. As of 0.6 we go straight from the Original encoding to Unicode. - detect when a font's encoding is a CMap (generally used for pre-Unicode, multibyte asian encodings), and display a user friendly error - Improve interpretation of non content stream data (ie metadata). recognise dates, etc - Support Cross Reference Streams (spec 3.4.7) v0.9 - Add a way to extract raster images - see XObjects section of spec (section 4.7) - Add a way to extract font data? Sometime - Support for CJK text (convert to UTF-8 like all other encodings. See Section 5.9 of the PDF spec) - Will require significantly improved handling of CMaps, including creating a bunch of predefined ones - Work out why specs/data/zlib*.pdf isn't parsed correctly when all the major PDF viewers can display it correctly - Ship some extra receivers in the standard package, particuarly ones that are useful for running rspec over generated PDF files - When we encounter Identity-H encoded text with no ToUnicode CMap, render the glyphs and treat them as images, as there's no sensible way to convert them to unicode - Add support for additional filters: ASCIIHexDecode, ASCII85Decode, LZWDecode, RunLengthDecode, CCITTFaxDecode, JBIG2Decode, DCTDecode, JPXDecode, Crypt? - Add support for additional encodings: - PDFDocEncoding - Identity-V(I *think* this relates to vertical text. Not sure how we'd support it sensibly) - Investigate how R->L text is handled - Add support for object streams (spec section 3.4.6)