web-dev-qa-db-fra.com

Comment ajouter PDFBox à un projet Android ou suggérer une alternative

J'essaie d'ouvrir un fichier pdf existant, puis d'ajouter une autre page au document pdf à partir d'une application Android. Sur la page ajoutée, j'ai besoin d'ajouter du texte et une image.

Je veux essayer PDFBox. D'autres solutions telles que iTextPDF ne conviennent pas à notre société en raison des conditions de licence/prix.

J'ai un projet de bibliothèque avec la base de code principale, ainsi que des projets complets et légers faisant référence au projet de bibliothèque.

J'ai téléchargé le fichier jar à partir de http://pdfbox.Apache.org/download.html et je l'ai copié dans le dossier lib des projets de bibliothèque et ajouté le fichier pdfbox-app-1.6.0.jar au chemin de génération Java. bibliothèques.

Je peux importer les bibliothèques avec succès, par exemple import org.Apache.pdfbox.pdmodel.PDDocument; et compiler tous les projets. Cependant, lorsque je lance l'application, il se bloque sur PDDocument document = new PDDocument(); avec l'erreur suivante.

E/AndroidRuntime (24451): Java.lang.NoClassDefFoundError: org.Apache.pdfbox.pdmodel.PDDocument

J'ai lu quelque part que la version 1.5 de PDFBox ne fonctionnait pas avec Android, alors j'ai essayé de télécharger le fichier pdfbox-app-1.4.0.jar, mais le problème est le même. J'ai également ajouté la bibliothèque au chemin de construction dans mes projets complets et légers, mais j'ai eu la même erreur ou Eclipse a continué à planter avec une erreur de mémoire insuffisante.

Quelqu'un peut-il me dire ce que je fais mal? Ai-je téléchargé le mauvais fichier? Est-ce que je l'ai importé correctement?

Merci,

23
Dittimon

PDFBox utilise Java awt and swing, même pour des tâches non liées à l'interface utilisateur, j'ai essayé de supprimer les références, mais il y avait beaucoup de fichiers, et j'enlevais trop de choses.

Je viens de tester PDFjet http://pdfjet.com/os/edition.html c'est une licence bsd (plus une version commerciale avec plus de fonctionnalités), avec cet exemple de code (extrait de Example_03.Java), j'ai pu convertir un jpeg en pdf

    FileOutputStream fos = null;
    try
    {
        fos = new FileOutputStream("/sdcard/sample.pdf");
        PDF pdf = new PDF(fos);
        InputStream f = getApplicationContext().getAssets().open("img0.jpg"); 
        Image image = new Image(pdf, f, ImageType.JPEG);
        Page page = new Page(pdf, A4.PORTRAIT);
        image.setPosition(0, 0);
        image.drawOn(page);
        pdf.flush();
        fos.close();
    } catch (Exception e)
    {
        e.printStackTrace();
    }

J'ai trouvé le lien ici http://Java-source.net/open-source/pdf-libraries

17
sherpya

Port Android de PDFBox

Il existe un port Android gratuit de PDFBox disponible ici:

https://github.com/TomRoush/PdfBox-Android

12
Jason

je pense que les fichiers de classe de bibliothèque ne sont pas inclus dans le fichier apk. Les classes de la bibliothèque doivent être converties en fichiers dex. Dans ce cas, seul ce dernier sera détecté. Veuillez vous référer à http://developer.Android.com/guide/developing/building/index.html } _

0
sateesh