Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了java – iText Android – 在现有PDF中添加文本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我们有一些带有一些字段的PDF来收集一些数据,我必须在Android上通过在这些位置添加一些文本以iText编程方式填写它.我一直在考虑实现这一目标的不同方法,但每个方法都没有成功.

注意:我的大多数测试都使用Android版iText(iTextG 5.5.4)和三星Galaxy Note 10.1 2014(Android 4.4).

>我从一开始就采用的方法是在给定页面上“绘制”给定坐标上的文本.这对字段的管理有一些问题(我必须知道字符串的长度,并且很难将每个文本放在pdf的精确坐标中).但最重要的是,在某些设备/ OSVersions中,该过程的性能非常慢(在Nexus 5和5.0.2中效果很好,但在Note 10.1上使用5MB Pdf需要几分钟).

    pdfReader = new PdfReader(is);

    document = new Document();

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    pdfCopy = new PdfCopy(document,baos);
    document.open();

    PdfImportedPage page;
    PdfCopy.PageStamp stamp;

    for (int i = 1; i <= pdfreader.getnumberofpages();="" i++)="" {="" page="pdfCopy.getImportedPage(pdfReader,i);" first="" page="1" stamp="pdfCopy.createPageStamp(page);" for="" (int="" i="0;"><10; i++)="" {="" int="" posx="i*50;" int="" posy="i*100;" phrase="" phrase="new" phrase("example="" text",fontfactory.getfont(fontfactory.helvetica,12,basecolor.red));="" columntext.showtextaligned(stamp.getovercontent(),element.align_center,phrase,posx,posy,0);="" }="" stamp.altercontents();="" pdfcopy.addpage(page);="" }="">

>我们虽然关于添加“表单字段”而不是绘图.这样我就可以配置TextField并避免自己管理文本.但是,最终的PDF不应该有任何注释,因此我需要将其复制到一个没有注释的新Pdf中,并绘制那些“表单字段”.我没有这方面的例子,因为我无法执行此操作,我甚至不知道这是否可行/值得.
>第三个选项是接收已添加“表单字段”的Pdf,这样我只需填写它们.但是我仍然需要创建一个包含所有这些字段且没有注释的新Pdf …

我想知道执行此过程的最佳性能方式,以及实现它的任何帮助.我是iText的新手,任何帮助都会非常感激.

谢谢!

编辑

最后,我使用了第三个选项:带有可编辑字段的PDF,然后我们使用“展平”来创建一个包含所有文本的不可编辑的PDF.

代码如下:

    pdfReader = new PdfReader(is);

    FileOutputStream fios = new FileOutputStream(outPdf);

    PdfStamper pdfStamper = new PdfStamper(pdfReader,fios);
    //Filling the PDF (It's totally necessary that the PDF has Form fields)
    fillPDF(pdfStamper);
    //Setting the PDF to uneditable format
    pdfStamper.setFormFlattening(true);

    pdfStamper.close();

以及填写表格的方法

public static void fillPDF(PdfStamper stamper) throws IOException,DocumentException{
    //Getting the Form fields from the PDF
    AcroFields form = stamper.getAcroFields();
    Set

这种方法的唯一之处在于您需要知道每个字段的名称才能填充它.

最佳答案
iText中有一个称为“展平”的过程,它接受表单字段,并用字段包含的文本替换它们.

我没有在几年内使用iText(在Android上也没有使用过),但是如果您在手册或在线示例中搜索“展平”,您应该找到如何操作.

大佬总结

以上是大佬教程为你收集整理的java – iText Android – 在现有PDF中添加文本全部内容,希望文章能够帮你解决java – iText Android – 在现有PDF中添加文本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: