Windows中有很多软件可以合并PDF文件,但是我们如何在Ubuntu中做到这一点呢?
Windows中有很多软件可以合并PDF文件,但是我们如何在Ubuntu中做到这一点呢?
Answers:
如果您想要带有简单GUI的工具,请尝试pdfshuffler。它允许合并PDF以及重新排列和删除页面。对于批处理和/或更复杂的任务,pdftk当然更强大。
pdfshuffler
在14.04 amd64上工作正常。
合并两个pdf文件,file1.pdf
以及file2.pdf
:
pdftk file1.pdf file2.pdf cat output mergedfile.pdf
更多信息可在此处Way Back Machine。
cat
和output
跟随可变参数输入参数,然后再跟输出参数。
Ghostscript是一个软件包(默认情况下在Ubuntu中可用),使您可以查看或打印PostScript和PDF文件为其他格式,或将这些文件转换为其他格式。
要使用Ghostscript组合PDF文件,请键入以下内容:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOutputFile=finished.pdf file1.pdf file2.pdf
这是该命令的简要说明:
gs starts the Ghostscript program.
-dBATCH once Ghostscript processes the PDF files, it should exit.
If you don't include this option, Ghostscript will just keep running.
-dNOPAUSE forces Ghostscript to process each page without pausing for user interaction.
-q stops Ghostscript from displaying messages while it works
-sDEVICE=pdfwrite
tells Ghostscript to use its built-in PDF writer to process the files.
-sOutputFile=finished.pdf
tells Ghostscript to save the combined PDF file with the specified name.
-dAutoRotatePages=/None
Acrobat Distiller parameter AutoRotatePages controls the automatic orientation selection algorithm: For instance: -dAutoRotatePages=/None or /All or /PageByPage.
您的输入文件甚至不必是PDF文件。您也可以使用PostScript或EPS文件,或这三种文件的任意组合。
使用Ghostscript您可以做很多事情。您可以阅读其文档以获取更多详细信息。
pdftk
用了0m0.484s,用gs
了1m32.898s(慢了近200倍),但文件的gs
大小却缩小了约21%。
file1.pdf file2.pdf
为file*.pdf
gs
使用一些“不符合规范”的PDF pdftk
可以永久运行。
file*.pdf
与file1.pdf file2.pdf
传递参数的命令。
您还可以使用pdfunite合并pdf文档:
pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf
out.pdf
将被覆盖而不会发出警告,因此pdfunite *.pdf
将无法按预期工作。
cp
也可以毫无警告地覆盖最后一个参数。这仅是为了吸引用户(像我自己一样)-我很幸运,我已经备份了有问题的文件...
PDFChain是一个很好的解决方案。它的GUI是PDFTK的前端,您可以在其中合并,拆分甚至为PDF文件添加一些背景。
apt
也没有给出任何结果:/
一种替代方法是按照本文中的说明使用Latex(假设您已安装pdflatex,则无需root访问权限):https : //tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by- 胶乳
如果您没有提到的工具或root特权,但您确实拥有pdflatex,这将很有用。
我复制下面的tex代码以合并file1.pdf
和file2.pdf
。创建一个名为output.tex
put 的文件:
\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-]{file1}
\includepdf[pages=-]{file2}
\end{document}
要进行编译,只需使用: pdflatex output.tex
合并的文件将命名为output.pdf
。
我使用pdfseparate从大pdf文件中提取特定页面:
pdfseparate -f 156 -l 157 input.pdf output_%d.pdf
pdfseparate -f 1 -l 2 input.pdf output_%d.pdf
后来我通过命令将它们全部加入:
pdfunite $(ls -v output_*.pdf | tr '\n' ' ') out$(date +%Y-%m-%d_%H_%M_%S ).pdf
这加入:
output_1.pdf output_2.pdf output_156.pdf output_157.pdf
变成:
out2014-12-14_23_25_36.pdf
也许有一种更简单的方法来应对... :-)
pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdf
但是缺少的顺序ls -v
。一个显而易见的琐碎解决方法是为文件命名,以便它们自然按照您希望包含它们的顺序排序。如果绝对需要ls -v
,您至少可以输给tr
,这在这里什么都不做。
使用pdfsam http://www.pdfsam.org/对拆分和合并pdf非常有用
通常,您可以使用pdftk合并和修改PDF文档。另外,也可以通过在线服务来做到这一点:http : //www.pdfmerge.com/
这是我的方法:
结果如下:
#!/bin/sh
CLEANED_FILE_PATHS=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed 's,.pdf /home/,.pdf\\n/home/,g')
echo $CLEANED_FILE_PATHS | bash -c 'IFS=$'"'"'\n'"'"' read -d "" -ra x;pdfunite "${x[@]}" merged.pdf'
Juste将此脚本粘贴到
/ home /您的用户名/.local/share/nautilus/scripts
并将其命名为“ merge_pdfs.sh”(例如)。然后使其可执行(右键单击merge_pdfs.sh->权限选项卡->勾选“允许将文件作为程序执行”
因此,现在要合并pdf文件,只需选择它们->右键单击->脚本-> merge_pdfs.sh,它将在同一目录中创建“ merged.pdf”文件
希望能帮助到你!