Commit Graph

244 Commits (main)

Author SHA1 Message Date
Johannes Schauer Marin Rodrigues 454d4e7775
src/img2pdf_test.py: distinguish between depth and baseDepth for tiff_rgb12 and tiff_rgb13 3 years ago
Johannes Schauer Marin Rodrigues cb2243fd10
src/img2pdf_test.py: Pillow >= 8.2.0 only uses half the palette size 3 years ago
Johannes Schauer Marin Rodrigues b8bfa98218
src/img2pdf_test.py: cater for endianess->endianness in 1.0 output format 3 years ago
Paul Ingemi 505344f83e
Add Windows support for paths containing wildcards "*" and "?"
Img2pdf accepts paths containing wildcards such as *.jpg to efficiently refer
to multiple input files that match the wildcard expression. Under POSIX
environments the command line shell is expected to perform this expansion,
however Windows requires the command line utility itself to expand the
wildcard expression.

Ideally this would be performed by argparse as described in this draft PEP:
https://mail.python.org/pipermail/python-ideas/2015-August/035244.html

Since argparse doesn't do it, this commit performs expansion directly.

Some implementation notes:
 - Wildcard characters "*" and "?" are not valid in Windows filenames
 - Code doesn't support bracket wildcards such as [0-3] on Windows since
   they are valid filename characters
 - Due to expansion, the images list collected by argparse may contain
   sub-lists. Code uses chain.from_iterable to create a flat list.
 - Paths that refer to non-existant files raise an error message, while
   wildcards that match no files are silently ignored.
