我在这里很新,所以请问您是否需要更多信息。
目前我已经写了一段写入SD卡的代码。它写了.jpegs,它给了他们所有可变的kb大小,就像你期望从一个充满图像的pdf一样。但是,当我在平板电脑上选择它们时,它无法打开照片,而当我在计算机上打开它时,它也不允许这样做,所以很明显我错过了一定程度的腐败。
我还测试了image.length,这似乎也在输出许多不同的字节大小方面起作用。
try {
InputStream is = this.getAssets().open("iText-40.pdf");
PdfReader reader = new PdfReader(is);
for (int i = 0; i < reader.getXrefSize(); i++) {
PdfObject pdfobj = reader.getPdfObject(i);
if (pdfobj != null && pdfobj.isStream()) {
PdfStream stream = (PdfStream) pdfobj;
PdfObject pdfsubtype = stream.get(PdfName.SUBTYPE);
if (pdfsubtype != null
&& pdfsubtype.toString().equals(
PdfName.IMAGE.toString())) {
byte[] image = PdfReader
.getStreamBytesRaw((PRStream) stream);
FileOutputStream out = new FileOutputStream(new File(file.getParentFile(), i + ".jpeg"));
Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0, image.length);
System.out.println(image.length);
out.write(image);
out.flush();
out.close();
}
}
}
} catch (IOException e2) {
System.out.println(e2);
e2.printStackTrace();
}
如果有人能指出我正确的方向,至少我做错了什么,我会很高兴。顺便说一句,我已尝试使用位图工厂尝试使其工作,例如使用位图工厂重新打开文件,希望由于某种原因它可能会修复它。它没有。非常感谢您的时间。
答案 0 :(得分:1)
我最终找到了如何用不同的方法做iText需要做的事情:
您需要iTextG库(itextg-5.5.3.jar),scpkix-jdk15on.1.47.0.1.jar&amp; scprov-jdk15on-1.47.0.2.jar
在里面想要从中调用它:
public static final String RESULT = "/storage/sdcard0/dirAtExtStorage/Img%s.%s";
public void extractImages(String filename)
throws IOException, DocumentException {
PdfReader reader = new PdfReader(filename);
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
MyImageRenderListener listener = new MyImageRenderListener(RESULT);
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
parser.processContent(i, listener);
}
}
在MyImageRendererListener.java中:
public class MyImageRenderListener implements RenderListener{
private String path;
public MyImageRenderListener(String path) {
this.path = path;
}
@Override
public void beginTextBlock() {
// TODO Auto-generated method stub
}
@Override
public void endTextBlock() {
// TODO Auto-generated method stub
}
public void renderImage(ImageRenderInfo renderInfo) {
try {
System.out.print("renderImage");
String filename;
FileOutputStream os;
PdfImageObject image = renderInfo.getImage();
if (image == null) return;
filename = String.format(path, renderInfo.getRef().getNumber(), image.getFileType());
os = new FileOutputStream(filename);
os.write(image.getImageAsBytes());
os.flush();
os.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
@Override
public void renderText(TextRenderInfo arg0) {
// TODO Auto-generated method stub
}
}
享受家伙