PdfTron多份双面打印异常:奇数页文档第二份未从新纸开始
解决PdfTron SDK奇数页文档双面打印多份时的分页异常
问题场景
- 打印的PDF文档页数为奇数
- 设置打印份数≥2
- 启用了自动双面打印(
e_Duplex_Auto) - 异常表现:第二份文档的第一页会被打印在第一份文档最后一张纸的背面,两份文档无法正确分隔
当前打印模式设置代码
public static PrinterMode GetPdfPrint(PrinterInformation printerInformation, PrintQueue printQueue, int numberofCopies) { PrinterMode printerMode = new PrinterMode(); printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto); printerMode.SetCollation(true); printerMode.SetAutoRotate(true); printerMode.SetCopyCount(numberofCopies); printerMode.SetScaleType(PrinterMode.ScaleType.e_ScaleType_FitToOutputPage); printerMode.SetAutoCenter(true); return printerMode; }
解决方案
方案1:通过PrinterMode启用自动补空白页
PdfTron SDK的PrinterMode提供了针对奇数页文档的空白页补充设置,开启后会在每份文档末尾自动添加空白页,确保双面打印后每份文档结束在纸张正面,下一份从新纸张开始。
修改代码,添加自动补空白页的配置:
public static PrinterMode GetPdfPrint(PrinterInformation printerInformation, PrintQueue printQueue, int numberofCopies) { PrinterMode printerMode = new PrinterMode(); printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto); printerMode.SetCollation(true); printerMode.SetAutoRotate(true); printerMode.SetCopyCount(numberofCopies); printerMode.SetScaleType(PrinterMode.ScaleType.e_ScaleType_FitToOutputPage); printerMode.SetAutoCenter(true); // 新增:奇数页文档每份末尾自动补空白页 printerMode.SetAddBlankPageWhenOdd(true); return printerMode; }
方案2:手动给文档添加空白页(方案1无效时备用)
如果SDK自动补页功能无法生效,可以在打印前手动处理PDF文档,判断页数是否为奇数,若是则添加空白页:
using (PDFDoc doc = new PDFDoc("input.pdf")) { doc.InitSecurityHandler(); int pageCount = doc.GetPageCount(); if (pageCount % 2 != 0) { // 向文档末尾添加空白页 Page blankPage = doc.PageCreate(); doc.PagePushBack(blankPage); } // 执行后续打印逻辑 }
处理后每份文档页数为偶数,双面打印时每份最后一页落在纸张正面,第二份自然从新纸张开始打印。
内容的提问来源于stack exchange,提问作者Jayashan Thivanka
相关产品推荐
相关产品推荐

