2016-12-25 2 views
0

Den Versuch, ein Bild auf einer PDF-SeiteNoClassDefFoundError über das Hinzufügen von Bild in einer PDF-Seite in PDFBox 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(); 

aber immer diese Ausnahme zu schreiben:

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) 

Anmerkung: Ich habe auch versucht, zu verwenden, hat

PDImageXObject img = PDImageXObject.createFromFile(image.getPath(), document);

Aber nichts anderes passiert ist. Was kann ich tun, um ein Bild zu einer Position in der aktuellen Seite ohne Ausnahme hinzuzufügen? (Wenn Sie eine bessere wissen soloution lassen Sie mich wissen)

Antwort

0

Finaly, benutzte ich Android Port of PDFBox (Link to answer) und hinzugefügt, um das Bild zu pdf mit einem Beispielcode von this link:

/** 
* 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(); 
     } 
    } 
} 
+0

"link zu beantworten" nirgendwo Links. Vielleicht meintest du https://stackoverflow.com/questions/8980668/how-to-add-pdfbox-to-an-android-project-or-suggest-alternative –

+0

@TilmanHaushrer: Danke für die Ankündigung, ich habe die URL korrigiert zur Antwort. –

Verwandte Themen