PDF文件解析大法

pdf 解析的开源代码较多,一般常用的 spirePdf 、pdfbox 等。下面就对这两种类解析方式的demo附上,以便温故而知新~

首先看下 pdfbox 的demo

package com.company.PDF;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;

import java.io.FileInputStream;
public class pdfUtil {
    public static void main(String[] args)  throws Exception{
       PDDocument document = PDDocument.load(new FileInputStream("D:\\a.pdf"));
        document.getClass();
        //使用PDFTextStripper 工具
        PDFTextStripper tStripper = new PDFTextStripper();
        //设置文本排序,有规则输出
        tStripper.setSortByPosition(true);
        //获取所有文字信息
        String info = tStripper.getText(document);
        String lines[] = info.split("\\r?\\n");
        System.out.println(info);
    }
}

注意这种解析出来的去除了多余的空格,将数据按行解析

下面看下 spirePdf的demo

package com.company.PDF;

import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;

public class SpirePdfUtil {
    public static void main(String[] args) {
        String content = "";

        // 创建PdfDocument实例
        PdfDocument doc = new PdfDocument();
        // 加载PDF文件
        doc.loadFromFile("D:\\a.pdf");

        // 创建StringBuilder实例
        StringBuilder sb = new StringBuilder();

        PdfPageBase page;
        // 遍历PDF页面,获取每个页面的文本并添加到StringBuilder对象
        for (int i = 0; i < doc.getPages().getCount(); i++) {
            page = doc.getPages().get(i);
            sb.append(page.extractText(true));
        }
        content = sb.toString();
        System.out.println(content);
    }
}

这种解析出来的文本会保持空格 ,数据也是按行解析

当数据解析后,我们可以使用换行符将文本 String lines[] = content.split(“\r?\n”); 分割成字符串数组,然后对每一行进行处理。当我们解析的文本不是很规范时,往往需要根据字段名称 去定位 具体取值,这时候我们可以用 spirePdf 去解析。另外这两个工具类还有很多其他强大的功能,可以参考具体api。
相关jar包,点击 这里 下载!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在C语言中实现PDF文件解析的过程可以包括以下几个步骤: 1. 首先,需要定义一些辅助函数,比如用于判断对象类型的函数。其中,引用给出的示例代码是一个判断是否为图像对象的函数,而引用给出的示例代码是一个判断是否为字体描述符对象的函数。 2. 接下来,需要定义保存字体的函数。其中,引用给出的示例代码是一个保存字体的函数,其中包括了一些用于处理字体数据的变量和操作,比如定义一个缓冲区用于保存字体数据。 3. 在解析PDF文件之前,需要打开文件并读取其内容。可以使用C语言中的文件操作函数来实现这一步骤。 4. 接下来,需要解析PDF文件的结构。这包括解析PDF的头部信息、交叉引用表和对象流等。可以使用C语言中的字符串处理函数和正则表达式来实现这一步骤。 5. 解析文件结构后,需要提取所需的数据,比如文本、图像和字体等。可以使用前面定义的辅助函数来判断对象类型,并使用相应的函数来提取数据。 6. 最后,需要进行清理工作,比如释放内存和关闭文件等。 需要注意的是,以上只是一个大致的框架,具体的实现可能会因为不同的PDF文件格式和解析需求而有所不同。在实际的开发中,还需要考虑异常处理、内存管理和性能优化等方面的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [c++ mupdf 提取pdf文件里面图片](https://blog.csdn.net/u011269801/article/details/123951280)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值