的NoClassDefFoundError在PDFBox的添加图像到PDF页面的Android
问题描述:
尝试将PDF页面的NoClassDefFoundError在PDFBox的添加图像到PDF页面的Android
PDDocument document = null;
File inputFile = new File(mFilePath);
document = PDDocument.load(inputFile);
PDPage page = document.getPage(0);
File image = new File("/storage/emulated/0/", "1.jpg");
PDImageXObject img = JPEGFactory.createFromStream(document, inputStream);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.drawImage(img, 100, 100);
contentStream.close();
File outputFile = new File(inputFile.getParent(), "new file.pdf");
document.save(outputFile);
document.close();
上写的图像,但得到此异常:
java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/imageio/ImageIO;
at org.apache.pdfbox.pdmodel.graphics.image.JPEGFactory.readJPEG(JPEGFactory.java:99)
at org.apache.pdfbox.pdmodel.graphics.image.JPEGFactory.createFromStream(JPEGFactory.java:78)
注:我也曾尝试使用
PDImageXObject img = PDImageXObject.createFromFile(image.getPath(), document);
但没有什么不同的事。 我能做些什么来将图像添加到当前页面中的位置,无一例外? (如果你知道更好的soloution让我知道)
答
Finaly,我用Android Port of PDFBox(Link to answer)并用样品代码this link添加图像到PDF:
/**
* Add an image to an existing PDF document.
*
* @param inputFile The input PDF to add the image to.
* @param imagePath The filename of the image to put in the PDF.
* @param outputFile The file to write to the pdf to.
*
* @throws IOException If there is an error writing the data.
*/
public void createPDFFromImage(String inputFile, String imagePath, String outputFile)
throws IOException
{
// the document
PDDocument doc = null;
try
{
doc = PDDocument.load(new File(inputFile));
//we will add the image to the first page.
PDPage page = doc.getPage(0);
// createFromFile is the easiest way with an image file
// if you already have the image in a BufferedImage,
// call LosslessFactory.createFromImage() instead
PDImageXObject pdImage = PDImageXObject.createFromFile(imagePath, doc);
PDPageContentStream contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true);
// contentStream.drawImage(ximage, 20, 20);
// better method inspired by https://stackoverflow.com/a/22318681/535646
// reduce this value if the image is too large
float scale = 1f;
contentStream.drawImage(pdImage, 20, 20, pdImage.getWidth()*scale, pdImage.getHeight()*scale);
contentStream.close();
doc.save(outputFile);
}
finally
{
if(doc != null)
{
doc.close();
}
}
}
“链接,以回答”通不通。也许你的意思是https://stackoverflow.com/questions/8980668/how-to-add-pdfbox-to-an-android-project-or-suggest-alternative –
@TilmanHausherr:感谢您的通知,我纠正了网址到答案。 –