2012-11-08 38 views
3

好的我正在使用barcode4j-2.1和zxing-0.1.2在FOP 1.1中生成QR码。我目前通过将<prefer-renderer>true</prefer-renderer>添加到fop配置文件来实现正确工作的FOP 1.0。Apache FOP 1.1 zCode QRCode

barcode4j条形码正在工作,无论是否喜欢渲染器设置或不固定在barcode4j-2.1中修复。

我拥有所有必需的依赖关系:

  • FOP-斑马线-0.1.2-JAR-与-dependencies.jar
  • barcode4j-FOP-EXT-complete.jar
  • saxon9he.jar - 使用XSLT 2.0 ...

这里是条形码片段:

<fo:block> 
    <fo:instream-foreign-object> 
    <qr:qr-code xmlns:qr="http://hobbut.ru/fop/qr-code/" 
        width="5cm" 
     message="TEST DATA" 
       correction="m" 
      encoding="UTF-8"> 
    </qr:qr-code> 
    </fo:instream-foreign-object> 
</fo:block> 

当试图转换喜欢渲染器似乎没有任何效果,我收到了错误:

SEVERE: Image not available. URI: (instream-object). Reason: org.apache.xmlgraphics.image.loader.ImageException: The file format is not supported. No ImagePreloader found for null (No context info available) 
org.apache.xmlgraphics.image.loader.ImageException: The file format is not supported. No ImagePreloader found for null 
    at org.apache.xmlgraphics.image.loader.ImageManager.preloadImage(ImageManager.java:180) 
    at org.apache.fop.render.intermediate.AbstractIFPainter.drawImageUsingDocument(AbstractIFPainter.java:296) 
    at org.apache.fop.render.pdf.PDFPainter.drawImage(PDFPainter.java:203) 
    at org.apache.fop.render.intermediate.IFRenderer.renderForeignObject(IFRenderer.java:1290) 
    at org.apache.fop.render.AbstractRenderer.renderInlineViewport(AbstractRenderer.java:820) 
    at org.apache.fop.render.AbstractPathOrientedRenderer.renderInlineViewport(AbstractPathOrientedRenderer.java:785) 
    at org.apache.fop.render.intermediate.IFRenderer.renderInlineViewport(IFRenderer.java:866) 
    at org.apache.fop.render.AbstractRenderer.renderInlineArea(AbstractRenderer.java:678) 
    at org.apache.fop.render.intermediate.IFRenderer.renderInlineArea(IFRenderer.java:913) 
    at org.apache.fop.render.AbstractRenderer.renderLineArea(AbstractRenderer.java:643) 
    at org.apache.fop.render.AbstractRenderer.renderBlocks(AbstractRenderer.java:561) 
    at org.apache.fop.render.AbstractRenderer.renderBlock(AbstractRenderer.java:598) 
    at org.apache.fop.render.intermediate.IFRenderer.renderBlock(IFRenderer.java:980) 
    at org.apache.fop.render.AbstractRenderer.renderBlocks(AbstractRenderer.java:546) 
    at org.apache.fop.render.AbstractRenderer.renderFlow(AbstractRenderer.java:451) 
    at org.apache.fop.render.AbstractPathOrientedRenderer.renderFlow(AbstractPathOrientedRenderer.java:738) 
    at org.apache.fop.render.AbstractRenderer.renderMainReference(AbstractRenderer.java:428) 
    at org.apache.fop.render.AbstractRenderer.renderBodyRegion(AbstractRenderer.java:352) 
    at org.apache.fop.render.AbstractRenderer.renderRegionViewport(AbstractRenderer.java:299) 
    at org.apache.fop.render.intermediate.IFRenderer.renderRegionViewport(IFRenderer.java:748) 
    at org.apache.fop.render.AbstractRenderer.renderPageAreas(AbstractRenderer.java:273) 
    at org.apache.fop.render.AbstractRenderer.renderPage(AbstractRenderer.java:238) 
    at org.apache.fop.render.intermediate.IFRenderer.renderPage(IFRenderer.java:597) 
    at org.apache.fop.area.RenderPagesModel.renderPage(RenderPagesModel.java:193) 
    at org.apache.fop.area.RenderPagesModel.checkPreparedPages(RenderPagesModel.java:174) 
    at org.apache.fop.area.RenderPagesModel.addPage(RenderPagesModel.java:146) 
    at org.apache.fop.layoutmgr.AbstractPageSequenceLayoutManager.finishPage(AbstractPageSequenceLayoutManager.java:312) 
    at org.apache.fop.layoutmgr.PageSequenceLayoutManager.finishPage(PageSequenceLayoutManager.java:191) 
    at org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageSequenceLayoutManager.java:115) 
    at org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.java:267) 
    at org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:128) 
    at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:347) 
    at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:181) 
    at net.sf.saxon.event.ContentHandlerProxy.endElement(ContentHandlerProxy.java:395) 
    at net.sf.saxon.event.NamespaceReducer.endElement(NamespaceReducer.java:208) 
    at net.sf.saxon.event.ComplexContentOutputter.endElement(ComplexContentOutputter.java:459) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:304) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:254) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:615) 
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:131) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:301) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:254) 
    at net.sf.saxon.expr.instruct.Template.applyLeavingTail(Template.java:212) 
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:1034) 
    at net.sf.saxon.Controller.transformDocument(Controller.java:1959) 
    at net.sf.saxon.Controller.transform(Controller.java:1805) 
    at cwc.fop.util.templates.FOPConvert.translate(FOPConvert.java:116) 
    at cwc.fop.util.conversion.XML2PDF.translate(XML2PDF.java:151) 
    at cwc.fop.util.conversion.XML2PDF.translate(XML2PDF.java:114) 
    at cwc.fop.util.conversion.XML2PDF.translate(XML2PDF.java:65) 
    at cwc.fop.server.work.WorkerRunnable.run(WorkerRunnable.java:144) 
    at cwc.util.threading.WorkQueue$PoolWorker.run(WorkQueue.java:59) 

预先感谢任何帮助

回答

3

您使用的xmlns:QR =“HTTP: //hobbut.ru/fop/qr-code/“,这与Barcode4J无关。似乎您计划使用比Barcode4J更多的其他FOP插件,但您最终将Barcode4J放入类路径而不是正确的插件。顺便说一下,Barcode4J在其CVS仓库的HEAD分支中集成了用于QR码生产的ZXing。

+1

是的,我使用barcode4j为其他条形码和zxing插件qrcodes;如其网站所述。 哦,所以barcode4j zxing在头CVS存储库中构建。 所以我只需要从HEAD CVS下载,编译和使用? 你能否提供一个xsl-fo示例用法,因为我很难找到它。 我想我只是寻找一般步骤来让它工作;我不需要详细的步骤......我可以弄清楚这些。 在此先感谢。 – karnd01

+0

非常。可以在Barcode4J发行版的examples/xsl-fo/fop-extension-demo.fo中找到一个示例。最简单的情况是: 参见http://barcode4j.sourceforge.net/trunk/symbol-qr.html详细的配置信息。请从Barcode4J的lib目录中获取zxing.jar。我听说目前的版本以不兼容的方式改变了它的API,但我还没有更新。 –

+1

非常感谢! 对于其他人可能会阅读这个,Jeremias是正确的,你必须从lib目录采取zxing-core * .jar,并且还必须删除旧的zxing引用,当它们发生冲突时还包括fop-zxing jar文件。 – karnd01