0

Androidでレガシーアプリケーションから標準のPDFフォームを開き、iTextを使用してフォームフィールドをオーバーレイし、AndroidのAdobeReaderに渡してフォームに入力しようとしています。

TextFieldsを手動で作成することはできましたが、プロセスを高速化し、品質をより適切に制御するために、テンプレートとしてpdfファイルを使用したいと思います。

これが私がこれまでに持っているコードです、これはitextの例に従います。

    AssetFileDescriptor descriptor = getAssets().openFd("standardWO_Template_v1_fo.pdf");
            File templateFile = new File(descriptor.getFileDescriptor().toString());
            PdfReader reader = new PdfReader(intent.getData().getPath());
            reader.selectPages("1");
            PdfReader templateReader = new PdfReader(templateFile.getAbsolutePath());
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(file));
            // Stamp the template onto the document
            PdfImportedPage page = stamper.getImportedPage(templateReader, 1);
            PdfContentByte cb = stamper.getOverContent(1);
            cb.addTemplate(page, 0, 0);

私が抱えている問題は最後の行にあります。cb.addTemplate(page、0,0);

Eclipseは次のエラーを報告します。タイプjava.awt.geom.AffineTransformを解決できません。必要な.classファイルから間接的に参照されます

私が伝えたところによると、java.awt.geom.AffineTransformはAndroidのみのJavaでは機能しません。

タスクを実行したり、AndroidでAffineTransformを機能させるための別の方法はありますか?

4

1 に答える 1

3

さらに検索した後、私はこの方法を見つけました。まず、AndroidプロジェクトでのiText5.3.1ライブラリの使用からdroidTextライブラリへの変更が必要でした。

droidTextライブラリをインストールすると、次のコードを使用できるようになりました。(そして日食のctrl-o)

    File templateFile = new File(dir.getAbsolutePath() + "/templates/standardWO.pdf");
            // Read the incoming file
            PdfReader reader = new PdfReader(intent.getData().getPath());
            // Read the template form information
            PdfReader templateReader = new PdfReader(templateFile.getAbsolutePath());
            // Create the stamper from the incoming file.
            PdfStamper stamper = new PdfStamper(templateReader, new FileOutputStream(file));
            // Import the template information
            PdfImportedPage iPage = stamper.getImportedPage(reader, 1);
            // get the direct content
            PdfContentByte cb = stamper.getUnderContent(1);
            // Add the imported page to the content
            cb.addTemplate(iPage, 0, 0);
            stamper.close();
            Log.v(TAG, "Opening file in adobe reader: " + file.getAbsolutePath());
            loadDocInReader(file);
于 2012-09-13T04:13:54.290 に答える