Fix table of contents not preserved in PDF/A
This commit is contained in:
@@ -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]
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user