当前位置: 首页 > 知识库问答 >
问题:

使用RenderListener界面查找PDF中的一段文本时无法获取页码

洪高阳
2023-03-14

iText需要坐标来在不同的地方创建现有PDF中的表单字段和页码。

我的PDF是动态的。所以我决定创建带有一些标识符文本的PDF。并使用TextRenderInfo查找文本的坐标,然后使用这些坐标创建textfields和其他表单字段。

ParsingHelloWorld.java
    public void extractText(String src, String dest) throws IOException, DocumentException  {
        PrintWriter out = new PrintWriter(new FileOutputStream(dest));
        PdfReader reader = new PdfReader(src);
        PdfStamper stp = new PdfStamper(reader, new FileOutputStream(dest);
        RenderListener listener = new MyTextRenderListener(out,reader,stp);
        PdfContentStreamProcessor processor = 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();

在我的方案中获得页码的任何建议/想法。

提前道谢。

共有1个答案

杜茂
2023-03-14

那很容易。向MyTextListener添加参数:

protected int page;
public void setPage(int page) {
   this.page = page;
}

现在,当您在Parsinghelloworld中循环页面时,将页码传递给MyTextListener:

listener.setPage(pageNum);

现在,您可以在rendertext()方法中访问该数字,并且可以将其传递给createTextField()方法。

注意,我认为你的循环是错误的。页码不是从第0页开始的,而是从第1页开始的。

 类似资料:
  • FPDI易于使用和安装(只需提取文件并调用PHP脚本即可),但FPDI不支持许多压缩技术。然后返回一个错误: FPDF错误:此文档(test_1.pdf)可能使用了FPDI附带的免费解析器不支持的压缩技术。 这将在流中打开PDF文件,并搜索某种类型的字符串,包含pagecount或类似的内容。 (查找)不起作用,因为只有少数文档内部有参数,所以大多数情况下它不会返回任何内容。来源。 (查找)没有得

  • 问题内容: 如何使用Selenium检查当前页面上是否存在给定的文本字符串? 问题答案: 代码是这样的:

  • 我正在尝试使用表单识别器-Azure认知服务从pdf文件中提取文本。我使用的是定制模型,我用我的模型训练这项服务,然后尝试提取数据。 我的PDF通常有超过1页。但是我对从第一页提取文本感兴趣。Rest所有页面没有任何重要性。 那么,有没有什么方法可以训练我的系统通过给出页码从选定的页面中提取文本? 祝好 玛杜

  • 我可以使用哪些python包来找出特定的“搜索字符串”位于哪个页面上? 我研究了几个python pdf包,但不知道我应该使用哪一个。PyPDF似乎没有这个功能和PDFMiner似乎是一个过度杀这样简单的任务。有什么建议吗? 更准确地说:我有几个PDF文档,我想提取介于字符串“Begin”和字符串“End”之间的页面。

  • 问题内容: 如何使用不带HTML标记的Selenium Webdriver获得网页的可见文本部分? 我需要与Htmlunit中的函数HtmlPage.asText()等效的东西。 仅使用WebDriver.getSource函数获取文本并使用jsoup解析文本是不够的,因为页面中可能存在隐藏的元素(通过外部CSS),我对此并不感兴趣。 问题答案: 这样做(或使用其他选择器选择顶部元素),然后对该元

  • 请不要使用“tika”作为答案。我已经尝试了这个问题的答案: 如何从PDF文件中提取文本? 我有这个PDF文件,https://drive.google.com/file/d/1aUfQAlvq5hA9kz2c9CyJADiY3KpY3-Vn/view?usp=sharing,我想复制文本。 输出为“提交日期:2019-10-21 16:03:36.093 |表单键:5544”,这只是文本的一部分