Commit Graph

180 Commits (788102ee056cd7ca89345a2054cf6248492d0d44)

Author SHA1 Message Date
Johannes 'josch' Schauer a2b969640a
src/img2pdf.py: assign the default dpi to tiff images where PIL returned its default of (1,1) 6 years ago
Johannes 'josch' Schauer 8961c78dbf
src/img2pdf.py: add commented-out debugging option for PIL's TiffImagePlugin 6 years ago
Johannes 'josch' Schauer 6c44d8cea6
src/img2pdf.py: add more rationale behind palette encoding 6 years ago
Johannes 'josch' Schauer c0ed810036
src/img2pdf.py: work around PIL not reporting a colorspace for 16bit grayscale PNGs 6 years ago
Johannes 'josch' Schauer ccca845606
src/img2pdf.py: Read bits per sample from PNG to support PNG images with 1, 2, 4 or 16 bits per sample 6 years ago
Johannes 'josch' Schauer 53685934f9
src/img2pdf.py: also reject palette images with transparency 6 years ago
Johannes 'josch' Schauer ba5a9a1dfc
Allow multipage CCITT group 4 TIFF images 6 years ago
Johannes 'josch' Schauer a628ed22f9
Add more debugging output 6 years ago
Johannes 'josch' Schauer fbcaca5e6b
big endian encoded TIFF files may have FillOrder set to lsb-to-msb and must have the bits of each byte reversed 6 years ago
Johannes 'josch' Schauer a9f4c9b665
release version 0.3.1 6 years ago
Johannes 'josch' Schauer 198c98a5f9
make pep8 compliant 6 years ago
Johannes 'josch' Schauer f5d8d86dff
Also do not re-encode CCITT Group 4 encoded TIFF images
Add additional property of input images: inverted

closes: #47
6 years ago
Johannes 'josch' Schauer b3fb2de5f6
src/img2pdf.py: fix spelling in --help output 6 years ago
Johannes 'josch' Schauer 2ad0c036b2
src/tests/input/mono.tif: set dpi to 72 6 years ago
Johannes 'josch' Schauer 1aa71e3746
release version 0.3.0 6 years ago
Johannes 'josch' Schauer 75c43de09d
Create a new PIL image before saving as TIFF to prevent libtiff errors
closes: #46
6 years ago
Johannes 'josch' Schauer eec1a25a92
add test case for ccittfaxdecode 6 years ago
Johannes 'josch' Schauer 7de174f4b5
CCITTFaxDecode filter must be in an array 6 years ago
Johannes 'josch' Schauer 48d5b4d7af
CCITTGroup4 must return empty palette 6 years ago
Johannes 'josch' Schauer d931f02709
src/tests/__init__.py: handle PNG input images properly 6 years ago
Johannes 'josch' Schauer b99fae1380
src/tests/__init__.py: don't test for color space now that we support palette PNGs 6 years ago
Johannes 'josch' Schauer ac9ba1d0f6
handle monochrome png properly 6 years ago
Johannes 'josch' Schauer eaf9de23c9
Filter must not be array for PNG output, so never make it an array 6 years ago
Johannes 'josch' Schauer 2a33ff275d
adapt test output to new handling of png input 6 years ago
Johannes 'josch' Schauer ebd8d911bb
add test grayscale input png src/tests/input/gray.png 6 years ago
Johannes 'josch' Schauer e7755f0a87
src/tests/input/normal.png: remove alpha channel 6 years ago
Johannes 'josch' Schauer 47a1e0c81e
src/img2pdf.py: do not use PNG encoding for CMYK input 6 years ago
Johannes 'josch' Schauer 3142824bab
src/tests/__init__.py: do not test animation.gif with pdfrw because it doesn't support hexadecimal palette data 6 years ago
Johannes 'josch' Schauer 84ce9bbd9c
src/img2pdf.py: do not allow transparency 6 years ago
Johannes 'josch' Schauer 90293204b2
src/img2pdf.py: use logging.warning because warn() is deprecated 6 years ago
Johannes 'josch' Schauer ade5768d72
src/img2pdf.py: expand error message about alpha channel 6 years ago
Johannes 'josch' Schauer 920506b867
Reflect the fact that we now use PNG compression in the --help output 6 years ago
Johannes 'josch' Schauer e78dd80451
Add option --pillow-limit-break to force Pillow to accept large input images 6 years ago
Johannes 'josch' Schauer d9a6c9db03
Interlaced PNGs cannot be directly embedded but have to be re-encoded 6 years ago
Johannes 'josch' Schauer 7244d2c6ed
Disallow input images with alpha channel as it cannot be preserved in the PDF and would thus make img2pdf not lossless 6 years ago
Johannes 'josch' Schauer 1d9a25dfd2
Proof of concept of using PDF DecodeParms for storing pixel data with PNG compression 6 years ago
Johannes 'josch' Schauer 9836b976d3 src/img2pdf.py: handle Pillow returning a DPI of zero (closes: #36) 7 years ago
James R. Barlow a8269391e9 Implement /UserUnit scaling to support oversized PDFs
The original PDF specification supported a maximum of 200x200" pages or
14400 PDF units. In PDF 1.6 rather than remove this limitation, Adobe
added the /UserUnit field for pages, which allows one to specify the
scaling that should be applied for user-facing numbers, while keeping
the internal limit of 14400 units.

Many real-world designs are larger than 200" in one direction. One
example is tractor feed or rolled paper which may be easier to scan in
one continuous run rather than segment into pages.

/UserUnit is independent of the pixel size and resolution of the image.

/UserUnit can also indicate very small page sizes but this is not
implemented here.
7 years ago
James R. Barlow b54617de19 Fix rawdata[:12] bytes/str comparison 7 years ago
Adam Groszer 0e76a5bd97 fixing a slew of python 2 issues 7 years ago
Johannes 'josch' Schauer 725462462b release version 0.2.4 7 years ago
Stephan Richter f626d7860f Produce port that is fully API compatible. 7 years ago
Stephan Richter 06560cd0d4 It is easy enough to create a separate class for the Py2 version. 7 years ago
Stephan Richter 719928f5f5 Declare file encoding, since it contains some non-ascii chars. 7 years ago
Stephan Richter b25098c3f0 Python 2 does not automatically convert integers to floats, so we have to be a bit more explicit. 7 years ago
Stephan Richter 18d637ea34 Make sure we are using the correct IO class in Python 2. 7 years ago
Johannes 'josch' Schauer 16993964ce restore pep8 compliance 7 years ago
Johannes 'josch' Schauer 7df29a9acc Allow to call get_layout_fun with less parameters by specifying defaults 7 years ago
Johannes 'josch' Schauer 60b2e2206a Add multiframe gif (animated gif) test case 7 years ago
Johannes 'josch' Schauer 8476e333cd src/tests/__init__.py: add support for multiframe gif tests 7 years ago
Johannes 'josch' Schauer e20fe4944c release version 0.2.3 7 years ago
Johannes 'josch' Schauer 1513ab3421 release version 0.2.2 7 years ago
Johannes 'josch' Schauer 4040e907a3 Make --help output more friendly to help2man 7 years ago
Johannes 'josch' Schauer ef36e86a46 Fix default of --producer argument in --help output to include version 7 years ago
Johannes 'josch' Schauer e4b6854eb5 src/tests/output/mono.png.pdf: remove the /Producer field 7 years ago
Johannes 'josch' Schauer fbeecd2301 Allow to not add the /Producer field to the metadata 7 years ago
Johannes 'josch' Schauer f94684c8ea If input to convert() doesn't have a write() member, then it must be str or bytes type 7 years ago
Johannes 'josch' Schauer 7c90b2c451 restore backwards compatibility and allow passing images as a list 7 years ago
Johannes 'josch' Schauer 962d4dbdfb Make pep8 compliant again 7 years ago
Johannes 'josch' Schauer c2f43a579e src/tests/output/mono.png.pdf: remove timestamps 7 years ago
James R. Barlow eedf73e73e Add test cases for CCITT G4 8 years ago
James R. Barlow c27505486e Break out TIFF G4 transcoding into its own function 8 years ago
James R. Barlow 95f84f97bc Implement automatic monochrome CCITT Group4 encoding via Pillow/libtiff 8 years ago
Jakub Wilk 0fe30a62d9 fix typos 8 years ago
Johannes 'josch' Schauer e05d2992e0 src/tests/__init__.py: adapt testcases for last commit 8 years ago
Johannes 'josch' Schauer d78b2cbdbc Fix bug where horizontal and vertical borders where switched when page size was also given. Thanks Erik./a.out| sox -c 1 -e unsigned-integer -r 8000 -t u8 - -d --buffer 32 Closes #30 8 years ago
Andrey Gursky c704e657cc update version according to release 8 years ago
Johannes 'josch' Schauer c158585618 only use jp2 to parse jpeg2000 if PIL doesn't support jpeg2000 8 years ago
Johannes 'josch' Schauer e5b0ffee6c read horizontal and vertical dpi from jpeg2000 files 8 years ago
Johannes 'josch' Schauer ef9eac7326 instead of storing a limited list of supported colorspaces and imageformats, store the items requiring special treatment but do not abort if a value other than the listed ones is supported by PIL 8 years ago
Johannes 'josch' Schauer 00c73a6691 make the separating x optional when specifying the width without the height 8 years ago
Johannes 'josch' Schauer 86552a78dc fix --fit=exact if one value is missing 8 years ago
Johannes 'josch' Schauer ad528d4feb restore feature that it is allowed to only specify width or height 8 years ago
Johannes 'josch' Schauer 3e8894c7da change MonochromeJpegError to JpegColorspaceError and add check for jpegs with alpha channel 8 years ago
Johannes 'josch' Schauer d9b2550ceb support for palette images for better GIF support 8 years ago
Johannes 'josch' Schauer edba669000 support from multi-frame images like multipage TIFF and animated GIF 8 years ago
Johannes 'josch' Schauer dbed55655a fix JPEG2000 handling after move to Python3 8 years ago
Johannes 'josch' Schauer 27015c1a6e fix testsuite after exception renaming 8 years ago
Johannes 'josch' Schauer c6d69b231b when verbose logging is enabled, print a traceback of possibly raised exceptions 8 years ago
Johannes 'josch' Schauer b6e969d267 input images can now be file like objects, binary strings with the image content or filenames 8 years ago
Johannes 'josch' Schauer cc59fbc3e4 raise exceptions instead of doing an exit() 8 years ago
James R. Barlow 900346d430 src/img2pdf.py: add get_fixed_dpi_layout_fun 8 years ago
James R. Barlow a7dba2894f Put version string in /Producer too 8 years ago
James R. Barlow 11affb6264 allow writing the pdf to a file-like object instead of storing everything in memory 8 years ago
Johannes 'josch' Schauer 31a2ce231f cap the maximum page size at 200 dpi which is the maximum supported by PDF 8 years ago
Johannes 'josch' Schauer 7160f1628d fix parsing of dpi and % units 8 years ago
Johannes 'josch' Schauer 917c173bfd set img2pdf as default /producer value 8 years ago
josch 251238b410 release version 0.2.0 - big rewrite and lots of new features
- now Python3 only
 - pep8 compliant code
 - update my email to josch@mister-muffin.de
 - move from github to gitlab.mister-muffin.de/josch/img2pdf
 - use logging module
 - add extensive test suite
 - ability to read from standard input
 - pdf writer:
      - make more compatible with the interface of pdfrw module
      - print floats which equal to their integer conversion as integer
      - do not print trailing zeroes for floating point numbers
      - print more linebreaks
      - add binary string at beginning of PDF to indicate that the PDF
        contains binary data
      - handle datetime and unicode strings by using utf-16-be encoding
 - new options (see --help for more details):
      - --without-pdfrw
      - --imgsize
      - --border
      - --fit
      - --auto-orient
      - --viewer-panes
      - --viewer-initial-page
      - --viewer-magnification
      - --viewer-page-layout
      - --viewer-fit-window
      - --viewer-center-window
      - --viewer-fullscreen
 - remove short command line options for metadata arguments
8 years ago
josch 33ee44e50d restore python3 compatibility 9 years ago
josch 18a41fc8df avoid catch-all except 9 years ago
josch 4968d58621 fix typo 9 years ago
josch f3674907d6 store times in UTC and understand YYYY-MM-DD, YYYY-MM-DDTHH:MM, YYYY-MM-DDTHH:MM:SS and everything understood by dateutil module and date --date 9 years ago
josch 81647dd06f use common variable for datetime format string 9 years ago
josch 5a1f0701a3 to allow non-ascii characters, encode strings as utf-16-be (big endian) and escape backslashes and parenthesis 9 years ago
josch 317a0ee7f2 do not encode as utf8 as pdf is ascii, add safer handling across py2/py3 9 years ago
xiota 592cdc1cdb Changes to pdf page size handling
Changes to `valid_size()`
* accept common page sizes, such as letter and a4.
* parse dimensions of format: AuxBv#, where A is width, u is units, B is height, v is units, # are options.
* accept units: in, cm, mm, pt

Changes to `convert()`:
* resize pages based on dpi calculations
* default resize images into page size (like default resize in imagemagick)
* implement exact resizing (ignore dpi; equiv to ! in imagemagick)

Created `get_ndpi()`:
* provides dpi for page resizing
* implement fill resizing (equiv to ^ in imagemagick)

Other changes:
* default dpi in global variable
9 years ago
josch 36fb9173fe add --version option and __version__ module variable and use ~git version suffix 9 years ago
josch d5fc324b7b cater for python-pil versions without close() attribute (the 3rd fix) 9 years ago
josch b90e385efe cater for python-pil versions without close() attribute (the 2nd fix) 9 years ago
josch 486361e716 cater for python-pil versions without close() attribute 9 years ago