在 Java 中,将图片转换为 PDF 可以使用不同的方式。以下是三种常见的实现方式,每种方式都包含了详细的步骤流程和相应的代码示例。
iText 是一个流行的 Java 库,用于创建和操作 PDF 文件。以下是将图片转换为 PDF 的步骤:
步骤流程:
Maven 依赖:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13.2</version>
</dependency>
Gradle 依赖:
implementation 'com.itextpdf:itextpdf:5.5.13.2'
示例代码:
import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileOutputStream;
public class ImageToPdfConverter {
public static void main(String[] args) {
String imagePath = "path/to/your/image.png";
String pdfPath = "path/to/output/file.pdf";
try {
Document document = new Document(PageSize.A4);
PdfWriter.getInstance(document, new FileOutputStream(pdfPath));
document.open();
Image image = Image.getInstance(imagePath);
image.scaleToFit(PageSize.A4.getWidth(), PageSize.A4.getHeight());
document.add(image);
document.close();
System.out.println("PDF created successfully.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Apache PDFBox 是另一个用于创建和操作 PDF 文件的 Java 库。以下是使用 PDFBox 将图片转换为 PDF 的步骤:
步骤流程:
Maven 依赖:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.28</version>
</dependency>
Gradle 依赖:
implementation 'org.apache.pdfbox:pdfbox:2.0.28'
示例代码:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDStream;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ImageToPdfConverter {
public static void main(String[] args) {
String imagePath = "path/to/your/image.png";
String pdfPath = "path/to/output/file.pdf";
try {
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDImageXObject image = PDImageXObject.createFromFile(imagePath, document);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.drawImage(image, 0, 0);
contentStream.close();
document.save(pdfPath);
document.close();
System.out.println("PDF created successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
这种方式使用 JavaFX 创建一个简单的 WebView 来加载包含图片的 HTML,然后使用 Flying Saucer 库将 HTML 渲染为 PDF。以下是步骤:
步骤流程:
Maven 依赖:
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.1.22</version>
</dependency>
Gradle 依赖:
implementation 'org.xhtmlrenderer:flying-saucer-pdf:9.1.22'
示例代码:
import org.xhtmlrenderer.pdf.ITextRenderer;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class ImageToPdfConverter {
public static void main(String[] args) {
String imagePath = "path/to/your/image.png";
String pdfPath = "path/to/output/file.pdf";
String html = "<html><body><img src='" + imagePath + "'/></body></html>";
try {
try (OutputStream os = new FileOutputStream(pdfPath)) {
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(html);
renderer.layout();
renderer.createPDF(os);
}
System.out.println("PDF created successfully.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
这些是将图片转换为 PDF 的三种常见方式。您可以根据您的项目需求和偏好选择其中之一。记得将路径替换为实际的文件路径。