ghostscript: more effort at error logging

This commit is contained in:
James R. Barlow
2016-12-03 00:22:03 -08:00
parent 03aaf575dc
commit c35ec0b4aa
2 changed files with 27 additions and 4 deletions
+1 -1
View File
@@ -1283,7 +1283,7 @@ def merge_pages_ghostscript(
pdf_pages = sorted(input_files, key=input_file_order)
log.debug("Final pages: " + "\n".join(pdf_pages))
ghostscript.generate_pdfa(pdf_pages, output_file, options.jobs or 1)
ghostscript.generate_pdfa(pdf_pages, output_file, log, options.jobs or 1)
@posttask(partial(done_task, 'merge_pages_qpdf'))
+26 -3
View File
@@ -42,7 +42,7 @@ def rasterize_pdf(input_file, output_file, xres, yres, raster_device, log,
log.error('Ghostscript rendering failed')
def generate_pdfa(pdf_pages, output_file, threads=1):
def generate_pdfa(pdf_pages, output_file, log, threads=1):
with NamedTemporaryFile(delete=True) as gs_pdf:
args_gs = [
get_program("gs"),
@@ -60,5 +60,28 @@ def generate_pdfa(pdf_pages, output_file, threads=1):
"-sOutputFile=" + gs_pdf.name,
]
args_gs.extend(pdf_pages)
check_call(args_gs)
copy(gs_pdf.name, output_file)
p = Popen(args_gs, close_fds=True, stdout=PIPE, stderr=PIPE,
universal_newlines=True)
stdout, stderr = p.communicate()
if stdout:
if 'error' in stdout:
log.error(stdout)
elif 'overprint mode not set' in stdout:
# Unless someone is going to print PDF/A documents on a
# magical sRGB printer I can't see the removal of overprinting
# being a problem....
log.debug(
"Ghostscript had to remove PDF 'overprinting' from the "
"input file to complete PDF/A conversion. "
)
else:
log.debug(stdout)
if stderr:
log.error(stderr)
if p.returncode == 0:
# Ghostscript does not change return code when it fails to create
# PDF/A - check PDF/A status elsewhere
copy(gs_pdf.name, output_file)
else:
log.error('Ghostscript PDF/A failed')