PDF 转 JPEG2000
JPedal 提供了多种方法,可将单个 PDF 文件或包含多个 PDF 文件的目录转换为 JPX 格式。Java 示例使用了 ConvertPagesToImages 类和 Jpeg2000EncoderOptions 类。
从命令行或其他语言将 PDF 转换为 JPG2000
将所有页面转换为图像
java -jar jpedal.jar --convert "inputFileOrFolder" "outputFolder" jpx
你还可以提供不同的设置来调整转换过程。
java -jar jpedal.jar --convert "inputFileOrFolder" "outputFolder" jpx ScalingAsFloat
java -jar jpedal.jar --convert "inputFileOrFolder" "outputFolder" jpx ScalingAsFloat PageRange
以下详细介绍这些命名变量的用法:
- ScalingAsFloat:一个浮点数值,用于指定应用于输出的缩放比例。它是视图缩放比例除以 100 后的值,例如,150% 的缩放比例对应的值为 1.5。
- PageRange:要转换的页面范围。其遵循与 SetOfIntegerSyntax 相同的规则。 它可以是一系列用逗号分隔的值,这些值可以是单个页码,也可以是用连字符表示的两个数值之间的范围。例如,“1,3,4 - 7” 表示转换第 1、3、4、5、6、7 页。
使用便捷静态方法在 Java 中将 PDF 转换为 JPG2000 格式
ConvertPagesToImages.writeAllPagesAsImagesToDir(
"inputFileOrFolder",
"outputFolder",
"jpx",
1.33f);
在 Java 中转换 PDF 为 JPG2000 格式,并可控制图像输出
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 + ".jpx");
// 设置控制输出的代码 (示例:带压缩功能)
final Jpeg2000EncoderOptions options = new Jpeg2000EncoderOptions();
options.setQuality(90); // 默认值为 75。没有值为 100 的压缩。
options.setOutputSubtype(Jpeg2000OutputSubtype.JPX); // 默认值是 JPX。JP2 也可以使用。
JDeli.write(bi, options, out);
}
}
} catch (PdfException | IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
convert.closePDFfile();
在 Java 中通过控制输出的页面范围,将 PDF 转换为 JPG2000 格式
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 + ".jpx");
JDeli.write(bi, options, out);
} catch (Exception e) {
e.printStackTrace();
}
});
}
} catch (PdfException e) {
e.printStackTrace();
}
convert.closePDFfile();
在 Java 中通过控制输出图像的尺寸,将 PDF 转换为 JPG2000 格式的缩略图
ConvertPagesToImages.writeAllPagesAsImagesToDir(
"inputFileOrFolder",
"outputFolder",
"jpx",
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 + ".jpx");
JDeli.write(bi, OutputFormat.JPEG2000, out);
}
}
} catch (PdfException | IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
convert.closePDFfile();
在 Java 中通过控制缩放比例,将 PDF 转换为 JPG2000 格式的缩略图
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 + ".jpx");
JDeli.write(bi, OutputFormat.JPEG2000, out);
}
}
} catch (PdfException | IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
convert.closePDFfile();
在 Java 中将受密码保护的 PDF 文件转换为 JPG2000 格式
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 + ".jpx");
JDeli.write(bi, OutputFormat.JPEG2000, out);
}
}
} catch (PdfException | IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
convert.closePDFfile();
如果你希望对 PDF 到 JPX 格式的转换进行放大处理或实施更复杂的控制,ConvertPagesToHiResImages 类提供了许多额外的选项。