forked from josch/plakativ
if img2pdf is available, try opening input with it and convert to PDF if necessary (closes: #3)
This commit is contained in:
parent
3cfdb1564a
commit
efb70042e8
2 changed files with 30 additions and 2 deletions
30
plakativ.py
30
plakativ.py
|
@ -21,6 +21,15 @@ import sys
|
||||||
import argparse
|
import argparse
|
||||||
import os.path
|
import os.path
|
||||||
import platform
|
import platform
|
||||||
|
from enum import Enum
|
||||||
|
from io import BytesIO
|
||||||
|
|
||||||
|
have_img2pdf = True
|
||||||
|
try:
|
||||||
|
import img2pdf
|
||||||
|
except ImportError:
|
||||||
|
have_img2pdf = False
|
||||||
|
|
||||||
|
|
||||||
VERSION = "0.2"
|
VERSION = "0.2"
|
||||||
|
|
||||||
|
@ -245,7 +254,26 @@ def complex_cover(n, m, x, y):
|
||||||
|
|
||||||
class Plakativ:
|
class Plakativ:
|
||||||
def __init__(self, infile, pagenr=0):
|
def __init__(self, infile, pagenr=0):
|
||||||
self.doc = fitz.open(infile)
|
self.doc = None
|
||||||
|
if have_img2pdf:
|
||||||
|
# if we have img2pdf available we can encapsulate a raster image
|
||||||
|
# into a PDF container
|
||||||
|
try:
|
||||||
|
data = img2pdf.convert(infile)
|
||||||
|
except img2pdf.ImageOpenError:
|
||||||
|
# img2pdf cannot handle this
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
stream = BytesIO()
|
||||||
|
stream.write(data)
|
||||||
|
self.doc = fitz.open(stream=stream, filetype="application/pdf")
|
||||||
|
if self.doc is None:
|
||||||
|
# either we didn't have img2pdf or opening the input with img2pdf
|
||||||
|
# failed
|
||||||
|
if hasattr(infile, "read"):
|
||||||
|
self.doc = fitz.open(stream=infile, filetype="application/pdf")
|
||||||
|
else:
|
||||||
|
self.doc = fitz.open(filename=infile)
|
||||||
self.pagenr = pagenr
|
self.pagenr = pagenr
|
||||||
|
|
||||||
# set page number -- first page is 0
|
# set page number -- first page is 0
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -35,7 +35,7 @@ setup(
|
||||||
test_suite="tests.test_suite",
|
test_suite="tests.test_suite",
|
||||||
zip_safe=True,
|
zip_safe=True,
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
install_requires=["PyMuPDF"],
|
install_requires=["PyMuPDF", "img2pdf"],
|
||||||
entry_points={
|
entry_points={
|
||||||
"setuptools.installation": ["eggsecutable = plakativ:main"],
|
"setuptools.installation": ["eggsecutable = plakativ:main"],
|
||||||
"console_scripts": ["plakativ = plakativ:main"],
|
"console_scripts": ["plakativ = plakativ:main"],
|
||||||
|
|
Loading…
Reference in a new issue