summaryrefslogtreecommitdiff
path: root/source/pdf
AgeCommit message (Collapse)Author
2014-01-01don't fail on invalid object streamsSimon Bünzli
At https://code.google.com/p/sumatrapdf/issues/detail?id=2436 , there's a document with an empty xref section which since recently causes a repair to be triggered. Repairs then stop when pdf_repair_obj_stms fails on an object which isn't even required for the document to render. Such broken object streams should rather be ignored same as broken objects are ignored in pdf_init_document.
2013-12-30Bug 694564: Move pdf_lookup_page_obj to be iterativeRobin Watts
Avoid recursion to avoid stack overflows.
2013-12-24Bug 694810: Implement late file repair for PDFs.Robin Watts
Currently, if we spot a bad xref as we are reading a PDF in, we can repair that PDF by doing a long exhaustive read of the file. This reconstructs the information that was in the xref, and the file can be opened (and later saved) as normal. If we hit an object that is not in the expected place however, we cannot trigger a repair at that point - so xrefs with duff offsets in (within the bounds of the file) will never be repaired. This commit solves that by triggering a repair (just once) whenever we fail to parse an object in the expected place.
2013-12-23Bug 694712: Do not create empty Contents stream for new pages.Robin Watts
Empty Contents streams are not valid - they need a length at least. The alternative approach would be to put /Length 0 and update it later.
2013-12-23Bug 694715: Fix typo in error messageRobin Watts
Thanks to Michael Cadilhac for spotting this.
2013-12-23Bug 694794: Fix blendmode use in pdf device.Robin Watts
Previously we were setting blendmode in the created form XObjects transparency group definition. This didn't work as PDF readers don't look for it there. Now we set it in the calling stream's resources, and set it before calling the group.
2013-12-23Bug 694770: Fix typo in error message.Robin Watts
Thanks to Makoto Fujiwara for spotting this.
2013-12-17Bug 694810: Fix crash when clicking on mupdf window after failed page load.Robin Watts
If we have a NULL page, don't attempt to pass events to it.
2013-12-17Remove fz_context from pdf_cryptRobin Watts
Unused field. Also tweak some comments for clarity.
2013-12-16javascript: fix missing type destructionPaul Gardiner
2013-12-16JavaScriptCore-based implementation of the MuPDF JS engine APIPaul Gardiner
2013-11-28Bug 694127: Valgrind fix for pdf_decode_cmapRobin Watts
A poorly formed string can cause us to overrun the end of the buffer. Now we check the end of the string at each stage to avoid this.
2013-11-28Bug 694118: Fix valgrind warning caused by overflowing functionRobin Watts
We were miscalculating the offsets into a sampled functions table, causing us to overrun the end. Fixed here.
2013-11-27fix memory leak introduced with a2c945506ea2a2b58edbde84124094c6b4f69eacSimon Bünzli
fz_new_font_from_buffer keeps the buffer for the font, so callers which no longer need the data have to drop the buffer themselves explicitly.
2013-11-27Bug 694114: Fix valgrind issue.Robin Watts
I believe the implementation for revision 3 is wrong. From pdf_reference17.pdf, step 5 of Algorithm 3.5 says: 5. Do the following 19 times: Take the output from the previous invocation of the RC4 function and pass it as input to a new invocation of the function; use an encryption key generated by taking each byte of the original encryption key (obtained in step 1) and performing an XOR (exclusive or) operation between that byte and the single-byte value of the iteration counter (from 1 to 19). "the original encryption key (obtained in step 1)" is pwbuf (32 bytes) not key. Even if it was key, it wouldn't be n bytes long, but only 16.
2013-11-26Bug 694113: Solve double free causing valgrind warnings.Robin Watts
In case of an unknown function type, we free 'func'. Then we later read func->type out of the block, and drop the block. Simple solution is not to free the block initially and to let the drop of the block do it for us.
2013-11-26Add const keyword to some font function parameters.Tor Andersson
2013-11-26Import URW fonts version 1.10 converted to CFF by FontForge.Tor Andersson
2013-11-14Fix slip with use of tail pointer for the annotations listPaul Gardiner
pdf_load_annots was leaving the tail pointer pointing at the automatic variable head in the case of the page having no annotations.
2013-11-11Add hooks to load system fonts. Use them in PDF interpreter.Tor Andersson
2013-11-11Add fz_new_font_from_buffer function.Tor Andersson
Use fz_buffer to wrap and reference count data used in font.
2013-11-11Cast signature display name when reading itSebastian Rasmussen
2013-11-11Fix error message typoSebastian Rasmussen
2013-11-11Remove unused variables causing warningsSebastian Rasmussen
2013-11-08Use an end pointer for the annotation list to avoid unnecessary iterationPaul Gardiner
2013-11-06Place newly created annotations at the end of the annotation listPaul Gardiner
This fixes bug 694755. Thank you to Michael Cadihac for the patch
2013-11-05Fix bug 694730: Wrong bbox in one-point ink annotationPaul Gardiner
Zero and one-point case both lead to an empty rectangle, but the one-point case needs expanding but wasn't because fz_expand_rect treats an empty rectangle as a special case (as it should)
2013-11-05Improve stroke state function names that take the dash array length.Tor Andersson
2013-10-17Remove duplicated line.Robin Watts
Thanks to Micha for spotting this.
2013-10-16Fix cross document store object hash collisions.Robin Watts
When putting store objects into the store, ensure that they do cannot collide across documents.
2013-10-16page->contents should be a reference, not the original object.Robin Watts
2013-10-15Fix typo in page tree manipulation when inserting new pages.Tor Andersson
2013-10-14Create Contents entry in PDF write device if one doesn't exist already.Robin Watts
Avoids a SEGV on writing.
2013-10-14Handle stroke+fill operations with transparency/blendmodes.Robin Watts
When stroking and filling in a single operation, we are supposed to form the complete stroke+fill image, then blend it back, rather than filling and blending, then stroking and blending. This only matters during transparency, or with non-normal blend modes. We fix MuPDF to push a knockout group when doing such operations.
2013-10-10Use the 'rect' param to fz_clip_path.Robin Watts
fz_clip_path takes a rect parameter, but all the callers of it use NULL. In most cases they have a perfectly reasonable value that they could pass to hand anyway. Update the code to pass this value, which saves the need for the scissor stack keeping code to recalculate it.
2013-09-30make pdf_write_document again accept NULL for fz_optsSimon Bünzli
In order to prevent this from breaking again, a fz_write_options struct with default values is allocated locally and used whenever fz_opts is NULL.
2013-09-27tweak pdf_parse_actionSimon Bünzli
* Destination names are a name and not a string * Expose whether a /Launch action points to a path or a URI
2013-09-27preserve /Encrypt for documents with streamed xrefsRobin Watts
If /Encrypt is not present on an updated xref of an encrypted document, that document can no longer be opened. This is required for incremental saving. Note: Streams aren't encrypted by pdf_write_document and can't thus currently be appended to an encrypted document. In that case, saving non-incrementally will produce a working (non-encrypted) document.
2013-09-27stop checking if the result of fz_read is negativeSimon Bünzli
fz_read used to return a negative value on errors. With the introduction of fz_try/fz_catch, it throws an error instead and always returns non-negative values. This removes the pointless checks.
2013-09-27fix bug 694618Simon Bünzli
For Separation and DeviceN colorspaces, the initial color value is 1.0 for all components instead of 0.0 as for most other colorspaces. The current initialization in pdf_set_colorspace initializes for CMYK which happens to work for all non-tint colorspaces.
2013-09-24Bug 694557: Fix infinite loop in pdf_lex.Robin Watts
When we read a '>' during lexing, we try to read another char to see if it's another '>'. If not, we warn that it's unexpected, put the char back and retry. Putting the char back fails if the '>' was the last char in the stream as we will then have read EOF. We then loop and reread the '>' resulting in an infinite loop. Simple fix is to check for EOF.
2013-09-23Bug 694565: Cope with negative xref counts when reading old trailers.Robin Watts
This was causing an infinite loop.
2013-09-23Bug 694653: Watch for xref being NULL in pdf_xref_lenRobin Watts
This can occur early on during xref repair.
2013-09-13prevent heap underflow in pdf_read_new_xrefSimon Bünzli
2013-09-13Fix various compile warnings spotted by the cluster.Robin Watts
2013-09-10tolerate xobjects with invalid colorspacesSimon Bünzli
This fixes 2258_-_invalid_transparency_group_colorspace.pdf
2013-09-10correctly set indexed colors in pdf_set_colorSimon Bünzli
Required for 1879_-_Indexed_colors_wrongly_converted.pdf Also, removing broken code in the same place (where mat->v[] is overwritten right after being set in the L*a*b* case).
2013-09-10support /Alternate colorspace for ICC basedSimon Bünzli
This progresses among others Bug689803.pdf and Alternate_colorspace_for_ICCBased_not_supported.pdf
2013-09-10support jpegtables for TIFF imagesSimon Bünzli
This is required e.g. for 2314 - jpeg tables in tiff.xps. This folds fz_open_resized_dct back into fz_open_dct instead of adding further variations for calls with and without the jpegtables argument.
2013-09-10Bug 694567: prevent double-free in pdf_open_raw_filterSimon Bünzli
If opening a filter in pdf_open_crypt throws, the stream is closed in the used fz_open_* method and thus mustn't be closed again.