2013-08-14 3 views
5

다른 소프트웨어에서 XML 데이터를 출력하여 PDF 형식의 송장을 생성하는 프로젝트를 진행 중입니다.이 송장의 요구 사항 중 하나는 노드 데이터를 폼에 배치하십시오. 이상적으로, 바코드는 템플릿을 생성하기 위해 다른 프로그램을 호출하는 대신 템플리트 내부에서 생성 된 다음 템플리트에서 PNG 또는 다른 이미지 형식으로 템플릿을 찾으려고합니다.템플릿 내에서 Apache FOP와 함께 사용할 수 있도록 바코드 생성

barcode4j 확장 프로그램을 사용해 보았지만 아무 결과도 없었습니다. 이 시도하는 데에서 제외

, 내가 템플릿 내에서 바코드를 생성 할 수있는 솔루션은 대단히 감사하겠습니다

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:barcode="http://barcode4j.krysalis.org/ns" font-size="10pt"> 
    <fo:layout-master-set> 
    <fo:simple-page-master master-name="master0" page-width="21.0cm" page-height="29.7cm" margin-top="0.0cm" margin-bottom="0.5cm" margin-left="0.5cm" margin-right="0.25cm"> 
     <fo:region-body region-name="body0" margin-top="0.5cm" margin-bottom="0.5cm"/> 
     <fo:region-before region-name="header0" extent="1.5cm"/> 
     <fo:region-after region-name="footer0" extent="1.89cm"/> 
    </fo:simple-page-master> 
    </fo:layout-master-set> 
    <fo:page-sequence master-reference="master0"> 
    <fo:flow flow-name="body0"> 
    <xsl:variable name="CheckMaster" select="count(master_bill_of_lading/details/orders/order)"/> 
    <xsl:variable name="country" select="master_bill_of_lading/header/Country"/> 

    <xsl:variable name="barcode-cfg"> 
     <barcode> 
      <code39> 
       <height>16mm</height> 
       <module-width>0.3mm</module-width> 
       <human-readable> 
        <placement>none</placement> 
       </human-readable> 
      </code39> 
     </barcode> 
     </xsl:variable> 

    <fo:block> 

<fo:instream-foreign-object> 
<xsl:variable name="bc" select="barcode:generate($barcode-cfg, 123456)" /> 
    <xsl:copy-of select="$bc" /> 
</fo:instream-foreign-object> 

<?xml version="1.0" encoding="UTF-8"?> 

... 혐의가있는 솔루션에 대한 일관된 온라인 참조를 찾기가 매우 어렵 기 때문입니다.

편집 : 내가 다음 FO 내부에 사용하여 바코드를 생성 만이 FOP 내부의 경로와 lib 폴더에 포함 된 단지를 추가하는 데 필요한 FOP 확장 barcode4j를 사용하여이 문제를 해결할 수 있었다 : instream- 외부 객체 블록

답변

5

대부분의 1d 바코드는 XSL에서 SVG로 즉시 바코드를 처리하는 RenderX의 자유롭게 사용할 수있는 XSL 스타일 시트에서 지원됩니다. RenderX Barcode XSLs을 참조하십시오. 여기에는 예제에 표시된 3of9 바코드가 포함됩니다.

0

바코드는 특수 글꼴이있는 텍스트 일뿐입니다. 필요한 바코드 유형에 대한 트루 타입 바코드 글꼴을 가져옵니다. 그리고 fop.xconf 글꼴 섹션에서 FOP하기 위해 바코드 글꼴을 추가 :

<font kerning="yes" embed-url="free3of9.ttf"> 
     <font-triplet name="barcode" style="normal" weight="normal"/> 
    </font> 

이처럼 FO에서 그것을 사용

<fo:block 
    font-family="barcode" 
    font-size="36pt" 
>*12345678*</fo:block><!-- YMMW with the * --> 

이 FOP 1.1을 사용하여 오래된 프로젝트, 나는 그것을해야 같은데요 FOP의 최신 버전과 유사해야합니다.