Commit graph

220 commits

Author SHA1 Message Date
e265738ac2
Revert "allow palette PNG images with ICC profile (closes: #107)"
This reverts commit 3d7e0e6812.
2021-10-03 16:09:54 +02:00
cde7472d15 Update documentation: img2pdf now supports alpha channels 2021-10-03 11:48:24 +00:00
6eec05c11c
workaround for Pillow >= 8.3.0 which limits CCITT Group4 strip size to 64 KB (closes: #122) 2021-10-03 13:24:53 +02:00
Tamás Zahola
2476215f39 Always initialize smask 2021-08-22 08:08:20 +00:00
Tamás Zahola
f62858c245 Formatting 2021-08-22 08:08:20 +00:00
Tamás Zahola
a5e4da5755 Use PNG predictor for /SMask too 2021-08-22 08:08:19 +00:00
Tamás Zahola
64db7909ec Added transparency support for GIFs, palette-based PNGs and grayscale PNGs 2021-08-22 08:08:19 +00:00
Tamás Zahola
af5ae5b9b6 Convert 8-bit PNG alpha channels to /SMasks in PDF 2021-08-22 08:08:19 +00:00
5c617965f5
document the ifvalid option value further 2021-08-14 10:19:06 +02:00
0067edf965
remove first_frame_only from gui 2021-08-14 10:18:15 +02:00
91e3a94c3d
sort globbing result on windows 2021-07-02 16:18:20 +02:00
3d7e0e6812
allow palette PNG images with ICC profile (closes: #107) 2021-06-14 18:34:46 +02:00
b4c8aa1a5f
add --rotation argument overwriting exif data (closes: #100) 2021-05-14 11:31:53 +02:00
114d7270a2
release version 0.4.1 2021-05-09 18:57:41 +02:00
ea2245757f
add --from-file to read arbitrarily many images and circumvent the maximum command length of the shell (closes: #95) 2021-05-07 10:59:19 +02:00
9cda595cd5
I got married and my last name changed 2021-05-07 09:41:27 +02:00
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
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
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
042aac71eb
reformat with black 2020-08-05 08:13:52 +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
e4dece1c9f
replace --without-pdfrw by --engine=internal or --engine=pdfrw 2020-05-28 12:46:37 +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
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
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
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
ac9ba1d0f6
handle monochrome png properly 2018-07-18 00:03:31 +02:00
eaf9de23c9
Filter must not be array for PNG output, so never make it an array 2018-07-17 23:59:55 +02:00
47a1e0c81e
src/img2pdf.py: do not use PNG encoding for CMYK input 2018-07-17 16:57:44 +02:00
84ce9bbd9c
src/img2pdf.py: do not allow transparency 2018-07-17 16:57:44 +02:00
90293204b2
src/img2pdf.py: use logging.warning because warn() is deprecated 2018-07-17 16:07:01 +02:00
ade5768d72
src/img2pdf.py: expand error message about alpha channel 2018-03-27 10:39:24 +02:00
920506b867
Reflect the fact that we now use PNG compression in the --help output 2018-03-24 19:53:41 +01:00
e78dd80451
Add option --pillow-limit-break to force Pillow to accept large input images 2018-03-24 19:47:03 +01:00
d9a6c9db03
Interlaced PNGs cannot be directly embedded but have to be re-encoded 2018-03-24 18:59:02 +01:00
7244d2c6ed
Disallow input images with alpha channel as it cannot be preserved in the PDF and would thus make img2pdf not lossless 2018-03-24 18:55:14 +01:00
1d9a25dfd2
Proof of concept of using PDF DecodeParms for storing pixel data with PNG compression 2018-03-15 11:31:36 +01:00
9836b976d3 src/img2pdf.py: handle Pillow returning a DPI of zero (closes: #36) 2017-10-18 10:34:59 +02:00
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.
2017-08-20 21:19:23 +09:00
James R. Barlow
b54617de19 Fix rawdata[:12] bytes/str comparison 2017-08-20 21:11:32 +09:00
Adam Groszer
0e76a5bd97 fixing a slew of python 2 issues 2017-08-07 11:21:42 +02:00
725462462b release version 0.2.4 2017-05-23 17:53:19 +02:00
Stephan Richter
f626d7860f Produce port that is fully API compatible. 2017-05-23 17:51:17 +02:00
Stephan Richter
06560cd0d4 It is easy enough to create a separate class for the Py2 version. 2017-05-22 19:34:39 +02:00
Stephan Richter
719928f5f5 Declare file encoding, since it contains some non-ascii chars. 2017-05-22 19:34:39 +02:00
Stephan Richter
b25098c3f0 Python 2 does not automatically convert integers to floats, so we have to be a bit more explicit. 2017-05-22 19:34:34 +02:00