Fix regressions: pdfa.ps not used, PDF/A failures, handling of text layers with no font

This commit is contained in:
James R. Barlow
2018-05-01 15:51:46 -07:00
parent c7387de325
commit 37677de884
2 changed files with 7 additions and 45 deletions
+1
View File
@@ -169,6 +169,7 @@ def generate_pdfa(pdf_pages, output_file, compression, log,
"-sOutputFile=" + gs_pdf.name,
]
args_gs.extend(pdf_pages)
log.debug(args_gs)
p = run(args_gs, stdout=PIPE, stderr=STDOUT,
universal_newlines=True)
+6 -45
View File
@@ -787,8 +787,11 @@ def _weave_layers_graft(pdf_base, page_num, text, font, font_key, log):
def _find_font(text, pdf_base):
font, font_key = None, None
possible_font_names = ('/f-0-0', '/F1')
pdf_text = pikepdf.open(text)
pdf_text_fonts = pdf_text.pages[0].Resources.get('/Font', {})
try:
pdf_text = pikepdf.open(text)
pdf_text_fonts = pdf_text.pages[0].Resources.get('/Font', {})
except Exception:
return None, None
for f in possible_font_names:
pdf_text_font = pdf_text_fonts.get(f, None)
@@ -985,57 +988,15 @@ def metadata_fixup(
)
if options.output_type.startswith('pdfa'):
_do_merge_ghostscript([layers_file], ps, output_file, log, context)
_do_merge_ghostscript([layers_file, ps], output_file, log, context)
elif fitz:
_do_merge_mupdf([layers_file], metadata_file, output_file, log, context)
else:
pass
def merge_pages(
input_files_groups,
output_file,
log,
context):
"""Determine ordered list of PDF pages to merge. Returns PDF from which
metadata should be drawn if present (for qpdf)."""
options = context.get_options()
input_files = list(f for f in flatten_groups(input_files_groups)
if not f.endswith('.txt'))
metadata_file = next(
(ii for ii in input_files if ii.endswith('.repaired.pdf')), None)
if metadata_file in input_files:
input_files.remove(metadata_file)
def input_file_order(s):
'''Sort order: All rendered pages followed
by their debug page, if any, followed by Postscript stub.
Ghostscript documentation has the Postscript stub at the
beginning, but it works at the end and also gets document info
right that way.'''
if s.endswith('.ps'):
return 99999999
key = page_number(s) * 10
if 'debug' in os.path.basename(s):
key += 1
return key
pdf_pages = sorted(input_files, key=input_file_order)
log.debug("Final pages: " + "\n".join(pdf_pages))
args = (pdf_pages, metadata_file, output_file, log, context)
if options.output_type.startswith('pdfa'):
_do_merge_ghostscript(*args)
elif fitz:
_do_merge_mupdf(*args)
else:
_do_merge_qpdf(*args)
def _do_merge_ghostscript(
pdf_pages,
metadata_file,
output_file,
log,
context):