日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Flying-Saucer生成PDF中的条形码

發布時間:2023/12/3 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Flying-Saucer生成PDF中的条形码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Flying-Saucer是一個不錯的庫,可以從Java應用程序中生成PDF文檔。 只需生成一堆XHTML,然后將其放入渲染器中,然后使用iText生成所需的文檔即可。

但是,當涉及條形碼時,Flying-Saucer無法訪問iText的內置條形碼功能(至少我沒有找到任何有關它的文檔)。

但是,由于采用開放源代碼并經過精心設計,因此只需創建一個子類即可完成此任務:Flying-Saucer依賴于名為ReplacedElementFactory的工廠,該工廠可以用自定義對象替換元素。 這也用于嵌入圖像,如ITextReplacedElementFactory類所示。 現在,我們可以簡單地創建一個子類,用適當的條形碼替換圖像:

<img src ='0123456789'type ='code128'style ='height:1cm'/>

一個人只需要像這樣重寫createReplacedElement方法(整個代碼可以在這里找到: BarcodeReplacedElementFactory.java(GitHub) ):

@Overridepublic ReplacedElement createReplacedElement(LayoutContext c, BlockBox box,UserAgentCallback uac, int cssWidth, int cssHeight) {Element e = box.getElement();if (e == null) {return null;}String nodeName = e.getNodeName();if (nodeName.equals("img")) {if ("code128".equals(e.getAttribute("type"))) {try {Barcode128 code = new Barcode128();code.setCode(e.getAttribute("src"));FSImage fsImage = new ITextFSImage(Image.getInstance(code.createAwtImage(Color.BLACK, Color.WHITE),Color.WHITE));if (cssWidth != -1 || cssHeight != -1) {fsImage.scale(cssWidth, cssHeight);}return new ITextImageElement(fsImage);} catch (Throwable e1) {return null;}}}return super.createReplacedElement(c, box, uac, cssWidth, cssHeight);}

當然,對于<img />,“類型”不是有效的XHTML元素,但是如您在上面的代碼中所見,您可以輕松地用data-type或任何其他屬性替換它。 無論如何,飛碟似乎并不在乎這一點。

注意:上面的代碼只能處理Code128-Barcodes,但是可以輕松擴展以處理EAN等(默認情況下,iText支持一堆條形碼)。

為了使我們的工廠正常工作,我們需要將其傳遞給渲染器,這很簡單:

ITextRenderer renderer = new ITextRenderer();renderer.getSharedContext().setReplacedElementFactory(new BarcodeReplacedElementFactory(renderer.getOutputDevice()));renderer.setDocumentFromString(inputAsString);renderer.layout();renderer.createPDF(outputAsStream);

參考:在Andy的軟件工程專欄博客中,我們的JCG合作伙伴 Andreas Haufler 用Flying-Saucer生成了PDF中的條形碼 。

翻譯自: https://www.javacodegeeks.com/2012/12/generating-barcodes-in-pdfs-with-flying-saucer.html

總結

以上是生活随笔為你收集整理的使用Flying-Saucer生成PDF中的条形码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。