将 PDF 文件与奇数页文档末尾的额外空白页合并 - qpdf

  • 本文关键字:空白 qpdf 合并 文件 PDF 文档 qpdf
  • 更新时间 :
  • 英文 :


我希望为此使用qpdf。

我正在打印很多小文件,需要双面打印它们,所以我合并了 20 个文档,最后得到一个 200 页的 pdf。 然后,我可以让打印机打印,甚至翻转页面,然后将堆栈翻转并放回打印机并打印奇数,所以我们使用纸张的两面。

我的问题是,我如何检测任何页数为奇数的文档的末尾并添加单个空白页;这样,当我进行双面打印时,每个文档都与其他文档完全分开,而不仅仅是打印在完成文档的背面。

如果你的页数是奇数,只需调用

cpdf -pad-multiple

偶数 1 大于奇数。例如,对于 19 页,运行

cpdf -pad-multiple 20 in.pdf -o out.pdf

您可以使用cpdf -pages获取页数。

目前使用 FOSS qpdf 10.6.3 这在 Windows 中可以通过类似的东西来实现(注意 %% 用于 batch.cmd(

for /f %%N in ('qpdf --show-npages in.pdf') do set VAR=%%N& set /a num=2*(%%N/2)+1& if .%num%.==.%var%. qpdf in.pdf --pages . blankA4P.pdf -- out.pdf

请注意,整数数学是向下舍入赔率,因此 31 = 30+1 是匹配的,但 32 = 32+1 将不匹配。

如果不检查 in.pdf 的尺寸就不容易知道是否需要 blankA4P.pdf,因此最好获取匹配的准备好页面的最后一页尺寸或分组批量应用每个形状。

使用 cpdf(如前面的答案所述(,我们可以按照cpdf -create-pdf -create-pdf-pages 1 -o blank.pdf的行按需构建空白并使用页面大小,但是 cpdf 对于 OP 情况有更好的选择,所以最简单的cpdf -pad-multiple 2 in.pdf -o out.pdf正如约翰惠廷顿所暗示的那样

所以现在我们有一个完美的短单行解决方案。然而,cpdf不是自由和开放源码软件

我已经用 qpdf 询问过是否有更简单的方法,只有 qpdf,所以请注意这个空间 https://github.com/qpdf/qpdf/issues/753

我将继续寻找一种进一步简化的方法,因为我喜欢更简单的工作流程,但这是我用来确保我没有两篇文章共享一张纸的方法。

pacman::p_load(tidyverse, pdftools, qpdf)
# some prep
directory <- "Some/FileFolder/Path"
filelist <- (paste(directory, "/",
list.files(directory,
pattern = "*.pdf"), sep = ""))
# bust apart all pdf to inspect
my_pages <- as.list(lapply(filelist, pdf_split))
page_summ <- cbind.data.frame(filelist,
lengths(my_pages)) %>%
rename(filename = 1,
pages = 2) %>%
mutate(is_odd = pages %%2==1)

# separate into odd and even sets
odd_docs <- page_summ %>%
filter(is_odd == TRUE)
even_docs <- page_summ %>%
filter(is_odd == FALSE)
# I could not find an R process for adding a page to PDFs.
# For now, I will add a buffer page to docs via a PDF program.
# Once you are satisfied with your even_docs subset, pdf_combine
tocombine <- as.data.frame(even_docs$filename)
lapply(tocombine, pdf_combine)

这会将组合文件自动生成到先前定义的目录中。新文件名不能在 lapply(( 中使用 "output = " 进行设置。查找新文件名 ="firstnameintocombine_combined.pdf"。

最新更新