How to add PDFBox to an Android project or suggest alternative

20,748

Solution 1

PDFBox uses java awt and swing, even for non UI tasks, I've tried to remove references but there are a lot of files, and I was removing too much stuff

I've just tested PDFjet http://pdfjet.com/os/edition.html it's bsd licensed (plus commercial version with more features), with this sample code (ripped from Example_03.java) I was able to convert a jpeg to a 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();
    }

I found the link here http://java-source.net/open-source/pdf-libraries

Solution 2

Android Port of PDFBox

There's a free Android Port of PDFBox available here:

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

Share:
20,748

Related videos on Youtube

Dittimon
Author by

Dittimon

Updated on December 26, 2020

Comments

  • Dittimon
    Dittimon over 3 years

    I'm attempting to open an existing pdf file and then add another page to the pdf document from within an Android application. On the added page, I need to add some text and an image.

    I am wanting to give PDFBox a try. Other solutions such as iTextPDF aren't suitable for our company because of the licencing terms/price.

    I have a library project with the main code base, and also full and lite projects that reference the library project.

    I have downloaded the jar from http://pdfbox.apache.org/download.html and copied it into the library projects lib folder and added the pdfbox-app-1.6.0.jar file to the java build path libraries.

    I am able to import the librarys successfully eg import org.apache.pdfbox.pdmodel.PDDocument; and compile all the projects. However when I run the application it crashes on PDDocument document = new PDDocument(); with the following error.

    E/AndroidRuntime(24451): java.lang.NoClassDefFoundError: org.apache.pdfbox.pdmodel.PDDocument

    I read somewhere that version 1.5 of PDFBox onwards didn't work with Android so I tried downloading the pdfbox-app-1.4.0.jar file but got the same issue. I also added the library to the build path in my full and lite projects but I got the same error or eclipse kept crashing with an out of memory error.

    Can anyone tell me what I am doing wrong? Have I downloaded the wrong file? Have I imported it correctly?

    Thanks,

  • Dittimon
    Dittimon over 12 years
    Thanks for the response. Do I need to convert the jar file to a dex file?
  • sateesh
    sateesh over 12 years
    yes or the classes files need to be convert to dex files while compiling.
  • Sdr
    Sdr about 11 years
    Please let me know if you are aware of any examples which achieve the reverse i.e. PDF->Image using PDFJet. I've gone through most of the examples.All of them seem to be passing an instance of new FileOutputStream to the PDF() constructor method, which I believe is suggestive of the fact that we are trying to create a new PDF. Instead what I seek is the ability to read/parse an existing pdf. Thanks.
  • Chirag Shah
    Chirag Shah about 11 years
    @sherpya how to integrate PDFjet into android project?
  • sherpya
    sherpya about 11 years
    I did it some time ago, but I think you can just put the .jar in the lib subdirectory of the project
  • Roman Soviak
    Roman Soviak about 6 years
    This lib is very restricted