Skip to content

Latest commit

 

History

History
932 lines (496 loc) · 15.1 KB

CHANGELOG.md

File metadata and controls

932 lines (496 loc) · 15.1 KB

  • Added new field to Document, xref_start. Default value is 0.
  • Added new function to Document: new_from_prev, has_object, add_page_contents, set_object
  • New structure added IncrementalDocument.
  • Support writing of PDF file with "Cross Reference Stream".
  • Cross Reference Tables now write abbreviated tables when non-consecutive object are written.

v0.26.0 (2020-09-29)

Add

  • Add as_str, as_str_mut methods to Object (#107)

Dtoa

  • dtoa may write real number in exponential format which is not allowed in PDF

Genericize

  • Genericize Content to allow AsRef<[Operation]> (#111)

Make

  • Make pom dependency optional (but default) (#112)
  • Make rayon dependency optional (#108)

Merge

  • Merge document PDF logic with some fixes (#117)

Various

  • Various improvements, updated libraries and image features (#118)

v0.25.0 (2020-06-25)

Add

  • Add indexing checks (#98)

Add

Bugfix

  • Bugfix for xref_start. (#105)

Check

  • check that the buffer is big enough for startxref (#93)

Create

  • Create rust.yml (#104)

Extend

  • extend recursion limit to non-local references (#100)

Fix

  • Fix compilation error&test error (#102)

Keep

  • keep looking for the last pattern (#94)

Limit

  • limit recursion to the number of objects (#92)

Limit

  • Limit allowed bracket depth. (#97)

Move

  • Move bracket depth checking into parsers. (#101)

Release

  • Release 0.25

Return

  • Return Result from as_array_mut() (#106)

Update

  • Update itoa and linked-hash-map (#91)

v0.24.0 (2020-02-17)

Compute

  • Compute an accurate iterator size when the page tree is sane.

Fix

  • Fix datetime parser (#89)

More

  • More permissive datetime parsing (#90)

Release

  • Release 0.24

Validate

  • Validate expected id in pom parser.
  • Validate the expected id when reading indirect objects.

v0.23.0 (2019-07-14)

Adapt

  • Adapt pom parser.

Add

  • Add error descriptions.
  • Add a proper error type and remove some more panics.

Allow

  • Allow loading a document from a memory slice.

Avoid

  • Avoid allocating an intermediate collection for iteration.
  • Avoid unwraps when already returning an Option for failure.

Error

  • Error signaling around compression and image handling.

Escape

  • Escape fix (#68)

Export

  • Export dereference function as it is useful for PDF consumers.
  • Export filters module.

Get_font_encoding

  • get_font_encoding seems more at home with Dictionary.

Handle

  • Handle stream filter chains (#66)

Hex

  • Hex fix (#67)

Implement

  • Implement LZW decompression.

Improve

  • Improve hex parsing performance.

Make

  • Make a page iterator.
  • Make Reader::read consume the Reader.
  • Make content operations faillible.

Protect

  • Protect against reference loops.
  • Protect against a corrupted page tree.

Refactor

  • Refactor a bit to allow a utility function.

Release

  • Release 0.23.0

Remove

  • Remove intermediate assignation.
  • Remove unsafe code around FilterType.
  • Remove unsafe code on get_object_mut.
  • Remove some 'if let' for readability.
  • Remove more panic paths in xref parsing.

Replace

  • Replace unwraps in processor.rs.

Return

  • Return results when appropriate.

Separate

  • Separate decompression into two functions.

Take

  • Take care of panic that I actually hit on the pom side.
  • Take care of creator.rs.

Unify

  • Unify buffer creation.

Use

  • Use lifetime ellision.
  • Use TryInto.
  • Use writeln where appropriate.
  • Use error enum in reader.
  • Use stable cloned.

v0.22.0 (2019-05-13)

Add

  • Add parsing benchmark.
  • Add nom dependency.

Also

  • Also test with nom parsing feature enabled.

Array

  • Array and dictionary parsing.

Avoid

  • Avoid using format! when writing.

Be

  • Be explicit about trait objects.

Boolean

  • Boolean and null parsing.

Content

  • Content parsing.

Duplicate

  • Duplicate pom parser for incremental replacement with nom 5.

Ease

  • Ease off on rayon a bit.

Escape

  • Escape sequence parsing.

Extern

  • extern crate is not required anymore with 2018 edition.

Fix

  • Fix last ugly parser.
  • Fix octal parser.
  • Fix pdfutil build

Float

  • Float parsing.

Header

  • Header parsing.

Hex

  • Hex string parsing.

Indirect

  • Indirect object and stream parsing.

Literal

  • Literal string syntax.

Make

  • Make sure Stream.start_position is relative to the whole file.

Merge

  • Merge remote-tracking branch 'upstream/master' into nom5
  • Merge remote-tracking branch 'upstream/master' into nom5

More

  • More 2018 edition lints.
  • More cleanup.
  • More cleanup.
  • More simplifications.

Object

  • Object id and reference parsing.

Octal

  • Octal and hexadecimal parsing.

Parallel

  • Parallel object stream parsing.

Rayon

  • Rayon usage proof of concept.

Release

  • Release 0.22.0

Remove

  • Remove pom dependency in tests.

Replace

  • Replace name parser.

Resolve

  • Resolve name collisions.

Simplify

  • Simplify lifetime annotations.

Slowly

  • Slowly replace the cute pom parser with nom.

Trailer

  • Trailer and xref start.

Turns

  • Turns out "contained" already exists in nom.

Unify

  • Unify both variants of the parsing functions.

Use

  • Use a BufWriter when saving to path.
  • Use parse_at(&self.buffer, offset) to read indirect_object
  • Use nom digit testing functions.
  • Use lifetime ellision.
  • Use nom sequence operators.

Useless

  • Useless move.

Xref

  • Xref stream and trailer parsing.
  • Xref parsing.

v0.21.0 (2019-04-26)

Avoid

  • Avoid allocating a String.

Check

  • Check offsets read from file to avoid panics
  • Check and correct Size entry of trailer dictionary

Clean

  • Clean up bytes_to_string, string_to_bytes iterators

Fix

  • Fix clippy warnings
  • Fix .editorconfig

Fixed

  • fixed finally

Redundant

  • Redundant imports with 2018 edition.

Release

  • Release 0.21.0

Update

  • Update example
  • Update Cargo.toml

Use

  • Use env_logger in pdfutil

v0.20.0 (2019-03-07)

Release

  • Release 0.20.0

Replace

  • Replace println with log macros

Use

  • Use Rust 2018
  • Use pom 3.0

v0.19.0 (2018-10-24)

Allow

  • Allow xref section has zero entries

Dictionary

  • Dictionary key type changed to Vec

Format

  • Format code with rustfmt

Improve

  • Improve codestyle (simplify loops, remove closures, use is_empty() etc.)

Move

  • Move image dependency to embed_image feature

Release

  • Release 0.19.0

Skip

  • Skip corrupt deflate stream

v0.18.0 (2018-10-05)

Able

  • Able to read stream when it's length is in object stream

Adress

  • Adress timezone formatting problem from #34

Insert

  • insert image on page

v0.17.0 (2018-09-19)

Make

  • Make chrono crate optional

Release

  • Release 0.17.0

Update

  • Update add_barcode example

v0.16.0 (2018-09-18)

Add

  • Add form xobject to page
  • Add extract_stream subcommand

Compress

  • Compress created Form xobject

Compress

  • compress page content after change

Fix

  • Fix collect_fonts_from_resources for referenced resources
  • Fix add xobject to page resources as direct object

v0.15.3 (2018-09-14)

Decompress

  • Decompress Form XObject

Disable

  • Disable auto format markdown

Fix

  • Fix bug in reading incremental updated document
  • Fix build warning
  • Fix string_to_bytes method

Hexadecimal

  • Hexadecimal strings can contain white space.

Remove

  • Remove println in extract_text

Update

  • Update example code
  • Update example

v0.15.0 (2018-02-04)

Add

  • add get_object_mut
  • add method as_array_mut

Extract

  • Extract text from specified pages

Replace

  • Replace text of specified page

v0.14.1 (2017-11-03)

Add

  • Add impl From<_> for Object for more numeric types
  • Add an Object::string_literal constructor
  • Add a dictionary! macro that creates a Dictionary
  • Add impl From<ObjectId> for Object creating Object::Reference

Derive

  • Derive Clone for lopdf::Document

Release

  • Release 0.14.0

Remove

  • Remove the Seek bound on Document::save_to

v0.13.0 (2017-10-02)

Avoid

  • Avoid decompress flate stream which has Subtype

Debug

  • Debug with lldb

Fix

  • Fix get_object for created document

Ignore

  • Ignore invalid objects when reading all object in xref table

Impl

  • impl fmt::Debug for Object

Pdfutil

  • pdfutil add extract_pages command

Read

  • Read optional space at the end of xref subsection header line

Release

  • Release 0.13.0
  • Release 0.12.0

Store

  • Store compressed stream objects and normal objects together

v0.11.0 (2017-08-21)

Release

  • Release 0.11.0

Use

  • Use itoa and dtoa to improve writing performance

v0.10.0 (2017-07-20)

Added

  • Added optional allows_compression for Stream object

Release

  • Release 0.10.0

v0.9.0 (2017-05-24)

Add

  • Add pdfutil readme

Added

  • Added unit test for load_from() and save_to()
  • Added Document::with_version + refactored save() and load()
  • Added Debug trait for lopdf::Document

Apply

  • Apply multiple operations in one command

Build

  • Build with Rust stable
  • Build with Rust beta

Fix

  • Fix delete_zero_length_streams

Fixed

  • Fixed unit tests
  • Fixed breaking API changes

Release

  • Release 0.9.0

v0.8.0 (2017-03-16)

Change

  • Change Name(String) to Name(Vec)

Delete_object

  • delete_object and delete_unused_objects

Get_pages

  • get_pages and delete_pages

Handle

  • Handle zero length stream

Release

  • Release 0.8.0

Traverse

  • Traverse objects from trailer recursively

v0.7.0 (2017-03-07)

Add

  • Add Content::decode() function

Build

  • Build on Rust 1.17

Create

  • Create String object for DateTime

Parse

  • Parse PDF datetime value

Read

  • Read xref stream in hybrid-reference file

Update

  • Update create_document example
  • Update README

v0.6.0 (2017-02-16)

Add

  • Add Stream::decompressed_content() method

Read

  • Read previous Xrefs of linearized or incremental updated document

v0.5.0 (2017-02-10)

Add

  • Add size field to Xref
  • Add Xref struct

Decode

  • Decode PNG frame after FlateDecode

Read

  • Read compressed objects from object stream
  • Read xref stream

Update

  • Update README

Use

  • Use pom 0.9.0

XrefEntry

  • XrefEntry as enum type

v0.4.0 (2017-01-29)

Add

  • Add Operation constructor
  • Add modify_text test
  • Add travis-ci build status
  • Add FAQ in Readme
  • Add print_xref_size() for debuging

Decode

  • Decode content stream

Encode

  • Encode content operations

Fix

Optimize

  • Optimize parser code

Solve

  • Solve mutual reference problem between Pages and Page objects

Trigger

  • Trigger new release to pass build on docs.rs

Update

  • Update create PDF example

v0.3.0 (2017-01-18)

Add

  • Add compress/decompress subcommands to pdfutil

Create

  • create PDF parser using pom instead of nom

Dictionary

  • Dictionary preserve key insert order

Update

  • Update README
  • Update parser to use pom 0.6.0

Use

  • Use reader to get stream length if it is a reference object

v0.2.0 (2017-01-05)

Add

  • Add pdfutil program

Fix

  • Fix parsing PDF array error

Improve

  • Improve documentation

v0.1.0 (2016-12-23)

Editor

  • Editor config

Impl

  • impl Document add_object method

Improve

  • Improve Document::save functional type

Initial

  • Initial commit

PDF

  • PDF objects and document definition

Parse

  • Parse and load PDF document

Read

  • Read objects from xref table instead of sequentially from file stream

Save

  • Save PDF document to file

Store

  • Store max_id as a field of document