Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b8ccbe8cb | ||
|
|
ab1ff3331b | ||
|
|
3675ae918c | ||
|
|
0ba32b96b7 | ||
|
|
add64e4fa2 | ||
|
|
7fe2954ede | ||
|
|
ad202693b3 |
+1
-1
@@ -314,7 +314,7 @@ message is:
|
|||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
Temporary working files retained at:
|
Temporary working files retained at:
|
||||||
/tmp/com.github.ocrmypdf.u20wpz07
|
/tmp/ocrmypdf.io.u20wpz07
|
||||||
|
|
||||||
The organization of this folder is an implementation detail and subject
|
The organization of this folder is an implementation detail and subject
|
||||||
to change between releases. However the general organization is that
|
to change between releases. However the general organization is that
|
||||||
|
|||||||
@@ -12,6 +12,16 @@ may be unreliable. Use the API to depend on precise behavior.
|
|||||||
The public API may be useful in scripts that launch OCRmyPDF processes or that
|
The public API may be useful in scripts that launch OCRmyPDF processes or that
|
||||||
wish to use some of its features for working with PDFs.
|
wish to use some of its features for working with PDFs.
|
||||||
|
|
||||||
|
v11.4.1
|
||||||
|
=======
|
||||||
|
|
||||||
|
- Fixed an issue where invalid pages ranges passed using the ``pages`` argument,
|
||||||
|
such as "1-0" would cause unhandled exceptions.
|
||||||
|
- Accepted a user-contributed to the Synology demo script in misc/synology.py.
|
||||||
|
- Clarified documentation about change of temporary file location ``ocrmypdf.io``.
|
||||||
|
- Fixed Python wheel tag which was incorrectly set to py35 even though we long
|
||||||
|
since dropped support for Python 3.5.
|
||||||
|
|
||||||
v11.4.0
|
v11.4.0
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -79,8 +79,10 @@ for dir_name, subdirs, file_list in os.walk(start_dir):
|
|||||||
stdout=output_file,
|
stdout=output_file,
|
||||||
stderr=subprocess.PIPE,
|
stderr=subprocess.PIPE,
|
||||||
check=False,
|
check=False,
|
||||||
|
text=True,
|
||||||
|
errors='ignore',
|
||||||
)
|
)
|
||||||
logging.info(proc.stderr.read())
|
logging.info(proc.stderr)
|
||||||
os.chmod(full_path_ocr, 0o664)
|
os.chmod(full_path_ocr, 0o664)
|
||||||
os.chmod(full_path, 0o664)
|
os.chmod(full_path, 0o664)
|
||||||
full_path_ocr_archive = sys.argv[2]
|
full_path_ocr_archive = sys.argv[2]
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[bdist_wheel]
|
[bdist_wheel]
|
||||||
python-tag = py35
|
python-tag = py36
|
||||||
|
|
||||||
[aliases]
|
[aliases]
|
||||||
test=pytest
|
test=pytest
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ setup(
|
|||||||
],
|
],
|
||||||
tests_require=tests_require,
|
tests_require=tests_require,
|
||||||
entry_points={'console_scripts': ['ocrmypdf = ocrmypdf.__main__:run']},
|
entry_points={'console_scripts': ['ocrmypdf = ocrmypdf.__main__:run']},
|
||||||
package_data={'ocrmypdf': ['data/sRGB.icc']},
|
package_data={'ocrmypdf': ['data/sRGB.icc', 'py.typed']},
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
zip_safe=False,
|
zip_safe=False,
|
||||||
project_urls={
|
project_urls={
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import sys
|
|||||||
import unicodedata
|
import unicodedata
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from shutil import copyfileobj
|
from shutil import copyfileobj
|
||||||
from typing import Tuple
|
from typing import List, Set, Tuple, Union
|
||||||
|
|
||||||
import pikepdf
|
import pikepdf
|
||||||
import PIL
|
import PIL
|
||||||
@@ -136,10 +136,10 @@ def check_options_preprocessing(options):
|
|||||||
raise BadArgsError(str(e))
|
raise BadArgsError(str(e))
|
||||||
|
|
||||||
|
|
||||||
def _pages_from_ranges(ranges):
|
def _pages_from_ranges(ranges: str) -> Set[int]:
|
||||||
if is_iterable_notstr(ranges):
|
if is_iterable_notstr(ranges):
|
||||||
return set(ranges)
|
return set(ranges)
|
||||||
pages = []
|
pages: List[int] = []
|
||||||
page_groups = ranges.replace(' ', '').split(',')
|
page_groups = ranges.replace(' ', '').split(',')
|
||||||
for g in page_groups:
|
for g in page_groups:
|
||||||
if not g:
|
if not g:
|
||||||
@@ -150,9 +150,18 @@ def _pages_from_ranges(ranges):
|
|||||||
pages.append(int(g) - 1)
|
pages.append(int(g) - 1)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
pages.extend(range(int(start) - 1, int(end)))
|
new_pages = list(range(int(start) - 1, int(end)))
|
||||||
|
if not new_pages:
|
||||||
|
raise BadArgsError(f"invalid page subrange '{start}-{end}'")
|
||||||
|
pages.extend(new_pages)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
raise BadArgsError("invalid page range")
|
raise BadArgsError("invalid page range") from None
|
||||||
|
|
||||||
|
if not pages:
|
||||||
|
raise BadArgsError(
|
||||||
|
f"The string of page ranges '{ranges}' did not contain any recognizable "
|
||||||
|
f"page ranges."
|
||||||
|
)
|
||||||
|
|
||||||
if not monotonic(pages):
|
if not monotonic(pages):
|
||||||
log.warning(
|
log.warning(
|
||||||
|
|||||||
@@ -28,6 +28,12 @@ from ocrmypdf.pdfinfo import PdfInfo
|
|||||||
['1,3,-11', BadArgsError],
|
['1,3,-11', BadArgsError],
|
||||||
['1-,', BadArgsError],
|
['1-,', BadArgsError],
|
||||||
['start-end', BadArgsError],
|
['start-end', BadArgsError],
|
||||||
|
['1-0', BadArgsError],
|
||||||
|
['99-98', BadArgsError],
|
||||||
|
['0-0', BadArgsError],
|
||||||
|
['1-0,3-4', BadArgsError],
|
||||||
|
[',', BadArgsError],
|
||||||
|
['', BadArgsError],
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_pages(pages, result):
|
def test_pages(pages, result):
|
||||||
|
|||||||
Reference in New Issue
Block a user