Java读写pdf文件的详细实现方法

 更新时间:2023年09月28日 09:30:40   作者:Inspire2023  
最近公司的项目中需要操作pdf文件,所以这里给大家总结下方法,这篇文章主要给大家介绍了关于Java读写pdf文件的详细实现方法,文中通过代码介绍的非常详细,需要的朋友可以参考下

Java读写pdf文件

在OA业务开发中,经常需要java后台读取或生成pdf文件,
itextpdf是一个常用的java操作pdf的开源库

物料准备:

1.引入itextpdf依赖

2.定义Text2PdfUtil工具类

引入itextpdf相关的依赖

 <dependency>
             <groupId>com.itextpdf</groupId>
             <artifactId>itext-asian</artifactId>
             <version>5.2.0</version>
         </dependency>
         <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
        </dependency>

定义工具类Text2PdfUtil.java

package cn.ath.knowwikibackend.util;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
import java.io.*;
import java.nio.charset.Charset;
/**
 * 需要引入的依赖
 *
 * <dependency>
 *             <groupId>com.itextpdf</groupId>
 *             <artifactId>itext-asian</artifactId>
 *             <version>5.2.0</version>
 *         </dependency>
 *
 *         <dependency>
 *             <groupId>com.itextpdf</groupId>
 *             <artifactId>itextpdf</artifactId>
 *             <version>5.5.13</version>
 *         </dependency>
 *
 */
public class Text2PdfUtil {
    /**
     * txt文本文件  转pdf文件
     * @param text   F:/data/te616.txt
     * @param pdf  F:/data/aet618.pdf
     * @throws DocumentException
     * @throws IOException
     */
    public static void text2pdf(String text,String pdf) throws DocumentException, IOException {
        Document doc = new Document();
        OutputStream os = new FileOutputStream(new File(pdf));
        PdfWriter.getInstance(doc, os);
        doc.open();
        //指定 使用内置的中文字体
        BaseFont baseFont =
                BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
        Font font = new Font(baseFont,12,Font.NORMAL);
        //指定输出编码为UTF-8
        InputStreamReader isr = new InputStreamReader(
                new FileInputStream(new File(text)), Charset.forName("UTF-8"));
        BufferedReader br = new BufferedReader(isr);
        String str = "";
        while((str = br.readLine()) != null){
            doc.add(new Paragraph(str,font));
        }
        isr.close();
        br.close();
        doc.close();
    }
    /**
     * 读取pdf文件的内容
     * @param filename  F:/data/aet618.pdf
     * @return  String
     */
    public static String readPDF(String filename){
        StringBuilder result = new StringBuilder();
        try {
            PdfReader reader = new PdfReader(filename);
            int countPage = reader.getNumberOfPages();
            for(int i=1;i<=countPage;i++){
                result.append(PdfTextExtractor.getTextFromPage(reader, i));
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result.toString();
    }
}

测试

@Test
    void contextLoads() throws DocumentException, IOException {
        String txtPath = "E:/test617.txt";
        String pdfPath = "E:/test617.pdf";
        Text2PdfUtil.text2pdf(txtPath,pdfPath);
        System.out.println(Text2PdfUtil.readPDF(pdfPath));
    }

总结

到此这篇关于Java读写pdf文件的详细实现方法的文章就介绍到这了,更多相关Java读写pdf文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java 中基本算法之希尔排序的实例详解

    java 中基本算法之希尔排序的实例详解

    这篇文章主要介绍了java 中基本算法之希尔排序的实例详解的相关资料,这里提供简单实现的实例,帮助大家学习理解此部分知识,需要的朋友可以参考下
    2017-07-07
  • Java Guava排序器Ordering原理及代码实例

    Java Guava排序器Ordering原理及代码实例

    这篇文章主要介绍了Java Guava排序器Ordering原理及代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Java利用广度优先搜索实现抓牛问题

    Java利用广度优先搜索实现抓牛问题

    广度优先搜索是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。本文将利用广度优先搜索实现抓牛问题,感兴趣的可以了解下
    2022-06-06
  • Java调用第三方http接口的四种方式总结

    Java调用第三方http接口的四种方式总结

    这篇文章主要给大家介绍了关于Java调用第三方http接口的四种方式,在实际开发中我们经常会与第三方公司进行合作,接入第三方接口,文中给出了详细的代码实例,需要的朋友可以参考下
    2023-08-08
  • Springboot使用influxDB时序数据库的实现

    Springboot使用influxDB时序数据库的实现

    项目中需要存放大量设备日志,且需要对其进行简单的数据分析,信息提取工作,所以本文就介绍一下Springboot使用influxDB时序数据库,感兴趣的可以了解一下
    2021-08-08
  • Java将科学计数法数据转为字符串的实例

    Java将科学计数法数据转为字符串的实例

    下面小编就为大家带来一篇Java将科学计数法数据转为字符串的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • 如何查看Linux上正在运行的所有Java程序列表

    如何查看Linux上正在运行的所有Java程序列表

    在linux操作时,经常要查看运行的项目的进程和端口,下面这篇文章主要给大家介绍了关于如何查看Linux上正在运行的所有Java程序列表的相关资料,需要的朋友可以参考下
    2023-10-10
  • spring boot实现在request里解密参数返回

    spring boot实现在request里解密参数返回

    这篇文章主要介绍了Spring Boot实现在request里解密参数返回操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • spring boot中interceptor拦截器未生效的解决

    spring boot中interceptor拦截器未生效的解决

    这篇文章主要介绍了spring boot中interceptor拦截器未生效的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java中BigDecimal比较大小的3种方法(​​compareTo()、​​equals()​​和​​compareTo()​​)

    Java中BigDecimal比较大小的3种方法(​​compareTo()、​​equals()​​和​​compar

    这篇文章主要给大家介绍了关于Java中BigDecimal比较大小的3种方法,方法分别是​​compareTo()、​​equals()​​和​​compareTo()​​,在Java中使用BigDecimal类来进行精确的数值计算,需要的朋友可以参考下
    2023-11-11

最新评论