栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从flysaucer中的servlet渲染图像生成pdf

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从flysaucer中的servlet渲染图像生成pdf

我现在已经很好地工作了。这是代码。

在我的xhtml文档中,我有:

<div   />

(我使用的是

div
元素,而不是
img
因为工厂仅用于块级元素)

我使用以下方法渲染文档:

ITextRenderer renderer = new ITextRenderer();renderer.getSharedContext().setReplacedElementFactory(new ProfileImageReplacedElementFactory(renderer.getSharedContext().getReplacedElementFactory()));renderer.setdocumentFromString(xhtmldocumentAsString);renderer.layout();os = response.getOutputStream();renderer.createPDF(os);

我有我自己

ReplacedElementFactory
的如下:

public class ProfileImageReplacedElementFactory implements ReplacedElementFactory {    private final ReplacedElementFactory superFactory;    public ProfileImageReplacedElementFactory(ReplacedElementFactory superFactory) {        this.superFactory = superFactory;    }    @Override    public ReplacedElement createReplacedElement(LayoutContext layoutContext, BlockBox blockBox, UserAgentCallback userAgentCallback, int cssWidth, int cssHeight) {        Element element = blockBox.getElement();        if (element == null) { return null;        }        String nodeName = element.getNodeName();        String className = element.getAttribute("class");        if ("div".equals(nodeName) && className.contains("profile_picture")) { InputStream input = null; try {     input = ...;     byte[] bytes = IOUtils.toByteArray(input);     Image image = Image.getInstance(bytes);     FSImage fsImage = new ITextFSImage(image);     if (fsImage != null) {         if ((cssWidth != -1) || (cssHeight != -1)) {  fsImage.scale(cssWidth, cssHeight);         }         return new ITextImageElement(fsImage);     } } catch (IOException e) {     getLogger().error(ExceptionUtils.getStackTrace(e)); } catch (BadElementException e) {     getLogger().error(ExceptionUtils.getStackTrace(e)); } finally {     IOUtils.closeQuietly(input); }        }        return superFactory.createReplacedElement(layoutContext, blockBox, userAgentCallback, cssWidth, cssHeight);    }    @Override    public void reset() {        superFactory.reset();    }    @Override    public void remove(Element e) {        superFactory.remove(e);    }    @Override    public void setFormSubmissionListener(FormSubmissionListener listener) {        superFactory.setFormSubmissionListener(listener);    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431158.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号