56 lines
1.3 KiB
Python
56 lines
1.3 KiB
Python
# SPDX-FileCopyrightText: 2022 James R. Barlow
|
|
# SPDX-License-Identifier: MPL-2.0
|
|
|
|
"""Interface to jbig2 executable"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from subprocess import PIPE
|
|
|
|
from ocrmypdf.exceptions import MissingDependencyError
|
|
from ocrmypdf.subprocess import get_version, run
|
|
|
|
|
|
def version():
|
|
return get_version('jbig2', regex=r'jbig2enc (\d+(\.\d+)*).*')
|
|
|
|
|
|
def available():
|
|
try:
|
|
version()
|
|
except MissingDependencyError:
|
|
return False
|
|
return True
|
|
|
|
|
|
def convert_group(*, cwd, infiles, out_prefix):
|
|
args = [
|
|
'jbig2',
|
|
'-b',
|
|
out_prefix,
|
|
'-s', # symbol mode (lossy)
|
|
# '-r', # refinement mode (lossless symbol mode, currently disabled in
|
|
# jbig2)
|
|
'-p',
|
|
]
|
|
args.extend(infiles)
|
|
proc = run(args, cwd=cwd, stdout=PIPE, stderr=PIPE)
|
|
proc.check_returncode()
|
|
return proc
|
|
|
|
|
|
def convert_group_mp(args):
|
|
return convert_group(cwd=args[0], infiles=args[1], out_prefix=args[2])
|
|
|
|
|
|
def convert_single(*, cwd, infile, outfile):
|
|
args = ['jbig2', '-p', infile]
|
|
with open(outfile, 'wb') as fstdout:
|
|
proc = run(args, cwd=cwd, stdout=fstdout, stderr=PIPE)
|
|
proc.check_returncode()
|
|
return proc
|
|
|
|
|
|
def convert_single_mp(args):
|
|
return convert_single(cwd=args[0], infile=args[1], outfile=args[2])
|