25

既存の 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 がメモリ不足エラーでクラッシュし続けました。

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

ありがとう、

4

3 に答える 3

19

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

PDFjet http://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-libraries

于 2012-01-25T02:11:00.533 に答える
16

PDFBoxのAndroidポート

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

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

于 2015-01-11T13:20:32.807 に答える
0

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

于 2012-01-24T02:15:05.267 に答える