9

最近、XMLをPDFファイルに変換したいので、FOPを使用してAndroidアプリをコンパイルしました。ただし、FOPJARファイルがAndroidで機能しないという意味ではないと思います。Androidで利用できるFOPのバージョンはありますか?または、インターネット上のFOP対応サーバーに接続する代わりに、アプリ内で使用できる他のXMLからPDFへのコンバーターはありますか?

fop.jarとxmlgraphics.jarを含めてみましたが、プロジェクトに追加しても、への呼び出しはFopFactory.newInstance()失敗します。

FOPを呼び出すボタンクリックのコードスニペットは次のとおりです。

// Add button listener
btnCreatePDF.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {   
                FopFactory fopFactory = FopFactory.newInstance();
                OutputStream out = new BufferedOutputStream(new FileOutputStream(new File("/sdcard/test.pdf")));
                Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
                TransformerFactory factory = TransformerFactory.newInstance();
                Transformer transformer = factory.newTransformer();
                Source src = new StreamSource(new File("/sdcard/test.fo"));
                Result res = new SAXResult(fop.getDefaultHandler());

                transformer.transform(src, res);

                out.close();
            }
        });

コンパイラはまた私にたくさんのDxwarning: Ignoring InnerClasses attribute...エラーを与えています。ボタンをクリックしてPDFを作成すると、次のエラーが発生します。

02-22 14:16:23.641: WARN/System.err(5590): java.lang.UnsupportedOperationException: Don't know how to handle "application/pdf" as an output format. Neither an FOEventHandler, nor a Renderer could be found for this output format.
02-22 14:16:23.641: WARN/System.err(5590):     at org.apache.fop.render.RendererFactory.createFOEventHandler(RendererFactory.java:361)
02-22 14:16:23.641: WARN/System.err(5590):     at org.apache.fop.fo.FOTreeBuilder.(FOTreeBuilder.java:105)
02-22 14:16:23.641: WARN/System.err(5590):     at org.apache.fop.apps.Fop.createDefaultHandler(Fop.java:101)
02-22 14:16:23.641: WARN/System.err(5590):     at org.apache.fop.apps.Fop.(Fop.java:79)
02-22 14:16:23.641: WARN/System.err(5590):     at org.apache.fop.apps.FopFactory.newFop(FopFactory.java:271)
02-22 14:16:23.641: WARN/System.err(5590):     at org.apache.fop.apps.FopFactory.newFop(FopFactory.java:248)
02-22 14:16:23.641: WARN/System.err(5590):     at com.zebdor.signal88.ProposalCalculator$3.onClick(ProposalCalculator.java:158)
02-22 14:16:23.641: WARN/System.err(5590):     at android.view.View.performClick(View.java:2501)
02-22 14:16:23.641: WARN/System.err(5590):     at android.view.View$PerformClick.run(View.java:9107)
02-22 14:16:23.641: WARN/System.err(5590):     at android.os.Handler.handleCallback(Handler.java:587)
02-22 14:16:23.641: WARN/System.err(5590):     at android.os.Handler.dispatchMessage(Handler.java:92)
02-22 14:16:23.641: WARN/System.err(5590):     at android.os.Looper.loop(Looper.java:123)
02-22 14:16:23.641: WARN/System.err(5590):     at android.app.ActivityThread.main(ActivityThread.java:3812)
02-22 14:16:23.641: WARN/System.err(5590):     at java.lang.reflect.Method.invokeNative(Native Method)
02-22 14:16:23.641: WARN/System.err(5590):     at java.lang.reflect.Method.invoke(Method.java:507)
02-22 14:16:23.641: WARN/System.err(5590):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
02-22 14:16:23.641: WARN/System.err(5590):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
02-22 14:16:23.641: WARN/System.err(5590):     at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

9

Android では、Java ライブラリから .jar を取り出して Android アプリケーションで使用することはできません。Android は Dalvik JVM (http://en.wikipedia.org/wiki/Dalvik_(software)) を使用しますが、これは Java SE API の完全な API と 100% 互換ではなく、代わりに API のサブセットのみをサポートします。このため、FOP のように使用する可能性のある Java ライブラリの多くは、そのままでは Android と互換性がなく、そのようなライブラリが Android デバイスで適切に機能するには特殊化が必要です。幸運を。

于 2011-02-22T22:16:34.620 に答える