Как добавить PDFBox в проект Android или предложить альтернативу
Я пытаюсь открыть существующий файл PDF, а затем добавить другую страницу в документ pdf из приложения Android. На добавленной странице мне нужно добавить текст и изображение.
Я хочу дать PDFBox попробовать. Другие решения, такие как iTextPDF, не подходят для нашей компании из-за лицензионных условий/цены.
У меня есть проект библиотеки с основной базой кода, а также полные и облегченные проекты, которые ссылаются на проект библиотеки.
Я загрузил банку из http://pdfbox.apache.org/download.html и скопировал ее в папку lib projects библиотеки и добавил файл 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, но получил ту же проблему. Я также добавил библиотеку в путь сборки в моих полных и облегченных проектах, но у меня была та же ошибка или затмение, которое сработало с ошибкой из памяти.
Может ли кто-нибудь сказать мне, что я делаю неправильно? Я загрузил неправильный файл? Я импортировал его правильно?
Спасибо,
Ответы
Ответ 1
PDFBox использует java awt и swing, даже для задач без интерфейса, я пытался удалить ссылки, но есть много файлов, и я удалял слишком много вещей
Я только что протестировал PDFjet http://pdfjet.com/os/edition.html, он лицензирован bsd (плюс коммерческая версия с большим количеством функций), с этим примером кода (ripped from 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-libraries
Ответ 2
Порт Android PDFBox
Здесь есть бесплатный порт Android PDFBox:
https://github.com/TomRoush/PdfBox-Android
Ответ 3
Я думаю, что файлы классов библиотеки не включены в файл apk. Классы библиотек должны быть преобразованы в файлы dex, и только он будет обнаружен .please refer http://developer.android.com/guide/developing/building/index.html