2010-12-01 242 views
2

我有一个pdf文件(从扫描生成),并希望设置打印之前的机制,我提示输入一个字段(控制编号),并将字段打印在文档的evey页面中。我怎样才能做到这一点?打印PDF文件

回答

1

您可以使用iTextSharp将文本添加到PDF中,并且可以使用GhostScript将PDF发送到打印机。

0

一个很好的选择是PDFSharp - 我们将它用于各种任务,从在图形上渲染表单,在PDF文档中嵌入条形码等等 - 作品,我强烈推荐它。

1

IIRC,有一个文档级别的预打印事件,你可以用javaScript钩入。

1)在PDF的每个页面上放一个完全相同名称的字段。

PdfReader reader = new PdfReader("somePath.pdf"); 
PdfStamper stamper = new PdfStamper(reader, outStream); 
PdfWriter writer = stamper.getWriter(); 

for (int curPage = 1; curPage <= reader.getNumberOfPages(); ++curPage) { 
    TextField fld = new TextField (writer, someRect, "thatFieldName"); 
    // might want to modify the field appearance here. 

    stamper.addAnnotation(fld.getTextField(), curPage); 
} 

2)在预打印事件中,查询用户此字段值,然后将该字段设置为该值。

您需要在文档目录中创建其他操作字典。在Acrobat中相当不错。高级 - >文档处理 - >设置文档操作。你想要“打印”事件:

var response = app.response(questionText/*, dialogTitle, defaultVal, bPassword, entryLabel*/); 
this.getField("thatFieldName").value = response; 

没什么大不了。以编程方式在iText中进行此操作(我个人最喜欢的,不会有偏见;)

PdfReader reader = new PdfReader("myFile.pdf"); 
PdfStamper stamper = new PdfStamper(myReader, outStream); 
PdfWriter stamperWriter = stamper.getWriter(); 

stamperWriter.setAdditionalAction(PdfName.WP, PdfAction.javaScript(scriptString, stamperWriter)); 
stamper.close(); 
+0

请问我是否知道IIRC是什么? – Lamps 2011-09-12 12:14:25