Bazı XML'leri bir PDF dosyasına dönüştürmek istediğim gibi FOP kullanarak bir Android uygulamasını kısa süre önce derledim. Ancak, FOP JAR dosyalarının Android üzerinde çalışmamaları gerektiğini düşünmüyorum. Android için kullanılabilir olan FOP sürümleri var mı? Veya başka bir XML'den PDF'ye dönüştürücü Uygulamamda, Internet'te FOP özellikli bir sunucuya bağlanmak yerine kullanabilir miyim?Android için FOP?
fop.jar ve xmlgraphics.jar'ı dahil etmeyi denedim, ancak projeme eklenenler ile bile FopFactory.newInstance()
numaralı çağrı başarısız oluyor.
// 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();
}
});
derleyici aynı zamanda bir bana Dxwarning: Ignoring InnerClasses attribute...
hataların bir demet veriyor:
İşte FOP çağıran düğmeye tıklama için benim kod parçacığı bu. İşte PDF oluşturmak için düğmeye tıkladığında hata var:
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)
Hiç FOP kullanmamıştım, ancak çalışamayacağına inanmanızı sağlayan kodu çalıştırdığınızda ne oluyor? Yerel olarak değil, internet üzerinden çalıştığı gerçeği, bu android ile şeylere oldukça yaygın bir yaklaşım. – tangentstorm
Düğmeye tıkladığımdan hata çıktısını ekledim. Derleyici bana JAR'ların Android ile uyumsuz olduğuna inanmamı sağlayan bir ton uyarı veriyordu. – Zac