Fix table of contents not preserved in PDF/A

This commit is contained in:
James R. Barlow
2018-03-26 02:23:19 -07:00
parent bc56b8e058
commit 45dbff6401
5 changed files with 37 additions and 9 deletions
+7 -2
View File
@@ -29,7 +29,7 @@ from enum import Enum
from contextlib import contextmanager
import PyPDF2 as pypdf
from fitz import Document
import fitz
from .helpers import universal_open
@@ -555,7 +555,7 @@ def borrow_stream(stream):
def _page_has_text(infile, pageno):
doc = Document(infile)
doc = fitz.Document(infile)
text = doc.getPageText(pageno)
if text.strip() != '':
return True
@@ -692,6 +692,7 @@ class PdfInfo:
def __init__(self, infile):
self._infile = infile
self._pages = _pdf_get_all_pageinfo(infile)
self._toc = fitz.Document(infile).getToC()
@property
def pages(self):
@@ -712,6 +713,10 @@ class PdfInfo:
raise NotImplementedError("can't get filename from stream")
return self._infile
@property
def table_of_contents(self):
return self._toc
def __getitem__(self, item):
return self._pages[item]
+4 -1
View File
@@ -963,11 +963,14 @@ def merge_pages_ghostscript(
ghostscript.generate_pdfa(
pdf_version=input_pdfinfo.min_version,
pdf_pages=pdf_pages,
output_file=output_file,
output_file=output_file + '_toc.pdf',
compression=options.pdfa_image_compression,
log=log,
threads=options.jobs or 1,
pdfa_part=('1' if options.output_type == 'pdfa-1' else '2'))
doc = fitz.Document(output_file + '_toc.pdf')
doc.setToC(input_pdfinfo.table_of_contents)
doc.save(output_file)
def merge_pages_qpdf(