2eabebb513
use context manager instead of manually closing BytesIO and PIL.Image
2021-04-28 15:37:44 +02:00
02c85a50ad
move closing code into its own function
2021-04-14 08:25:18 +02:00
c97ce34023
raise exception if border is larger than page size
2021-04-13 13:10:57 +02:00
81325d3998
fix page border computation ( closes : #92 )
2021-04-13 13:10:34 +02:00
8d2ae0f64e
fix reading from stdin
2021-04-13 08:12:33 +02:00
d29c596fe7
add support for MPO images ( closes : #93 )
2021-04-12 22:57:51 +02:00
cd1088a5a9
format with black
2021-04-12 14:13:34 +02:00
2a8779295f
write out pil format as debug message
2021-04-12 14:13:19 +02:00
6cd819d28f
do not use root logger for logging
2021-04-12 14:12:14 +02:00
c48e1dbb1e
use sys.exit() as exit might not be defined under windows -- see #94
2021-04-12 06:52:27 +02:00
d08d8c5be9
src/img2pdf_test.py: compare icc images as non-exact
2021-04-12 06:27:36 +02:00
0e4f0047b2
src/img2pdf_test.py: refactor comparison code to remove code duplication
2021-04-12 06:27:36 +02:00
0ce25d08c2
src/img2pdf_test.py: also draw RGB letters to identify colors
2021-04-12 06:27:36 +02:00
c5fd43e851
src/img2pdf_test.py: numpy.float got deprecated in NumPy 1.20
2021-04-12 06:16:05 +02:00
454d4e7775
src/img2pdf_test.py: distinguish between depth and baseDepth for tiff_rgb12 and tiff_rgb13
2021-04-07 12:23:01 +02:00
cb2243fd10
src/img2pdf_test.py: Pillow >= 8.2.0 only uses half the palette size
2021-04-07 12:23:01 +02:00
b8bfa98218
src/img2pdf_test.py: cater for endianess->endianness in 1.0 output format
2021-04-07 08:06:59 +02:00
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.
2020-10-05 10:28:08 +02:00
Anna Levenberg
32b4ed1f43
Add check for empty list
2020-09-22 16:23:17 +02:00
b2c3b641db
fix typo: complient -> compliant
2020-08-27 02:48:26 +02:00
11907242a5
src/img2pdf_test.py: we create our own channel-switching ICC profile
2020-08-09 22:03:47 +02:00
692b54ac67
release version 0.4.0
2020-08-07 08:05:27 +02:00
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 )
2020-08-07 00:20:44 +02:00
f0b57985ee
first stab at embedding ICC profiles
2020-08-07 00:13:53 +02:00
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)
2020-08-06 20:25:20 +02:00
042aac71eb
reformat with black
2020-08-05 08:13:52 +02:00
7da0a00ef3
src/img2pdf_test.py: replace jpg_img check by json output
2020-08-05 08:11:39 +02:00
86fddab622
src/img2pdf_test.py: check for JP2 support
2020-08-05 01:12:59 +02:00
788102ee05
.travis.yml: use focal
2020-08-05 00:48:15 +02:00
d92790ad26
try ghostscript version shaningans
2020-08-05 00:10:00 +02:00
9bd41dba1e
src/img2pdf_test.py: check that psnr is not zero
2020-08-04 23:54:11 +02:00
6c742be642
src/img2pdf_test.py: cater for json output of imagemagick before 6.9.9.34
2020-08-04 23:29:42 +02:00
c506cf0b8d
try to use json output instead of identify -verbose
2020-08-04 13:07:40 +02:00
fbb51d9083
tighten minimum imagemagick version for quantum:polarity=min-is-black
2020-08-04 09:30:03 +02:00
1d5be0cc9d
src/img2pdf_test.py: also catch subprocess.CalledProcessError
2020-08-03 18:46:58 +02:00
e151ca27eb
src/img2pdf_test.py: skip tests on win32 and macos
2020-08-03 18:45:40 +02:00
7aed0ea0d0
src/img2pdf_test.py: fixes for Ubuntu Trusty
2020-08-03 18:31:55 +02:00
bed0b4cdae
src/img2pdf_test.py: check for mutool >= 1.10.0
2020-08-03 16:04:58 +02:00
11f7db5003
src/img2pdf_test.py: explicitly convert PosixPath to str
2020-08-03 15:04:51 +02:00
000fc3b5ac
remove obsolete src/tests/__init__.py
2020-08-03 14:56:32 +02:00
0992832ab0
src/img2pdf_test.py: explicitly convert PosixPath to str
2020-08-03 14:49:58 +02:00
66fd7cc765
rename test.py -> src/img2pdf_test.py
2020-08-03 12:34:02 +02:00
5b7f93bb9a
do not allow negative values in parse_num()
2020-08-03 12:25:14 +02:00
663010ca61
src/img2pdf.py: tiny logic error
2020-06-06 01:19:30 +02:00
93f65a49c9
add --pdfa argument to attach an icc profile for PDF/A-1b compliant output
2020-06-01 02:10:07 +02:00
bca3f802ac
Add support for pikepdf
2020-05-31 17:18:02 +02:00
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
2020-05-31 09:05:55 +02:00
f4b296cef3
src/tests/__init__.py: make path OS agnostic (slash vs backslash)
2020-05-28 13:16:09 +02:00
5c7ffb09a1
src/tests/__init__.py: add support for engine instead of with_pdfrw
2020-05-28 13:12:07 +02:00
e4dece1c9f
replace --without-pdfrw by --engine=internal or --engine=pdfrw
2020-05-28 12:46:37 +02:00
997fe8efd8
src/tests/__init__.py: use pikepdf instead of pdfrw
2020-05-28 12:43:08 +02:00
60fa588cfb
release version 0.3.6
2020-04-30 22:18:54 +02:00
6da2bc3aee
release version 0.3.5
2020-04-28 13:39:49 +02:00
082f999ac8
fix with_pdfrw assignment -- thanks Michał Górny
2020-04-23 07:47:39 +02:00
ceba6a8223
Rip out remaining python3 support
...
https://www.enricozini.org/blog/2020/python/python-2-is-dead/
2020-04-23 07:13:39 +02:00
9449f96345
only run gui if requested with --gui even on windows ( closes : #73 )
2020-04-23 07:09:20 +02:00
0bbbc7a31a
pdfrw is now disabled by default if it's not installed ( closes : #74 )
2020-04-23 06:59:07 +02:00
fb2916e6b2
release version 0.3.4
2020-04-05 15:11:09 +02:00
7a3daec620
add rudimentary GUI
2020-04-05 12:21:09 +02:00
1bb21f0c85
put read() into a different try block than open()
2020-04-05 12:16:59 +02:00
2b26daeb47
first draft of a tkinter gui
2019-08-25 06:03:48 +02:00
ed6187d541
add --crop-border, --bleed-border, --trim-border and --art-border options
2019-04-02 07:37:03 +02:00
82706671cc
join strings that got put into the same line by black
2019-03-29 00:34:31 +01:00
01022487b7
add AlphaChannelError and ExifOrientationError exceptions
2019-03-28 10:26:46 +01:00
07903e9ef1
im was not defined -- don't print it ( closes : #61 )
2019-03-28 09:56:01 +01:00
8d7996709a
release version 0.3.3
2019-01-07 10:44:24 +01:00
462e1c23d5
src/img2pdf.py: reformat code with black ( https://github.com/ambv/black )
2018-12-25 12:30:10 +01:00
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.
2018-12-25 01:46:09 +01:00
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/
2018-12-24 18:13:49 +01:00
0639dbd47c
src/tests/__init__.py: fix CommandLineTests on python3
2018-12-24 18:04:40 +01:00
78183c642b
allow wrapping img2pdf main() in contextlib.redirect_stdout()
2018-12-24 18:03:52 +01:00
b39e755424
add legal and tabloid paper formats ( closes : #52 )
2018-12-24 18:02:41 +01:00
josch
4cebd9f15d
Merge branch 'agroszer-py2' into 'master'
...
fixing a slew of python 2 issues
See merge request !4
2018-12-11 17:16:50 +00:00
68ca35f39e
release version 0.3.2
2018-11-20 16:37:23 +01:00
42f8ac54a8
Allow CCITT Group4 input without rows-per-strip ( closes : #48 )
2018-11-20 16:30:14 +01:00
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
2018-08-20 10:27:27 +02:00
03bdc33053
src/img2pdf.py: be more explicit when embedding group4 from TIFF
2018-08-20 10:26:39 +02:00
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
2018-08-20 10:25:39 +02:00
a2b969640a
src/img2pdf.py: assign the default dpi to tiff images where PIL returned its default of (1,1)
2018-08-20 10:24:31 +02:00
8961c78dbf
src/img2pdf.py: add commented-out debugging option for PIL's TiffImagePlugin
2018-08-20 10:23:23 +02:00
6c44d8cea6
src/img2pdf.py: add more rationale behind palette encoding
2018-08-20 10:21:18 +02:00
c0ed810036
src/img2pdf.py: work around PIL not reporting a colorspace for 16bit grayscale PNGs
2018-08-17 12:57:46 +02:00
ccca845606
src/img2pdf.py: Read bits per sample from PNG to support PNG images with 1, 2, 4 or 16 bits per sample
2018-08-17 12:55:55 +02:00
53685934f9
src/img2pdf.py: also reject palette images with transparency
2018-08-17 07:27:15 +02:00
ba5a9a1dfc
Allow multipage CCITT group 4 TIFF images
2018-08-16 00:23:18 +02:00
a628ed22f9
Add more debugging output
2018-08-16 00:11:07 +02:00
fbcaca5e6b
big endian encoded TIFF files may have FillOrder set to lsb-to-msb and must have the bits of each byte reversed
2018-08-16 00:10:46 +02:00
a9f4c9b665
release version 0.3.1
2018-08-04 15:44:45 +02:00
198c98a5f9
make pep8 compliant
2018-08-01 22:28:44 +02:00
f5d8d86dff
Also do not re-encode CCITT Group 4 encoded TIFF images
...
Add additional property of input images: inverted
closes : #47
2018-08-01 22:12:40 +02:00
b3fb2de5f6
src/img2pdf.py: fix spelling in --help output
2018-07-19 12:05:27 +02:00
2ad0c036b2
src/tests/input/mono.tif: set dpi to 72
2018-07-18 14:08:04 +02:00
1aa71e3746
release version 0.3.0
2018-07-18 11:30:43 +02:00
75c43de09d
Create a new PIL image before saving as TIFF to prevent libtiff errors
...
closes : #46
2018-07-18 01:58:03 +02:00
eec1a25a92
add test case for ccittfaxdecode
2018-07-18 01:55:48 +02:00
7de174f4b5
CCITTFaxDecode filter must be in an array
2018-07-18 01:55:48 +02:00
48d5b4d7af
CCITTGroup4 must return empty palette
2018-07-18 00:57:43 +02:00
d931f02709
src/tests/__init__.py: handle PNG input images properly
2018-07-18 00:05:15 +02:00
b99fae1380
src/tests/__init__.py: don't test for color space now that we support palette PNGs
2018-07-18 00:04:30 +02:00
ac9ba1d0f6
handle monochrome png properly
2018-07-18 00:03:31 +02:00