如何在 Java 中读写 PDF 文件
原文:https://www.studytonight.com/java-examples/how-to-read-and-write-pdf-file-in-java
在这篇文章中,我们将学习使用 Java 代码读写 pdf 文件。pdf 是一个便携式文档文件,用于传输信息文档。它是广泛使用的文件格式之一。
为了处理 Java 中的 pdf 文件,我们使用了由 apache 基金会设计和开发的 pdfbox 库。它用于以高效的方式创建、读取、写入和追加 pdf 文件。
在阅读 pdf 文件之前,您必须下载此库。可以在这里下载。下载的文件基本上都是 JARs 文件,所以请将它们导入到您的项目中,并开始使用 pdf。
有一些重要的类PDDocument
、PDPage
、PDPageContentStream
等需要加载和获取数据。
如果您正在使用 maven 项目,那么在您的 pom.xml 文件中使用以下依赖项。
//POM . XML
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.studytonight.pdfExample</groupId>
<artifactId>pdfExample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.12</version>
</dependency>
</dependencies>
</project>
它会自动下载你项目中所有需要的 JARs。所以,你不需要手动下载罐子。添加这些依赖项后,在您的 Java 项目中使用下面的示例代码来读写 PDF 文件。
**## 举例时间:
让我们从一个使用 PDFBox 库读取 pdf 文件的例子开始。在这里,我们有一个 pdf 文件test.pdf,我们用load()
方法加载,用getText()
方法读取。
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
public class Main {
public static void main(String[] args) throws IOException{
try {
// Creating file instance
File file = new File("test.pdf");
// Loading pdf file
PDDocument document = PDDocument.load(file);
PDFTextStripper pdfStripper = new PDFTextStripper();
// Fetching PDF document
String text = pdfStripper.getText(document);
System.out.println(text);
// Closing the document
document.close();
}catch(Exception e) {
System.out.println(e);
}
}
}
示例:
由于 PDFBox 是为 pdf 处理而制作的,所以我们可以将数据写入 pdf 文件。这里,我们在追加模式下向test.pdf文件写入数据,对于追加模式,我们在PDPageContentStream
中使用了APPEND
常量,这样文件数据就不会被替换。我们使用setFont()
方法设置字体,save()
方法保存对文件的更改。
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class Main {
public static void main(String[] args) throws IOException{
PDDocument document = PDDocument.load(new File("test.pdf"));
PDPage page = document.getPage(0);
PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND,true,true);
contentStream.beginText();
//Setting the font
contentStream.setFont(PDType1Font.TIMES_ROMAN, 12);
//Setting the text position
contentStream.newLineAtOffset(25, 500);
String text = "This message is writtern to the pdf file.";
contentStream.showText(text);
contentStream.endText();
contentStream.close();
// Saving file after writing
document.save(new File("test.pdf"));
document.close();
}
}
执行此程序后,将在当前目录中创建一个 PDF 文件test.pdf。您可以打开该文件,看到它包含我们用代码保存的文本。