如何将SVG图像添加到使用HTML和Flying Saucer库(和Batik)构建的PDF中?

如何将SVG图像添加到使用HTML和Flying Saucer库(和Batik)构建的PDF中?,第1张

如何将SVG图像添加到使用HTML和Flying Saucer库(和Batik)构建的PDF中?

我不知道为什么,但是替换SVGReplacedElement.paint(…)中的代码修复了它。

新代码:

@Overridepublic void paint(RenderingContext renderingContext, ITextOutputDevice outputDevice,         BlockBox blockBox) {    PdfContentByte cb = outputDevice.getWriter().getDirectContent();    float width = (float) (cssWidth / outputDevice.getDotsPerPoint());    float height = (float) (cssHeight / outputDevice.getDotsPerPoint());    PdfTemplate template = cb.createTemplate(width, height);    Graphics2D g2d = template.createGraphics(width, height);    PrintTransprer prm = new PrintTransprer();    TransprerInput ti = new TransprerInput(svg);    prm.transpre(ti, null);    PageFormat pg = new PageFormat();    Paper pp = new Paper();    pp.setSize(width, height);    pp.setImageableArea(0, 0, width, height);    pg.setPaper(pp);    prm.print(g2d, pg, 0);    g2d.dispose();    PageBox page = renderingContext.getPage();    float x = blockBox.getAbsX() + page.getMarginBorderPadding(renderingContext, CalculatedStyle.LEFT);    float y = (page.getBottom() - (blockBox.getAbsY() + cssHeight)) + page.getMarginBorderPadding( renderingContext, CalculatedStyle.BOTTOM);    x /= outputDevice.getDotsPerPoint();     y /= outputDevice.getDotsPerPoint();    cb.addTemplate(template, x, y);}

从教程中得到的。

可能与我创建的未链接到原始文档的新UserAgent和documentLoader等有关。无论如何,现在都可以使用。希望它将对将来的人有所帮助。如果人们想评论或添加其他答案以说明为什么现在可行,这可能会帮助其他人稍后阅读。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5033440.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-15
下一篇2022-11-15

发表评论

登录后才能评论

评论列表(0条)

    保存