簡體   English   中英

pdf中如何根據奇數頁和偶數頁添加空白頁

[英]How to add blank pages in pdf based on odd and even pages

我想按照姓氏字母順序創建 pdf 文件,然后這個 PDF 文件將用於雙面打印。 創建 pdf 文件時,姓氏的第一個字母應該有分頁符,然后在開始下一個字母之前有一個空白頁。 如果“A”字母在偶數頁上打印完,“B”字母可以在下一個奇數頁上開始打印。 如果“A”字母在奇數頁上完成打印,下一個偶數頁應該是空白的。 “B”字母應該從下一個奇數頁開始。另一種說法是每個字母都應該從下一個可用的奇數頁開始打印。

我試過 telerik 報告生成 pdf 文件,但在 telerik 報告中,生成 pdf 文件時我無法跟蹤頁碼。

您可以分別生成每個文件,然后在每個文件上運行cpdf -pad-multiple 2 in.pdf -o out.pdf以根據需要添加空白頁。 然后你可以將它們全部與cpdf 1.pdf 2.pdf 3.pdf... -o final.pdf

您可以將 PDF 工具包pdftk作為程序的外部進程調用:

使用pdftk.exe yourfile.pdf dump_data ,您可以找到包含的頁面數。

示例 output:

c:\TEXTS>pdftk.exe example.pdf dump_data
InfoKey: Creator
InfoValue:
InfoKey: Title
InfoValue: Citations, mots célèbres 2
InfoKey: Producer
InfoValue: wkhtmltopdf
InfoKey: CreationDate
InfoValue: D:20130904112136+02'00'
NumberOfPages: 5

如果NumberOfPages是奇數,使用如下命令到 append 空白頁:

pdftk.exe A=yourfile.pdf B=empty_page.pdf cat A B output yourfile_even.pdf

整理完所有文件后,您可以將它們連接起來:

pdftk.exe A=a.pdf B=b.pdf C=c.pdf cat A B C output result.pdf

pdftk的更新替代品是開源工具qpdf

通常使用 qpdf 或 cpdf 可執行文件,可以根據需要添加額外的頁面, https://stackoverflow.com/a/73575464/10802527但是從這個問題的語氣來看,您希望在 PDF 構建期間“內聯”,在在這種情況下,最好不要構建 A.pdf B.pdf並在合並之前添加單個空白最好構建完整的 AZ.pdf 然后根據需要注入空白。

這需要您構建一個個性化的解決方案,您可以在其中提取頁碼,所以不用您的示例

  • A章=第1頁
  • B章=第4頁
  • 第C章=第6頁
  • D章=第9頁

所以你知道你需要在第 4 頁之前注入空白以移動 4 到 5,這將移動 6 到 7 所以現在你不需要移動第 6 頁但是第 9 頁現在是第 10 頁所以現在需要在第 10 頁之前注入空白。所以你需要跟蹤以前的提升。

您可以將其編寫為一個簡單的子例程,以調用將頁面內容報告為數字的庫之一,理想情況下還包括空白頁插入方法。

在偽代碼中你需要 2 個跟蹤器

  • 如果最后一次注入是偶數,那么下一次是奇數,反之亦然(觸發器)
  • 頁面注入是當前 + 以前的空白(增量值)

注意 cpdf 中 JohnWhitington 的后續回答表明,在上述情況下,這將是最簡單的使用方法
cpdf -pad-before in.pdf 4,9 -o output.pdf

cpdf 將執行第二個移位增量部分,因此 4 變為 5(& 6 變為 7),然后舊的 9 將移動到 11,但您仍然需要確定觸發器 state (奇數或偶數)之前哪些頁面需要空白他們。

大致你需要

set flag=EVEN

loop NEXT PAGE
if page is last page then exit from loop
is page a section heading ?
  then if page odd and flag is ODD save page num and set flag as EVEN and go NEXT PAGE
       if page odd and flag is EVEN go next page
       if page even and flag is ODD go next page
       if page even and flag is EVEN save page num and set flag as ODD and go NEXT PAGE
else page not section heading go NEXT PAGE
  • 1 保持標志為 EVEN
  • 2 & 3 不是部分
  • 4是section,是even,flag是EVEN,保存page num,設置flag ODD
  • 5 不是節
  • 6 是節,是偶數,標志是奇數(跳過保存數)
  • 7 & 8 不是部分
  • 9是節,是奇數,標志是奇數,保存頁碼,設置標志偶數

... ETC。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM