web-dev-qa-db-ja.com

PDFBoxをAndroidプロジェクトに追加する方法、または代替案を提案する方法

既存のPDFファイルを開いて、Androidアプリケーション内からPDFドキュメントに別のページを追加しようとしています。追加されたページで、テキストと画像を追加する必要があります。

PDFBoxを試してみたいと思います。 iTextPDFなどの他のソリューションは、ライセンス条件/価格のため、当社には適していません。

メインコードベースのライブラリプロジェクトと、ライブラリプロジェクトを参照するフルプロジェクトとライトプロジェクトがあります。

http://pdfbox.Apache.org/download.html からjarをダウンロードし、ライブラリプロジェクトの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

PDFBoxのバージョン1.5以降がAndroidで動作しないことをどこかで読んだので、pdfbox-app-1.4.0.jarファイルをダウンロードしようとしましたが、同じ問題が発生しました。ライブラリも追加しましたフルプロジェクトとライトプロジェクトのビルドパスに移動しましたが、同じエラーが発生するか、Eclipseがメモリ不足エラーでクラッシュし続けました。

誰かが私が間違っていることを教えてもらえますか?間違ったファイルをダウンロードしましたか?正しくインポートしましたか?

ありがとう、

24
Dittimon

PDFBoxはJava awtとswingを使用します。UI以外のタスクでも、参照を削除しようとしましたが、ファイルがたくさんあり、削除しすぎていました。

PDFjetをテストしました http://pdfjet.com/os/edition.html このサンプルコード(Example_03.Javaからリッピング)を使用して、bsdライセンス(およびより多くの機能を備えた商用バージョン)です。 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

18
sherpya

PDFBoxのAndroidポート

ここに無料のAndroid PDFBoxのポートがあります:

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

13
Jason

ライブラリクラスファイルはapkファイルに含まれていないと思います。ライブラリクラスはdexファイルに変換する必要があり、それだけが検出されます。参照してください http://developer.Android.com/guide/developing/building/index.html

0
sateesh