4 years ago
Anna Levenberg 32b4ed1f43
Add check for empty list 4 years ago
Johannes 'josch' Schauer b2c3b641db
fix typo: complient -> compliant 4 years ago
Johannes 'josch' Schauer 11907242a5
src/img2pdf_test.py: we create our own channel-switching ICC profile 4 years ago
Johannes 'josch' Schauer 692b54ac67
release version 0.4.0 4 years ago
Johannes 'josch' Schauer c7db805dee
don't use /usr/share/color/icc/ghostscript/srgb.icc but /usr/share/color/icc/sRGB.icc because the former converts from sRGB to CIE LAB and PDF/A requires a profile from CIE LAB to sRGB (closes: #78) 4 years ago
Johannes 'josch' Schauer f0b57985ee
first stab at embedding ICC profiles 4 years ago
Johannes 'josch' Schauer 1ba02bf838
src/img2pdf_test.py: use json output instead of -verbose everywhere (the former is for machines, the latter for human consumption and can change without notice) 4 years ago
Johannes 'josch' Schauer 042aac71eb
reformat with black 4 years ago
Johannes 'josch' Schauer 7da0a00ef3
src/img2pdf_test.py: replace jpg_img check by json output 4 years ago
Johannes 'josch' Schauer 86fddab622
src/img2pdf_test.py: check for JP2 support 4 years ago
Johannes 'josch' Schauer 788102ee05
.travis.yml: use focal 4 years ago
Johannes 'josch' Schauer d92790ad26
try ghostscript version shaningans 4 years ago
Johannes 'josch' Schauer 9bd41dba1e
src/img2pdf_test.py: check that psnr is not zero 4 years ago
Johannes 'josch' Schauer 6c742be642
src/img2pdf_test.py: cater for json output of imagemagick before 6.9.9.34 4 years ago
Johannes 'josch' Schauer c506cf0b8d
try to use json output instead of identify -verbose 4 years ago
Johannes 'josch' Schauer fbb51d9083
tighten minimum imagemagick version for quantum:polarity=min-is-black 4 years ago
Johannes 'josch' Schauer 1d5be0cc9d
src/img2pdf_test.py: also catch subprocess.CalledProcessError 4 years ago
Johannes 'josch' Schauer e151ca27eb
src/img2pdf_test.py: skip tests on win32 and macos 4 years ago
Johannes 'josch' Schauer 7aed0ea0d0
src/img2pdf_test.py: fixes for Ubuntu Trusty 4 years ago
Johannes 'josch' Schauer bed0b4cdae
src/img2pdf_test.py: check for mutool >= 1.10.0 4 years ago
Johannes 'josch' Schauer 11f7db5003
src/img2pdf_test.py: explicitly convert PosixPath to str 4 years ago
Johannes 'josch' Schauer 000fc3b5ac
remove obsolete src/tests/__init__.py 4 years ago
Johannes 'josch' Schauer 0992832ab0
src/img2pdf_test.py: explicitly convert PosixPath to str 4 years ago
Johannes 'josch' Schauer 66fd7cc765
rename test.py -> src/img2pdf_test.py 4 years ago
Johannes 'josch' Schauer 5b7f93bb9a
do not allow negative values in parse_num() 4 years ago
Johannes 'josch' Schauer 663010ca61
src/img2pdf.py: tiny logic error 4 years ago
Johannes 'josch' Schauer 93f65a49c9
add --pdfa argument to attach an icc profile for PDF/A-1b compliant output 4 years ago
James R. Barlow bca3f802ac
Add support for pikepdf 4 years ago
Johannes 'josch' Schauer 1cd2674a2c
src/tests/__init__.py: recursively convert both PDFs into Python data structures and then compare for equality -- this allows comparing PDFs in which streams are compressed differently 4 years ago
Johannes 'josch' Schauer f4b296cef3
src/tests/__init__.py: make path OS agnostic (slash vs backslash) 4 years ago
Johannes 'josch' Schauer 5c7ffb09a1
src/tests/__init__.py: add support for engine instead of with_pdfrw 4 years ago
Johannes 'josch' Schauer e4dece1c9f
replace --without-pdfrw by --engine=internal or --engine=pdfrw 4 years ago
Johannes 'josch' Schauer 997fe8efd8
src/tests/__init__.py: use pikepdf instead of pdfrw 4 years ago
Johannes 'josch' Schauer 60fa588cfb
release version 0.3.6 4 years ago
Johannes 'josch' Schauer 6da2bc3aee
release version 0.3.5 4 years ago
Johannes 'josch' Schauer 082f999ac8
fix with_pdfrw assignment -- thanks Michał Górny 4 years ago
Johannes 'josch' Schauer ceba6a8223
Rip out remaining python3 support
https://www.enricozini.org/blog/2020/python/python-2-is-dead/
4 years ago
Johannes 'josch' Schauer 9449f96345
only run gui if requested with --gui even on windows (closes: #73) 4 years ago
Johannes 'josch' Schauer 0bbbc7a31a
pdfrw is now disabled by default if it's not installed (closes: #74) 4 years ago
Johannes 'josch' Schauer fb2916e6b2
release version 0.3.4 4 years ago
Johannes 'josch' Schauer 7a3daec620
add rudimentary GUI 4 years ago
Johannes 'josch' Schauer 1bb21f0c85
put read() into a different try block than open() 4 years ago
Johannes 'josch' Schauer 2b26daeb47
first draft of a tkinter gui 5 years ago
Johannes 'josch' Schauer ed6187d541
add --crop-border, --bleed-border, --trim-border and --art-border options 5 years ago
Johannes 'josch' Schauer 82706671cc
join strings that got put into the same line by black 5 years ago
Johannes 'josch' Schauer 01022487b7
add AlphaChannelError and ExifOrientationError exceptions 5 years ago
Johannes 'josch' Schauer 07903e9ef1
im was not defined -- don't print it (closes: #61) 5 years ago
Johannes 'josch' Schauer 8d7996709a
release version 0.3.3 5 years ago
Johannes 'josch' Schauer 462e1c23d5
src/img2pdf.py: reformat code with black (https://github.com/ambv/black) 5 years ago
Alexander Schlarb a282692ac1
Respect EXIF rotation tag of image (closes: !2)
Read the EXIF information from every input image and use it to correctly set
the page rotation of the resulting PDF document page.
5 years ago
Georg Sauthoff 2faeb2005d
Decompress stream to account for different possible encodings (closes: #51)
Recompressing the image stream makes the comparison robust against output
preserving changes in the zlib compress output bitstream
(e.g. between different zlib implementations/versions/releases).
Without this, some img2pdf 0.3.2 tests fail on Fedora 29/aarch64.
See also:
josch/img2pdf#51
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/R7GD4L5Z6HELCDAL2RDESWR2F3ZXHWVX/
5 years ago
Johannes 'josch' Schauer 0639dbd47c
src/tests/__init__.py: fix CommandLineTests on python3 5 years ago
Johannes 'josch' Schauer 78183c642b
allow wrapping img2pdf main() in contextlib.redirect_stdout() 5 years ago
Johannes 'josch' Schauer b39e755424
add legal and tabloid paper formats (closes: #52) 5 years ago
josch 4cebd9f15d Merge branch 'agroszer-py2' into 'master'
fixing a slew of python 2 issues

See merge request !4
6 years ago
Johannes 'josch' Schauer 68ca35f39e
release version 0.3.2 6 years ago
Johannes 'josch' Schauer 42f8ac54a8
Allow CCITT Group4 input without rows-per-strip (closes: #48) 6 years ago
Johannes 'josch' Schauer 50a3109c43
src/img2pdf.py: do not overwrite imgformat variable in loop as this will then affect later loop iterations and we need to retain its original value 6 years ago
Johannes 'josch' Schauer 03bdc33053
src/img2pdf.py: be more explicit when embedding group4 from TIFF 6 years ago
Johannes 'josch' Schauer b758b54ce8
src/img2pdf.py: Disallow TIFF input with more than 8 bits per sample because PIL will silently convert it to 8 bits per sample 6 years ago
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