#!/bin/bash
for f in *.pdf; do
let npages=$(pdfinfo "$f"|grep 'Pages:'|awk '{print $2}')
let modulo="($npages %2)"
if [ $modulo -eq 1 ]; then
pdftk "$f" "/path/to/blank.pdf" output "aligned_$f"
# or
# pdfunite "$f" "/path/to/blank.pdf" "aligned_$f"
else
cp "$f" "aligned_$f"
fi
done
1.合并结果 现在,所有以aligned_为前缀的文件都有偶数页码,我可以使用
pdftk aligned_*.pdf output result.pdf
# or
pdfunite aligned_*.pdf result.pdf
#!/bin/bash
for f in *.pdf; do
npages=$(pdfinfo "$f"|grep 'Pages:'|sed 's/[^0-9]*//g')
modulo=$(($npages %2))
if [ $modulo -eq 1 ]; then
qpdf --empty --pages "$f" "path/to/blank.pdf" -- "aligned_$f"
else
cp "$f" "aligned_$f"
fi
done
#!/bin/bash
mkdir aligned
for f in *.pdf; do
let npages=$(pdfcpu info "$f"|grep 'Page count:'|awk '{print $3}')
let modulo="($npages %2)"
if [ $modulo -eq 1 ]; then
pdfcpu page insert -pages l -mode after "$f" "aligned/$f"
else
cp "$f" "aligned/$f"
fi
done
pdfcpu merge merged-aligned.pdf aligned/*.pdf
rm -rf aligned
9条答案
按热度按时间gv8xihay1#
下面是我使用的解决方案(它基于@Dingo的基本原理,但使用了一种更简单的PDF操作方法):
1.创建包含一个空白页的PDF文件
首先,创建一个PDF文件,其中有一个空白页(在我的例子中,它位于
/path/to/blank.pdf
)。1.运行Bash脚本
然后,从包含所有PDF文件的目录中,运行一个小脚本,将
blank.pdf
文件附加到每个具有奇数页码的PDF文件:1.合并结果
现在,所有以
aligned_
为前缀的文件都有偶数页码,我可以使用工具信息:
ps2pdf
包含在大多数Linux发行版的**ghostscript
软件包**中pdfinfo
、pdfunite
来自Poppler PDF rendering library(通常软件包名称为**poppler-utils
或poppler_utils
**)pdftk
通常是它自己的软件包,即**pdftk
软件包**klr1opcd2#
如果你从另一个Angular 来看这个问题,你的问题会更容易解决
为了获得在打印中,* 第二 * PDF文件的第1页将不附在 * 相同 * 纸张上的 * 第一 * PDF文件的最后一页上,并且更一般地,后续PDF文件的第一页将不与在先PDF文件的最后一页打印在相同纸张的背面
你需要到执行一个选择性的添加一个空白页仅仅到pdf文件有和奇数页
我编写了一个名为abbblankifneeded的简单脚本,您可以将其放入文件中,然后将其复制到**/usr/bin或/usr/local/bin**中
然后用以下语法在存放pdf的文件夹中调用
for f in *.pdf; do addblankifneeded $f; done
此脚本在具有奇数页的pdf文件末尾添加一个空白页,跳过已经具有偶数页的pdf文件,然后将所有pdf合并为一个
注意:根据您的bash环境,您可能需要在脚本的第一行将sh interpreter替换为bash interpreter
vybvopom3#
您可以使用PDFsam:
ubof19bj4#
免责声明:我是我在这里提到的工具的作者。
sejda-控制台
这是一个免费的开源命令行界面,用于执行pdf操作,如合并或拆分。
merge
命令有一个选项,声明如下:[--添加空白]:如果页数为奇数,则在每个合并文档后添加一个空白页(可选)
既然你只需要打印pdf文件,我想你并不关心文件合并的顺序。下面是你可以使用的命令:
sejda-console merge -d /path/to/pdfs_to_merge -o /outputpath/merged_file.pdf --addBlanks
可从官方网站sejda.org下载。
**一个
这是一个由Sejda支持的Web应用程序,具有上述相同的功能,但通过Web界面。您需要上传文件,因此,根据输入集的大小,它可能不是适合您的解决方案。
如果您选择
merge
命令并上传您的pdf文档,您将必须标记复选框Add blank page if odd page number
以获得所需的行为。qlckcl4x5#
这是一个使用
pdftk
的最流行的解决方案的PowerShell版本。我是为Windows做的,但是你可以为其他平台使用PowerShell核心。mbjcgjjk6#
准备
1.安装Python并确保您有
pyPDF
包。1.在
/path/to/blank.pdf
中创建一个带有一个空格的PDF文件(我已经创建了blank pdf pages here)。1.将此文件保存为
pdfmerge.py
,保存在$PATH
的任意目录中。(我不是Windows用户。这在Linux下是直接的。如果您遇到错误/如果它工作,请让我知道。)1.使
pdfmerge.py
可执行每当你需要它
运行
uniprint.py
,找到仅包含要合并的PDF文件的目录。pdfmerge.py
测试
如果这在Windows和Mac上有效,请发表评论。
如果它不起作用/它可以改进,请总是留下评论。
它在Linux上工作。将3个PDF文件连接成一个200页的PDF文件只花了不到一秒钟。
clj7thdc7#
Martin有一个很好的开始,我更新到了PyPdf2,并做了一些调整,比如按文件名对输出进行排序。
u91tlkcl8#
@Chris Lercher在https://stackoverflow.com/a/12761103/1369181中的代码不太适合我。我不知道这是否是因为我正在处理Cygwin/mintty。另外,我必须使用
qpdf
而不是pdftk
。下面是适合我的代码:现在,所有的“aligned_”文件都有偶数页码,我可以使用
qpdf
(多亏了https://stackoverflow.com/a/51080927)将它们连接起来:这里是我用来创建空白页的https://unix.stackexchange.com/a/272878中的有用代码:
yrefmtwq9#
这一个为我工作。在macos上使用pdfcpu。可以这样安装:
并对https://stackoverflow.com/a/12761103/1369181的代码进行了轻微调整
注意!它在当前目录中创建和删除“对齐”目录。所以请随时改进它,使其安全使用。