iText 需要坐标才能在不同位置的现有 PDF 中创建表单域和页码。
我的 PDF 是动态的。所以我决定用一些标识符文本创建 PDF。并使用 TextRenderInfo 查找文本的坐标,并使用这些坐标创建文本字段和其他表单字段。
解析HelloWorld.java
public void extractText(String src, String dest) 抛出 IOException, DocumentException {
PrintWriter out = new PrintWriter(new FileOutputStream(dest));
PdfReader 阅读器 = 新 PdfReader(src);
PdfStamper stp = new PdfStamper(reader, new FileOutputStream(dest);
RenderListener listener = new MyTextRenderListener(out,reader,stp);
PdfContentStreamProcessor 处理器 = new PdfContentStreamProcessor(listener);
for ( int pageNum= 0; pageNum < reader.getNumberOfPages(); pageNum++ ){
PdfDictionary pageDic = reader.getPageN(pageNum);
PdfDictionary resourcesDic = pageDic.getAsDict(PdfName.RESOURCES);
processor.processContent(ContentByteUtils.getContentBytesForPage(reader, pageNum), resourcesDic);
}
out.flush();
out.close();
stp.close();
}
MyTextRenderListener.java
公共无效渲染文本(TextRenderInfo渲染信息){
if (renderInfo.getText().startsWith("Fill_in_TextField")){
// creates the text fields by getting co-ordinates form the renderinfo object.
createTextField(renderInfo);
}else if (renderInfo.getText().startsWith("Fill_in_SignatureField")){
// creates the text fields by getting co-ordinates form the renderinfo object.
createSignatureField(renderInfo);
}
}
问题是我在类的 extractText 方法中有一个页码ParsingHelloWorld。当在内部处理页面内容的 MyTextRenderListener 类中调用 renderText 方法时,我无法获取 pageNumber 以在标识符文本所在的特定坐标处生成 PDF 中的字段(例如 Fill_in_TextField、Fill_in_SignatureField..etc )。
在我的场景中获取页码的任何建议/想法。
提前致谢。