如何在 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。您可以打开该文件,看到它包含我们用代码保存的文本。