但是,当我尝试将该图像添加到PDF中时:
PDDocument document = new PDDocument();
PDImageXObject pdImage = pdImage = PDImageXObject.createFromFileByContent(
"samples/relax.jp2", document);
PDPage page = new PDPage(new PDRectangle(pageWidth, pageHeight));
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.drawImage(pdImage, matrix);
contentStream.close();
我有个例外:
原因:java.lang.IllegalArgumentException:不支持图像类型未知:relax.jp2,位于org.apache.pdfbox.pdmodel.graphics.Image.pdimagexObject.CreateFromFileByContent(pdimagexObject.java:313)
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.12</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.12</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>jempbox</artifactId>
<version>1.8.16</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>jbig2-imageio</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-core</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-jpeg2000</artifactId>
<version>1.3.0</version>
</dependency>
我是不是做错什么了?或者PDFBox和/或我正在使用的示例有问题?
其他Apache库Tika将此示例文件MIME类型检测为image/jp2
:
TikaConfig tika = new TikaConfig();
Metadata metadata = new Metadata();
MediaType mimetype = tika.getDetector().detect(
TikaInputStream.get(new FileInputStream("samples/relax.jp2"), metadata);
来自PDFBOX的API文档:
CreateFromFileByContent()
支持以下文件类型:jpg、jpeg、tif、tiff、gif、bmp和PNG。
查看源代码,createfromfilebycontent()
中调用的是它们自己对已知文件类型的检查,独立于底层库,检测代码如下所示:filetypedetector.java。
此检查不识别JPEG 2000。
实际上createFromFileByExtension()
可能是更好的选择:
if ("gif".equals(ext) || "bmp".equals(ext) || "png".equals(ext)) {
BufferedImage bim = ImageIO.read(file);
return LosslessFactory.createFromImage(doc, bim);
}
只要你假装你有一个GIF、BMP或PNG,并且你的ImageIO
支持JPEG2000,这可能有点工作(未经测试)。
有人能给我一个如何使用Apache PDFBox 2.0.3在PDF文件中显示图像的例子吗? 提前谢谢
我的程序在Eclipse中运行完美,但是当我导出它时,图像不显示出来。 我的设置看起来像 我参考标志。来自MenuMain的png。java,我尝试了很多方法; 前3个在Eclipse中工作,但都不在Jar中工作。我检查了Jar文件,res文件夹在那里,所有的图像也是如此。我还尝试编辑MANIFEST. MF并添加了类路径: 但它仍然不起作用。我在运行Jar时没有发现任何错误,其他所有内容都显示在
主要内容:从PDF文档生成图像在前一章中,我们已经看到了如何合并多个PDF文档。 在本章中,我们将了解如何从PDF文档的页面提取图像。 从PDF文档生成图像 PDFBox库提供了一个名称为的类,它将PDF文档呈现为AWT BufferedImage。 以下是从PDF文档生成图像的步骤。 第1步:加载现有的PDF文档 使用类的静态方法加载现有的PDF文档。 此方法接受一个文件对象作为参数,因为这是一个静态方法,可以使用类名称调用
主要内容:将图像插入PDF文档在前一章中,我们已经学习如何从现有的PDF文档中提取文本。 在本章中,将讨论如何将图像插入PDF文档。 将图像插入PDF文档 分别使用类的以及类的方法将图像插入到PDF文档中。 以下是从现有PDF文档中提取文本的步骤。 第1步:加载现有的PDF文档 使用类的静态方法加载现有的PDF文档。 此方法接受一个文件对象作为参数,因为这是一个静态方法,可以使用类名称调用它,如下所示。 第2步:检索页面 在P
然后,我根据页面大小与图像大小计算缩放的维度,返回:java.awt.dimension[width=562,height=792]我使用下面的代码来计算缩放的维度: 为了实际执行图像缩放,我使用image Scalr API: 我的问题是我做错了什么?当缩放到较小的尺寸时,大的图像不应该被模糊。这与PDF页面的分辨率/大小有关吗?
我正在建立一个java项目,使用pdfBox从PDF中获取图像。由于我使用tika应用程序实现其他功能,我决定使用tika-app-1.20中的pdfBox。罐子 我以前尝试过包括jai-imageio-core-1.3.1.jar,因为Tika-app已经与这个罐子捆绑在一起了。我单独尝试了tika-app jar。 这条线是投掷错误