WeHack BBS
利用poppler-utils将PDF尽可能还原为ODT - 可打印的版本

+- WeHack BBS (https://bbs.wehack.space)
+-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html)
+--- 版块: GNU/Linux 讨论区 (https://bbs.wehack.space/forum-6.html)
+--- 主题: 利用poppler-utils将PDF尽可能还原为ODT (/thread-221.html)



利用poppler-utils将PDF尽可能还原为ODT - nadebula - 01-25-2021

完全还原是不可能的,由于PDF是面向打印的格式。另有大量私有软件和SaaSS号称可以将PDF比较可靠地还原为ODT或DOCX,不过据本人分析,所谓的“可靠性”很可能仅限于那些本身嵌入了一份ODT或DOCX副本的PDF文件。
经过一些查证工作,本人选择了poppler-utils作为处理PDF的工具。基本套路是分别处理文本和图片。利用pdftohtml输出为HTML,利用pdfimages提取图片。(pdftohtml不加-i参数同时输出文本和图片效果不佳。)利用LibreOffice打开此HTML,另存为FODT。
以下是我用的命令:
pdfimages -j filename.pdf image
pdftohtml -s -i -noframes filename.pdf filename.html
用LibreOffice打开后,需要对文本进行大量修补工作。例如本人在处理Self-publishing using LibreOffice Writer 6一书的PDF(原作者没有提供可编辑的ODT)时,本人手动处理了以下问题:
1, 页面背景为灰色:进入页面样式进行修改
2, 去除页面背景色之后,所有“空格”仍为灰色:选中一个灰色的空白字符,粘贴到“查找与替换”中的“查找”一栏,在“替换”一栏输入普通空格,全部替换(耗时较长)
3, 由于是从PDF转换而来,会引入大量换行符(Shift+Enter):在“查找与替换”中选中“正则表达式”,查找\n,替换为空,全部替换
余下的主要问题:
1, 转换之后,页眉、页脚、页码、脚注、尾注、旁注、批注等都成了普通文本,需要手动删除之后重新创建
2, 重新编排目录和索引(需要设置标题样式和索引项)
3, 重新插入表格和图片


RE: 利用poppler-utils将PDF尽可能还原为ODT - vimacs - 01-26-2021

直接用LibreOffice Writer打开PDF文件也可以吧,LibreOffice用的也是poppler.
另外只要文本的话可以考虑mutool draw,但不一定能输出有效的文本。


RE: 利用poppler-utils将PDF尽可能还原为ODT - nadebula - 01-26-2021

(01-26-2021, 09:11 AM)vimacs 提到: 直接用LibreOffice Writer打开PDF文件也可以吧,LibreOffice用的也是poppler.
另外只要文本的话可以考虑mutool draw,但不一定能输出有效的文本。

如上所述,除非该PDF在创建时同时嵌入了ODT,否则会用Draw打开。原帖更新了一些内容。总的来说,如果预先准备好了一套样式(按老谭风格说,样式是LibreOffice的灵魂),从已有的PDF进行转换还是能节省一些操作步骤。
Bruce Byfield的新书Designing Ebooks本人将会持续关注。


RE: 利用poppler-utils将PDF尽可能还原为ODT - vimacs - 01-26-2021

(01-26-2021, 09:27 AM)nadebula 提到: 如上所述,除非该PDF在创建时同时嵌入了ODT,否则会用Draw打开。原帖更新了一些内容。总的来说,如果预先准备好了一套样式(按老谭风格说,样式是LibreOffice的灵魂),从已有的PDF进行转换还是能节省一些操作步骤。
Bruce Byfield的新书Designing Ebooks本人将会持续关注。

LibreOffice是支持用Writer或者Impress打开PDF的,在选择文件的窗口里面选择文件类型为"PDF - Portable Document Format (Writer)"就是用Writer打开。


RE: 利用poppler-utils将PDF尽可能还原为ODT - nadebula - 01-26-2021

(01-26-2021, 03:02 PM)vimacs 提到: LibreOffice是支持用Writer或者Impress打开PDF的,在选择文件的窗口里面选择文件类型为"PDF - Portable Document Format (Writer)"就是用Writer打开。

那么我可能一直没有注意这列表里还有这么多类型,包括天朝的UOF……
现在的问题是Self-publishing using LibreOffice Writer 6这作者用的是私有字体Georgia,如果替换为默认的Liberation Serif会变宽。我在想到底是改一堆段落样式还是干脆改页面样式(增大纸张尺寸),反正不必须和原书拥有相同的物理尺寸。


RE: 利用poppler-utils将PDF尽可能还原为ODT - nadebula - 08-10-2021

2021年8月更新:
我处理Self-publishing一书的时候最终没有采用ODF/PDF格式,直接编辑好markdown利用pandoc处理成HTML了,图片则是通过poppler-utils提取之后(选择提取全部类型的图片),在HTML中插入引用来处理。
Designing ebooks新书也将采用类似方式处理。因为制作ODF/PDF不仅费时,而且反而不利于在诸如手机等设备上阅读,失去了一定的灵活性。