Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
releasenotes [2021/07/29 17:53] christian [New APIs] |
releasenotes [2021/07/29 20:10] (current) christian [PDFtalk 2.5.0] |
||
---|---|---|---|
Line 7: | Line 7: | ||
This release was triggered by Bob Nemec from HTS to improve error handling when appending PDFs. Two errors were seen: objects referenced but missing and streams with one extra byte. | This release was triggered by Bob Nemec from HTS to improve error handling when appending PDFs. Two errors were seen: objects referenced but missing and streams with one extra byte. | ||
- | The use case of appending PDFs is the topic of this release. Some internal structures were redesigned and the bugs are handled. Also, the performance for appending large files was improved. | + | The use case of **appending PDFs** is the topic of this release. Some internal structures were redesigned and the bugs are handled. Also, the performance for appending large files was improved. |
Since the HTS systems run on Gemstone, the Gemstone version of the library was updated. | Since the HTS systems run on Gemstone, the Gemstone version of the library was updated. | ||
Line 61: | Line 61: | ||
=== Improving performance for large files === | === Improving performance for large files === | ||
- | When reading many objects at once, the library was slow with certain | + | When reading many objects at once, the library was slow with large files. In this investigation, |
* Object streams were created and initialized for each access to an object inside. Now, the streams are kept alive in a cache. | * Object streams were created and initialized for each access to an object inside. Now, the streams are kept alive in a cache. | ||
- | * References from traversing the PDF objects were collected in an OrderedCollection. The visited check was done with this collection. | + | * References from traversing the PDF objects were collected in an OrderedCollection. The visited check was done with this collection. |
=== Redesigned references and tracing === | === Redesigned references and tracing === | ||
Line 70: | Line 70: | ||
Objects are picked (read) from a PDF file stream when they are needed. Originally, this was done using blocks stored in place of the value (referent) of a reference. When the value is requested, the block is evaluated and the resulting PDF object is stored as the referent. The block reads the raw object and converts it to the proper type. This can be nested and several types may apply. | Objects are picked (read) from a PDF file stream when they are needed. Originally, this was done using blocks stored in place of the value (referent) of a reference. When the value is requested, the block is evaluated and the resulting PDF object is stored as the referent. The block reads the raw object and converts it to the proper type. This can be nested and several types may apply. | ||
- | Unfortunately, | + | Unfortunately, |
While at it, the number and generation of references was extracted to an '' | While at it, the number and generation of references was extracted to an '' | ||
Line 76: | Line 76: | ||
=== Changed internal streams to bytes === | === Changed internal streams to bytes === | ||
- | The '' | + | The '' |
==== Gemstone ==== | ==== Gemstone ==== | ||
- | This release updates the Gemstone code for the library. The biggest addition is the [[postscript|PostScript]] module used with [[cmap|CMaps]] introduced in [[releasenotes# | + | This release updates the Gemstone code for the library |
=== Encoded PostScript sources === | === Encoded PostScript sources === |