Zac*_*Zac 9 android apache-fop
我最近使用FOP编译了一个Android应用程序,因为我想将一些XML转换为PDF文件.但是我不认为FOP JAR文件不适用于Android.有没有适用于Android的FOP版本?或者我可以在我的应用程序中使用的任何其他XML到PDF转换器,而不是连接到Internet上的FOP启用的服务器?
我尝试过包含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();
}
});Run Code Online (Sandbox Code Playgroud)
编译器也给了我一堆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)
Run Code Online (Sandbox Code Playgroud)
使用Android,您不仅可以从Java库中获取.jar并在Android应用程序中使用它.Android使用Dalvik JVM(http://en.wikipedia.org/wiki/Dalvik_(software)),它与Java SE API中的完整API不是100%兼容,而是仅支持API的子集.出于这个原因,您可能会使用的许多Java库(如FOP)不能与Android兼容,并且需要专业化才能使这些库在Android设备上正常运行.祝好运.
| 归档时间: |
|
| 查看次数: |
2835 次 |
| 最近记录: |