【发布时间】:2020-04-02 11:38:44
【问题描述】:
import static com.itextpdf.kernel.xmp.XMPUtils.decodeBase64;
import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
public void testPngImage() throws XMPException {
String orignalImage = https://gist.github.com/nil96/d9d54200e5329211d2d7455492716500;
String base64Image = orignalImage.replaceFirst("data:image/png;base64,","");
byte[] decodedBytes = decodeBase64(base64Image);
ImageData imageData = ImageDataFactory.create(decodedBytes,true);
imageData.getData();
}
当我打印 imageData.getData() 时,我得到的字节数组仅包含 -1。而预期的 png 字节数组应该以 {-119, 80, 78, 71} 开头。这只发生在 PNG 图像上。我可以成功创建 jpeg 图像。我在 gist https://gist.github.com/nil96/d9d54200e5329211d2d7455492716500 中附上了 png
我是在初始化 Image 时遗漏了一些东西还是一个错误?
依赖
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.0.7</version>
<!--<version>7.1.8</version>-->
<type>pom</type>
</dependency>
【问题讨论】:
-
根据 itext7 的文档。 PDF 不支持 PNG,这就是 iText 还将 PNG 图像解码为 rw 图像的原因。所以我们需要使用函数 ImageDataFactory.createRawImage(decodedBytes); 将其读取为原始图像;