[英]How to use apache fop with extensions (f.e. barcode4j) in java applet
我想在xsl fop转换期间生成条形码(Code128)。 如apache fop文档(和条形码4j文档)中所述,如果要使用扩展名,请将其放在类路径中。 这对于桌面应用程序和从Eclipse运行的applet都很好。 但是如何从浏览器运行它呢?
作为概念验证,我将所有内容提取到所谓的“ fat-jar”(一个胖子),将所有东西从日食中重新打包为“导出到可运行的jar”,并用“将所需的库提取到生成的JAR中”。 除条形码生成外,其他所有功能均按预期工作(翻译和许多其他功能)。 这是我唯一的apache fop扩展,所以我猜问题出在关于类路径的问题上,因为applet没有这样的东西?
这是我的html的主要部分:
<html lang="en-US">
<body>
<script src="http://www.java.com/js/deployJava.js"></script>
<script> var attributes = { codebase:'.', code:'com.signapplet.SignApplet.class', archive:'SignApplet.jar', width:1024, height:968};
var parameters = {jnlp_href: 'SignApplet.jnlp'} ;
deployJava.runApplet(attributes, parameters, '1.6');
</script>
</body>
</html>
和jnlp:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="">
<information>
<title>Sign Applet</title>
<vendor>me</vendor>
</information>
<security><all-permissions/></security>
<resources>
<j2se version="1.6+"
href="http://java.sun.com/products/autodl/j2se"/>
<jar href="SignApplet.jar" main="true" />
</resources>
<applet-desc
name="Sign Applet"
main-class="com.signapplet.SignApplet"
width="300"
height="300" >
</applet-desc>
<update check="background"/>
</jnlp>
我将在Java控制台上添加一个标准的乱码(“ 19:43:04,429 WARN FOUserAgent:97-遇到未知格式对象“ { http://barcode4j.krysalis.org/ns }高度”(代码128的子代)。 (没有可用的上下文信息)”),因为我没有包含正确的完整条形码4扩展名,但是我检查了所有内容,并将其正确打包在jar文件中,并且在eclipse中正常运行。
这是从barcode4j网页复制/粘贴的示例代码:
<fo:block>
<fo:instream-foreign-object>
<barcode:barcode
xmlns:barcode="http://barcode4j.krysalis.org/ns"
message="my message" orientation="90">
<barcode:code128>
<barcode:height>8mm</barcode:height>
</barcode:code128>
</barcode:barcode>
</fo:instream-foreign-object>
</fo:block>
我正在使用最新的条形码4j-fop-ext-complete.jar和apache-fop 1.1。 我究竟做错了什么?
如果不小心,创建“胖子”可能会丢失重复文件。 FOP扩展是由JAR服务提供者机制 (META-INF / services方法)发现的。 这意味着您必须合并而不是覆盖META-INF / services中的文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.