PDF 转 PNG
JPedal 提供了多种方法,可将单个 PDF 文件或包含多个 PDF 文件的目录转换为 PNG 格式。Java 示例使用了 ConvertPagesToImages 类和 PngEncoderOptions 类。
从命令行或其他语言将 PDF 转换为 PNG
将所有页面转换为图像
java -jar jpedal.jar --convert "inputFileOrFolder" "outputFolder" png
你还可以提供不同的设置来调整转换过程。
java -jar jpedal.jar --convert "inputFileOrFolder" "outputFolder" png ScalingAsFloat
java -jar jpedal.jar --convert "inputFileOrFolder" "outputFolder" png ScalingAsFloat PageRange
以下详细介绍这些命名变量的用法:
- ScalingAsFloat:一个浮点数值,用于指定应用于输出的缩放比例。它是视图缩放比例除以 100 后的值,例如,150% 的缩放比例对应的值为 1.5。
- PageRange:要转换的页面范围。其遵循与 SetOfIntegerSyntax 相同的规则。 它可以是一系列用逗号分隔的值,这些值可以是单个页码,也可以是用连字符表示的两个数值之间的范围。例如,“1,3,4 - 7” 表示转换第 1、3、4、5、6、7 页。
使用便捷静态方法在 Java 中将 PDF 转换为 PNG 格式
ConvertPagesToImages.writeAllPagesAsImagesToDir(
"inputFileOrFolder",
"outputFolder",
"png",
1.33f);
在 Java 中转换 PDF 为 PNG 格式,并可控制图像输出
ConvertPagesToImages convert = new ConvertPagesToImages("inputFile.pdf");
try {
if (convert.openPDFFile()) {
for(int page = 1; page <= convert.getPageCount(); page++) {
final BufferedImage bi = convert.getPageAsImage(page);
final File out = new File("outputFolder" + page + ".png");
// 设置控制输出的代码 (示例:带压缩功能)
final PngEncoderOptions options = new PngEncoderOptions();
options.setCompressionFormat(PngCompressionFormat.NONE);
JDeli.write(bi, options, out);
}
}
} catch (PdfException | IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
convert.closePDFfile();
在 Java 中通过控制输出的页面范围,将 PDF 转换为 PNG 格式
ConvertPagesToImages convert = new ConvertPagesToImages("inputFile.pdf");
// setPageRange 允许您选择所需的页面,可以使用 '-' 或 ':' 表示范围,
// 使用 ',' 表示下一个范围,或者您可以简单地设置为 null 来选择所有页面。
convert.setPageRange(new PageRanges("1-5,8:10,15"));
// 上述设置将为我们提供第1到第5页(包括第1页和第5页)、第8到第10页(包括第8页和第10页)以及第15页。
try {
if (convert.openPDFFile()) {
convert.getPageRange().forEachRemaining(page -> {
try {
final BufferedImage bi = convert.getPageAsImage(page);
final File out = new File("outputFolder" + page + ".png");
JDeli.write(bi, options, out);
} catch (Exception e) {
e.printStackTrace();
}
});
}
} catch (PdfException e) {
e.printStackTrace();
}
convert.closePDFfile();
在 Java 中通过控制输出图像的尺寸,将 PDF 转换为 PNG 格式的缩略图
ConvertPagesToImages.writeAllPagesAsImagesToDir(
"inputFileOrFolder",
"outputFolder",
"png",
new int[] {width, height});
或者
ConvertPagesToImages convert = new ConvertPagesToImages("inputFile.pdf");
// 适配且保持纵横比(宽度将为300或高度将为400)
convert.setFitToSize(new int[] {300,400});
try {
if (convert.openPDFFile()) {
for (int page = 1; page <= convert.getPageCount(); page++) {
final BufferedImage bi = convert.getPageAsImage(page);
final File out = new File("outputFolder" + page + ".png");
JDeli.write(bi, OutputFormat.PNG, out);
}
}
} catch (PdfException | IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
convert.closePDFfile();
在 Java 中通过控制缩放比例,将 PDF 转换为 PNG 格式的缩略图
ConvertPagesToImages convert = new ConvertPagesToImages("inputFile.pdf");
convert.setPageScaling(1.33f);// 这将提供与Acrobat在100%缩放时相同的尺寸。
try {
if (convert.openPDFFile()) {
for (int page = 1; page <= convert.getPageCount(); page++) {
final BufferedImage bi = convert.getPageAsImage(page);
final File out = new File("outputFolder" + page + ".png");
JDeli.write(bi, OutputFormat.PNG, out);
}
}
} catch (PdfException | IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
convert.closePDFfile();
在 Java 中将受密码保护的 PDF 文件转换为 PNG 格式
ConvertPagesToImages convert = new ConvertPagesToImages("inputFile.pdf");
convert.setPassword("password");
try {
if (convert.openPDFFile()) {
for (int page = 1; page <= convert.getPageCount(); page++) {
final BufferedImage bi = convert.getPageAsImage(page);
final File out = new File("outputFolder" + page + ".png");
JDeli.write(bi, OutputFormat.PNG, out);
}
}
} catch (PdfException | IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
convert.closePDFfile();
如果你希望对 PDF 到 PNG 格式的转换进行放大处理或实施更复杂的控制,ConvertPagesToHiResImages 类提供了许多额外的选项。