web应用票据打印实现(三)

itext是一个开源库,用以动态的创建、修改pdf文件。通过itext,我们就可以在上一篇创建的pdf模板中填入数据,生成供打印用的pdf文档了。

首先我们需要打开模板,者通过创建一个PdfReader 对象来实现:

String printableTemplate = ... //模板文件的路径
PdfReader printableReader = new PdfReader(printableTemplate);

接下来还需要创建一个PdfStamper对象来向模板中添加数据:

String fileName = "your_file_name";
printableStamper = new PdfStamper(printableReader, new FileOutputStream(fileName));

从PdfStamper对象中得到模板中全部的表单域

AcroFields printableForm = printableStamper.getAcroFields();    

将数据填入模板:

for (Map.Entry<String,  String> entry: printableDocument.getTemplateFieldValueMap().entrySet()) {
    printableForm.setField(entry.getKey(), entry.getValue());
}

通过setFormFlattening(true)来去除pdf中的表单,这使的pdf文档不能再次编辑,但也减少了文档的大小。最后关闭PdfStamper对象即在fileName路径处创建了我们最终用来打印的pdf文档。

printableStamp.setFormFlattening(true);         
printableStamp.close();     

关于更多itext库的用法,可以参考iText in Action 这本书:

width=”738″ height=”523″ class=”preview-iframe” scrolling=”no” src=”http://download.csdn.net/source/preview/8494339/aab6a24aeb806ab63f795872e092a38e”>

标签