Как добавить PDFBox в проект Android или предложить альтернативу - PullRequest
24 голосов
/ 24 января 2012

Я пытаюсь открыть существующий файл PDF, а затем добавить еще одну страницу в документ PDF из приложения Android.На добавленной странице мне нужно добавить текст и изображение.

Я хочу попробовать PDFBox.Другие решения, такие как iTextPDF, не подходят для нашей компании из-за условий / цены лицензирования.

У меня есть библиотечный проект с основной базой кода, а также полные и облегченные проекты, которые ссылаются на библиотечный проект.

Я скачал jar из http://pdfbox.apache.org/download.html, скопировал его в папку lib проектов библиотеки и добавил файл pdfbox-app-1.6.0.jar в библиотеки путей сборки java.

Я могу успешно импортировать библиотеки, например import org.apache.pdfbox.pdmodel.PDDocument; и скомпилировать все проекты.Однако, когда я запускаю приложение, оно падает на PDDocument document = new PDDocument(); со следующей ошибкой.

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

Я где-то читал, что версия 1.5 PDFBox и далее не работает с Android, поэтому я попытался загрузить файл pdfbox-app-1.4.0.jar, но у меня возникла та же проблема.Я также добавил библиотеку в путь сборки в моих полных и облегченных проектах, но я получал ту же ошибку, или затмение продолжало падать с ошибкой нехватки памяти.

Может кто-нибудь сказать мне, что я делаю неправильно?Я скачал не тот файл?Я правильно импортировал это?

Спасибо,

Ответы [ 3 ]

17 голосов
/ 25 января 2012

PDFBox использует java awt и swing, даже для задач, не связанных с пользовательским интерфейсом, я пытался удалить ссылки, но файлов было много, и я удалял слишком много вещей

Я только что протестировал PDFjethttp://pdfjet.com/os/edition.html это bsd-лицензия (плюс коммерческая версия с большим количеством функций), с этим примером кода (скопировано из Example_03.java) я смог преобразовать jpeg в 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();
    }

Я нашелссылка здесь http://java -source.net / open-source / pdf-library

13 голосов
/ 11 января 2015

Android-порт PDFBox

Бесплатный порт Android для PDFBox доступен здесь:

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

0 голосов
/ 24 января 2012

Я думаю, что файлы классов библиотеки не включены в файл apk.Классы библиотеки должны быть преобразованы в файлы dex, тогда только они будут обнаружены. Пожалуйста, обратитесь http://developer.android.com/guide/developing/building/index.html

...