mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-26 10:08:06 +02:00
Optimize PNG compression in SVG backend on Node.js
Use the environment's zlib implementation if available to get reasonably-sized SVG files when an XObject image is converted to PNG. The generated PNG is not optimal because we do not use a PNG predictor. Futher, when our SVG backend is run in a browser, the generated PNG images will still be unnecessarily large (though the use of blob:-URLs when available should reduce the impact on memory usage). If we want to optimize PNG images in browsers too, we can either try to use a DEFLATE library such as pako, or re-use our XObject image painting logic in src/display/canvas.js. This potential improvement is not implemented by this commit Tested with: - Node.js 8.1.3 (uses zlib) - Node.js 0.11.12 (uses zlib) - Node.js 0.10.48 (falls back to inferior existing implementation). - Chrome 59.0.3071.86 - Firefox 54.0 Tests: Unit test on Node.js: ``` $ gulp lib $ JASMINE_CONFIG_PATH=test/unit/clitests.json node ./node_modules/.bin/jasmine --filter=SVG ``` Unit test in browser: Run `gulp server` and open http://localhost:8888/test/unit/unit_test.html?spec=SVGGraphics To verify that the patch works as desired, ``` $ node examples/node/pdf2svg.js test/pdfs/xobject-image.pdf $ du -b svgdump/xobject-image-1.svg # ^ Calculates the file size. Confirm that the size is small # (784 instead of 80664 bytes). ```
This commit is contained in:
parent
3479a19bf0
commit
01f03fe393
7 changed files with 233 additions and 1 deletions
|
@ -50,6 +50,7 @@ function initializePDFJS(callback) {
|
|||
'pdfjs-test/unit/cmap_spec',
|
||||
'pdfjs-test/unit/crypto_spec',
|
||||
'pdfjs-test/unit/custom_spec',
|
||||
'pdfjs-test/unit/display_svg_spec',
|
||||
'pdfjs-test/unit/document_spec',
|
||||
'pdfjs-test/unit/dom_utils_spec',
|
||||
'pdfjs-test/unit/evaluator_spec',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue