簡體   English   中英

如何在Java Applet中使用帶擴展名的Apache FOP(FE Barcode4j)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM