mupdf:更改加密时无法进行增量写入
mupdf: Can't do incremental writes when changing encryption
我正在尝试使用 fitz
包将 table 内容添加到 pdf。
这是我的脚本
doc = fitz.open(path)
bookmarks = [[1, 'INTRODUCTION', 1], [1, 'MANUSCRIPT COMPONENTS', 1], [1, 'MULTIMEDIA FIGURES – VIDEO AND AUDIO FILES', 2], [1, 'MATHEMATICAL EQUATIONS', 3], [1, 'USING THIS TEMPLATE AND ITS AUTOMATIC FORMATTING', 3]]
doc.setToC(bookmarks) # o/p -> 5
doc.save(doc.name, incremental=True) # to save the document with added bookmarks/table of contents
# above line gives the error
这是堆栈跟踪
>>> doc.save(doc.name, incremental=True)
mupdf: Can't do incremental writes when changing encryption
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "E:\BookmarkPDF\pdfenv\lib\site-packages\fitz\fitz.py", line 4270, in save
return _fitz.Document_save(
RuntimeError: Can't do incremental writes when changing encryption
使用较低版本的 PYmuPDF 解决了它。
pip 安装 PyMuPDF==1.14.20
doc.save()
默认使用 encryption=PDF_ENCRYPT_NONE
(see documentation here)。您的文档必须有某种类型的加密,doc.save
正在尝试删除(即更改为 none)。
知道这一点,错误是不言自明的:fitz
无法增量保存和更改加密。
您在 question/code 中表示不想更改加密,因此您可以指定保留它。
为此,您可以使用:
doc.save(doc.name, incremental=True, encryption=PDF_ENCRYPT_KEEP).
或者您也可以使用doc.saveIncr()
作为方便缩写(see here for docs)。
对于PyMyPDF==1.18.17
PDF encryption method codes 不再有效,您将不得不使用以下方法。请参考下面的代码。
doc = fitz.open(path)
bookmarks = [[1, 'INTRODUCTION', 1], [1, 'MANUSCRIPT COMPONENTS', 1], [1, 'MULTIMEDIA FIGURES – VIDEO AND AUDIO FILES', 2], [1, 'MATHEMATICAL EQUATIONS', 3], [1, 'USING THIS TEMPLATE AND ITS AUTOMATIC FORMATTING', 3]]
doc.setToC(bookmarks) # o/p -> 5
doc.save(doc.name, incremental=True, encryption=0)
你必须给 encryption
0
的值,这显然为我解决了这个问题。
我正在尝试使用 fitz
包将 table 内容添加到 pdf。
这是我的脚本
doc = fitz.open(path)
bookmarks = [[1, 'INTRODUCTION', 1], [1, 'MANUSCRIPT COMPONENTS', 1], [1, 'MULTIMEDIA FIGURES – VIDEO AND AUDIO FILES', 2], [1, 'MATHEMATICAL EQUATIONS', 3], [1, 'USING THIS TEMPLATE AND ITS AUTOMATIC FORMATTING', 3]]
doc.setToC(bookmarks) # o/p -> 5
doc.save(doc.name, incremental=True) # to save the document with added bookmarks/table of contents
# above line gives the error
这是堆栈跟踪
>>> doc.save(doc.name, incremental=True)
mupdf: Can't do incremental writes when changing encryption
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "E:\BookmarkPDF\pdfenv\lib\site-packages\fitz\fitz.py", line 4270, in save
return _fitz.Document_save(
RuntimeError: Can't do incremental writes when changing encryption
使用较低版本的 PYmuPDF 解决了它。 pip 安装 PyMuPDF==1.14.20
doc.save()
默认使用 encryption=PDF_ENCRYPT_NONE
(see documentation here)。您的文档必须有某种类型的加密,doc.save
正在尝试删除(即更改为 none)。
知道这一点,错误是不言自明的:fitz
无法增量保存和更改加密。
您在 question/code 中表示不想更改加密,因此您可以指定保留它。
为此,您可以使用:
doc.save(doc.name, incremental=True, encryption=PDF_ENCRYPT_KEEP).
或者您也可以使用doc.saveIncr()
作为方便缩写(see here for docs)。
对于PyMyPDF==1.18.17
PDF encryption method codes 不再有效,您将不得不使用以下方法。请参考下面的代码。
doc = fitz.open(path)
bookmarks = [[1, 'INTRODUCTION', 1], [1, 'MANUSCRIPT COMPONENTS', 1], [1, 'MULTIMEDIA FIGURES – VIDEO AND AUDIO FILES', 2], [1, 'MATHEMATICAL EQUATIONS', 3], [1, 'USING THIS TEMPLATE AND ITS AUTOMATIC FORMATTING', 3]]
doc.setToC(bookmarks) # o/p -> 5
doc.save(doc.name, incremental=True, encryption=0)
你必须给 encryption
0
的值,这显然为我解决了这个问题。