![按正确顺序合并 PDF](https://linux22.com/image/1451378/%E6%8C%89%E6%AD%A3%E7%A1%AE%E9%A1%BA%E5%BA%8F%E5%90%88%E5%B9%B6%20PDF.png)
我正在寻找一种方法(最好使用 Linux 上的命令行)将书籍章节的单独 PDF 按照正确的顺序合并为书籍的单个 PDF(可能基于 PDF 内的页码,或基于某些启发式方法)。
所以我希望能够进入包含所有单独章节的目录并执行
joinpdf-magic-command *.pdf
并使输出的 PDF 处于正确的顺序。
我发现了很多用于合并 PDF 的工具(pdfjoin
,pdftk
),但它们都按照 PDF 在命令行中出现的顺序排列。
编辑:
章节列表示例如下:
1-Introduction.pdf
2-The-analog-digital-interface.pdf
3-Adaptive-digital-systems.pdf
4-Non-linear-applications.pdf
5-Spectral-analysis-and-modulation.pdf
6-Introduction-to-Kalman-filters.pdf
7-Data-compression.pdf
8-Error-correcting-codes.pdf
9-Digital-signal-processors.pdf
Appendix-1-Solutions-to-problems.pdf
Appendix-2-A-MATLAB-Simulink-primer.pdf
Glossary.pdf
Index.pdf
Preface.pdf
References.pdf
但其他书籍会有不同的章节,它们的名称可能不同,甚至名称相同的章节也可能按不同的顺序排列。这就是为什么我提到使用页码可能是关键。
答案1
没有什么魔法可以自动对书籍章节进行排序——如果文件命名约定不支持的话,那就不行。这是一项必须由人来完成的操作。
唯一的办法快速地是将有序的文件名放入文本文件中,类似于您在 OP 中引用的内容。
然后只需运行:
pdftk $(cat mychapters.txt) cat output book.pdf
答案2
就我个人而言,我不会寻找新的工具,而是将您的工作流程包装在脚本中以强制执行正确的顺序。
我假设您有某种方法来识别正确的顺序,否则这根本是不可能的。理想情况下,您应该将文件命名为自动按照正确顺序命名:
01ChapterTitleOne.pdf
02ChapterTitleTwo.pdf
etc.
等等。不过,您可能在末尾加上了章节号(如 Michael 的示例),这会破坏排序。在这种情况下,您应该在工作流脚本中添加一个步骤,重命名文件,使它们按正确的顺序排列。
只要文件命名一致,这应该不是问题。如果您可以分享有关命名的更多信息,我相信我们可以想出一个 BASH 脚本来做到这一点。
一旦正确命名了所有内容,您就应该能够使用与工作流脚本第二步相同的命令。如果这不起作用,那么您将需要一个稍微复杂一点的 BASH 脚本,该脚本可以按正确的顺序循环遍历文件。
所有这些都是 BASH 脚本的标准内容,但都围绕着文件的一致命名。