我正在使用PDFBox从我的pdf(仅包含jpg)中提取图像。PDFBox:从pdf中提取图像到输入流
由于我将这些图像保存在我的数据库中,我想直接将每个图像转换为输入流对象,而不将文件临时放置在我的文件系统中。然而,我面临着困难。我认为这是因为使用了image.getPDFStream().createInputStream()
做,因为我在下面的例子一样:
while (imageIter.hasNext()) {
String key = (String) imageIter.next();
PDXObjectImage image = (PDXObjectImage) images.get(key);
FileOutputStream output = new FileOutputStream(new File(
"C:\\Users\\Anton\\Documents\\lol\\test.jpg"));
InputStream is = image.getPDStream().createInputStream(); //this gives me a corrupt file
byte[] buffer = new byte[1024];
while (is.read(buffer) > 0) {
output.write(buffer);
}
}
但是这个工程:
while (iter.hasNext()) {
PDPage page = (PDPage) iter.next();
PDResources resources = page.getResources();
Map<String, PDXObject> images = resources.getXObjects();
if (images != null) {
Iterator<?> imageIter = images.keySet().iterator();
while (imageIter.hasNext()) {
String key = (String) imageIter.next();
PDXObjectImage image = (PDXObjectImage) images.get(key);
image.write2file(new File("C:\\Users\\Anton\\Documents\\lol\\test.jpg")); //this works however
}
}
}
任何想法如何,我可以将每个PDXObjectImage(或任何其他对象我可以)到输入流?
谢谢配合它的工作!你认为可以在pdf中检索图像的数据类型(例如png或jpeg)吗? – user3125591
@ user3125591完成了,我把它写入我的答案。 –
谢谢你的帮助! – user3125591