目录
■JDK版本
■java代码・实现效果
■POM引用
■之前TIF相关的问题(两张TIF合并)
■问题
■问题1:无法生成TIF,已解决
■问题2:生成的TIF过大,待解决
■相关工具
SVF
foxit
■相关知识
ImageIO.write 的结果是 false 的原因
转换时报错 type 4 gsub lookup table is not supported
DPI是什么
一英寸 是多少厘米
=================
■JDK版本
1.8
■java代码・实现效果
package com.sxz.study.pdf;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
public class TestPDFToTIF {
public static void main(String[] args) {
try {
// Load the PDF document
PDDocument document = PDDocument.load(new File("E:\\Users\\sxz\\Desktop\\PDF\\Test.pdf"));
// Create a PDF renderer
PDFRenderer pdfRenderer = new PDFRenderer(document);
// Iterate over each page in the PDF document
for (int pageNumber = 0; pageNumber < document.getNumberOfPages(); pageNumber++) {
// Render the PDF page to a BufferedImage
// BufferedImage image = pdfRenderer.renderImageWithDPI(pageNumber, 300, ImageType.RGB);
BufferedImage image = pdfRenderer.renderImageWithDPI(pageNumber, 200, ImageType.GRAY);
// Save the BufferedImage as a TIF file
boolean flg = ImageIO.write(image, "tif", new File("E:\\Users\\sxz\\Desktop\\PDF\\output_" + (pageNumber + 1) + ".tif"));
System.out.println(flg);
}
// Close the PDF document
document.close();
System.out.println("PDF converted to TIF successfully");
} catch (Exception e) {
e.printStackTrace();
}
}
}
===
====
=====
■POM引用
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.24</version> <!-- 可以根据需要选择最新版本 -->
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-tools</artifactId>
<version>2.0.24</version> <!-- 可以根据需要选择最新版本 -->
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.24</version> <!-- 可以根据需要选择最新版本 -->
</dependency>
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-core</artifactId>
<version>1.4.0</version>
</dependency>
====
====
■之前TIF相关的问题(两张TIF合并)
TIF合并Java代码_jai-codec-CSDN博客
====
■问题
■问题1:无法生成TIF,已解决
问题:结果全部为false。
解决:
方法1:pom中添加如下引用
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-core</artifactId>
<version>1.4.0</version>
</dependency>
方法2:使用jdk9
====
■问题2:生成的TIF过大,待解决
====
我原本文件才0.3M,生成的TIF有3M的大小。。。。
====
■相关工具
SVF
====4141
1.1. SVF Connect for Java APIの機能概要 (wingarc.com)
==== ウイングアーク1stコーポレートサイト
会社概要 | ウイングアーク1stコーポレートサイト (wingarc.com)
===
foxit
xxx
===
■相关知识
ImageIO.write 的结果是 false 的原因
如果
ImageIO.write
方法返回false,可能有几种原因导致无法成功将BufferedImage写入TIF文件。以下是一些常见原因和可能解决方法:
缺少合适的ImageWriter:ImageIO在写入图像时需要能够识别和处理指定格式(这里是TIF)的ImageWriter。可能需要确保已经安装了支持TIF格式的插件。通常,这些插件会提供相应的ImageWriter类。
解决方法:可以尝试安装支持TIF格式的插件,例如JAI Image I/O Tools。您可以在Maven中添加以下依赖项:
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-core</artifactId>
<version>1.4.0</version>
</dependency>
转换时报错 type 4 gsub lookup table is not supported
报错"Type 4 gsub lookup table is not supported"通常是由于字体文件中的某种字符映射表(lookup table)不受支持而导致的。字形字体(OpenType字体)中的子集(subset)可能包含一些复杂的字符映射表,而某些库可能无法正确解析或处理这些表。您可以尝试以下解决方法:
使用全字形字体(Full OpenType Font):如果可能,尝试使用未经子集化的完整字形字体,而不是子集化的字体。全字形字体包含完整的字符集和字符映射表,可能更容易被解析和处理。
更新软件版本:检查您使用的库或工具是否存在更新版本,有时新版本可能会修复一些已知的问题。
选择其他字体或库:尝试使用其他字体或处理字体的库来查看能否解决该问题。不同的库可能有不同的实现方式,可能支持更多的字符映射表类型。
解析错误:检查报错代码所在的地方,看看是否可以在代码中进行特定的处理,例如跳过不支持的部分或者采取其他替代方案。
DPI是什么
DPI代表“每英寸点数”(Dots Per Inch),是衡量输出设备打印或显示分辨率的度量单位。它表示在每英寸内打印机或显示器能够输出多少个像素点。在打印领域中,DPI表示每英寸的打印点密度,越高的DPI通常意味着更高的打印质量和更细致的图像。在显示器领域中,DPI用来描述屏幕的像素密度,影响屏幕展示的清晰度和细节。
例如,如果一台打印机的DPI为600,则表示在打印一英寸长度的纸张上,这台打印机可以输出600个点(像素),从而打印出高分辨率的图像或文档。
在设计和图像处理中,DPI也很重要,因为它决定了图像在输出时的清晰度和质量。对于印刷品、海报、名片等需要高质量印刷的材料,通常需要使用高DPI的图像以确保印刷效果。
总之,DPI是衡量输出设备分辨率的重要指标,对于打印、显示和图像处理等领域都有着重要作用。
一英寸 是多少厘米
一英寸等于2.54厘米。这是国际上普遍接受的英制和公制长度单位之间的换算关系。根据这个换算关系,1英寸等于2.54厘米。
==