Java 如何在itext pdf中添加columnText作为批注
我正在使用columnText通过XMLWorkerHelper将html绘制成pdf,它工作得很好 唯一的问题是,我正在使用的代码库要求通过stamper.addAnnotation()绘制所有内容 我不知道如何将columnText转换为可以添加为注释的内容 某些上下文:这是一种将前端中的内容可编辑div转换为pdf元素的方法,但必须通过stamper.addAnnotation完成 如果不可能的话,还有什么方法可以将html绘制到PDFAnnotations中呢 当前使用列文本(JRuby)的代码: 注释通常附加方式的示例代码:Java 如何在itext pdf中添加columnText作为批注,java,pdf,pdf-generation,itext,jruby,Java,Pdf,Pdf Generation,Itext,Jruby,我正在使用columnText通过XMLWorkerHelper将html绘制成pdf,它工作得很好 唯一的问题是,我正在使用的代码库要求通过stamper.addAnnotation()绘制所有内容 我不知道如何将columnText转换为可以添加为注释的内容 某些上下文:这是一种将前端中的内容可编辑div转换为pdf元素的方法,但必须通过stamper.addAnnotation完成 如果不可能的话,还有什么方法可以将html绘制到PDFAnnotations中呢 当前使用列文本(JRuby
annotation = PdfAnnotation.createFreeText(@stamper.getWiter(), rect, "blah blah", defaultAppearance)
@stamper = PdfStamper.new(@reader, output_stream)
@stamper.addAnnotation(annotation, page_no)
defaultAppearance是PdfContentByte类型的,所以也许有一种方法可以将columnText转换为该类型?我还没弄明白怎么做
有什么想法吗?您的代码是JRuby,但由于您也标记了您的问题,我想Java示例也会对您有所帮助
您可以通过ColumnText
对象从HTML向外观添加内容,如下所示:
String html ="<html><h1>Header</h1><p>A paragraph</p><p>Another Paragraph</p></html>";
String css = "h1 {color: red;}";
ElementList elementsList = XMLWorkerHelper.parseToElementList(html, css);
PdfReader reader = new PdfReader(resource);
PdfStamper stamper = new PdfStamper(reader, result);
Rectangle cropBox = reader.getCropBox(1);
PdfAnnotation annotation = stamper.getWriter().createAnnotation(cropBox, PdfName.FREETEXT);
PdfAppearance appearance = PdfAppearance.createAppearance(stamper.getWriter(), cropBox.getWidth(), cropBox.getHeight());
ColumnText ct = new ColumnText(appearance);
ct.setSimpleColumn(new Rectangle(cropBox.getWidth(), cropBox.getHeight()));
elementsList.forEach(element -> ct.addElement(element));
ct.go();
annotation.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, appearance);
stamper.addAnnotation(annotation, 1);
stamper.close();
reader.close();
String html=“Header一段另一段”;
字符串css=“h1{color:red;}”;
ElementList elementsList=XMLWorkerHelper.parseToElementList(html,css);
PdfReader reader=新PdfReader(资源);
PdfStamper压模=新PdfStamper(读卡器,结果);
矩形cropBox=reader.getCropBox(1);
PdfAnnotation annotation=stamper.getWriter().createAnnotation(cropBox,PdfName.FREETEXT);
pdfaappearance-appearance=pdfaappearance.createAppearance(stamper.getWriter(),cropBox.getWidth(),cropBox.getHeight());
ColumnText ct=新的ColumnText(外观);
setSimpleColumn(新矩形(cropBox.getWidth(),cropBox.getHeight());
elementsList.forEach(element->ct.addElement(element));
ct.go();
注释.setAppearance(pdfantation.APPEARANCE_NORMAL,外观);
母版添加注释(注释1);
压模关闭();
reader.close();
(试验方法试验说明如EJASONY
)
对于此源文档
结果是这样的
正如您所看到的,您已经拥有了几乎所有必需的buildings Brick…您的代码是JRuby,但是由于您也标记了您的问题,我认为Java示例也会对您有所帮助
您可以通过ColumnText
对象从HTML向外观添加内容,如下所示:
String html ="<html><h1>Header</h1><p>A paragraph</p><p>Another Paragraph</p></html>";
String css = "h1 {color: red;}";
ElementList elementsList = XMLWorkerHelper.parseToElementList(html, css);
PdfReader reader = new PdfReader(resource);
PdfStamper stamper = new PdfStamper(reader, result);
Rectangle cropBox = reader.getCropBox(1);
PdfAnnotation annotation = stamper.getWriter().createAnnotation(cropBox, PdfName.FREETEXT);
PdfAppearance appearance = PdfAppearance.createAppearance(stamper.getWriter(), cropBox.getWidth(), cropBox.getHeight());
ColumnText ct = new ColumnText(appearance);
ct.setSimpleColumn(new Rectangle(cropBox.getWidth(), cropBox.getHeight()));
elementsList.forEach(element -> ct.addElement(element));
ct.go();
annotation.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, appearance);
stamper.addAnnotation(annotation, 1);
stamper.close();
reader.close();
String html=“Header一段另一段”;
字符串css=“h1{color:red;}”;
ElementList elementsList=XMLWorkerHelper.parseToElementList(html,css);
PdfReader reader=新PdfReader(资源);
PdfStamper压模=新PdfStamper(读卡器,结果);
矩形cropBox=reader.getCropBox(1);
PdfAnnotation annotation=stamper.getWriter().createAnnotation(cropBox,PdfName.FREETEXT);
pdfaappearance-appearance=pdfaappearance.createAppearance(stamper.getWriter(),cropBox.getWidth(),cropBox.getHeight());
ColumnText ct=新的ColumnText(外观);
setSimpleColumn(新矩形(cropBox.getWidth(),cropBox.getHeight());
elementsList.forEach(element->ct.addElement(element));
ct.go();
注释.setAppearance(pdfantation.APPEARANCE_NORMAL,外观);
母版添加注释(注释1);
压模关闭();
reader.close();
(试验方法试验说明如EJASONY
)
对于此源文档
结果是这样的
如您所见,您已经拥有了几乎所有所需的建筑砖…PDFanRotation可以通过任何所需的方法创建PDFanRotation可以通过任何所需的方法创建