使用 HTML 中的 Flying-Saucer 渲染 PDF 中的嵌入图像

2023-12-19

我有一个 xhtml 文档,我正在使用 Flyingsaucer 将其转换为 PDF。 xhtml 有几个标签,其中内嵌有 base64 编码的图像。 xhtml 的源是动态的,因此图像标签的结构可能会有所不同。这是标签的示例:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAagAAAEuCAYAAADbW4YFAAAgAElEQVR4Aex9CYBdRZ ...

当我在浏览器中查看 html 时,图像显示正确,但是,img 元素不会在最终的 PDF 中呈现。以下是我如何渲染它以创建 PDF。

ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(builder.parse(source), "");
renderer.layout();
renderer.createPDF(response.getOutputStream(),true);

谁能告诉我应该采取什么方法来实现这一目标?我看见这个帖子 https://stackoverflow.com/questions/10316607/render-image-from-servlet-in-flyingsaucer-generated-pdf,但是,我正在使用内联图像,因此我看不到如何使用 Edd 的解决方案来完成此任务。

提前致谢


是的,您可以使用此处给出的方法:在 Flyingsaucer 生成的 pdf 中渲染来自 servlet 的图像 https://stackoverflow.com/questions/10316607/render-image-from-servlet-in-flyingsaucer-generated-pdf

埃德有:

        InputStream input = null;
        try {
            input = ...;
            byte[] bytes = IOUtils.toByteArray(input);
            Image image = Image.getInstance(bytes);

在 Edd 的例子中,图像来自远程源(他用input = ...;)。在您的情况下,您只想从 Base64 编码数据中读取它(base64,。首先使用一个Base64解码器 https://stackoverflow.com/questions/469695/decode-base64-data-in-java获取二进制数据,放入byte[]或 Stream,然后您可以使用Java图像IO http://docs.oracle.com/javase/6/docs/api/javax/imageio/package-summary.html从您的字节创建图像并按照 Edd 的方法将图像转换为 PDF。在这里向 Edd 表示敬意(肯定投票!)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 HTML 中的 Flying-Saucer 渲染 PDF 中的嵌入图像 的相关文章

随机推荐

  • 使用 Powershell 删除重复文件

    我有几千个重复文件 例如 jar 文件 我想使用 powershell 来 递归搜索文件系统 查找重复项 仅通过名称或校验和方法或两者兼而有之 删除除一个之外的所有重复项 我是 powershell 的新手 我将其扔给可能能够提供帮助的 P
  • JQuery 添加点击事件到单选输入文本

    我想要与单选按钮 热门 相关的标签 我开始使用 siblings 方法来实现这一点 我想一定有更好的方法 单选按钮上的单击事件如下所示 RadioButton click function event var questionId this
  • 从 C (Visual Studio) 调用 C++ 类成员函数

    我需要从 C 程序调用 C 成员函数 我在 C 代码中创建了 cpp h 包装器文件 包装了 C 成员函数 即 wrapper cpp include wrapper h extern C void wrap member1 Class m
  • 超出范围

    理想情况下 我想这样做 w 4px media max width 900px r 3px media min width 900px r 5px myclass border radius w r 这不会编译 因为 r没有在我定义的范围内
  • C#中检查线程是否正在运行

    我在 C 代码中创建了一个名为 ZipFolders 的函数 事实上 我是从 Unity 按钮调用它的 当按下它时 尝试将文件夹压缩到目录中 因为同时我想做其他事情 所以我尝试在新线程中调用该函数 我的问题是如何检查该线程是否正在运行或已停
  • 如何处理 JavaScript 中的“未定义”[重复]

    这个问题在这里已经有答案了 可能的重复 检测 JavaScript 中未定义的对象属性 https stackoverflow com questions 27509 detecting an undefined object proper
  • 为什么 Google Analytics 事件不从 onSubmit 发送?

    我想跟踪用户使用 Analytics 事件下载文件的频率 但即使事件似乎已发送 跟踪 gif 似乎并未正确到达 要下载文件 用户需要填写一份简短的表格 输入到此表单中的信息由该功能检查checkSubmit 返回false当输入的信息无效或
  • 如何在加壳器配置期间将文件复制到主机?

    我想在打包程序配置期间生成公共 私有 ssh 密钥对并将文件复制到主机 有没有办法使用打包程序将文件从虚拟机复制到主机 我想到了 文件提供程序有一个 方向 选项 允许下载而不是上传 type file source app tar gz d
  • 构建不以文件为中心的系统

    我们有一个软件基础设施 其工作方式与软件构建系统非常相似 从不同来源收集信息并用于生成一些输出 就像在传统的软件构建中一样 我们有不同类型的输出 依赖树等 主要区别在于我们的来源 中间结果和输出本质上并不是基于文件的 相反 它们是 唯一可寻
  • 不工作

    以下超链接不起作用 但当您单击 在新选项卡中打开 按钮时它会起作用 div class span12 category products style margin 0 auto div class toolbar div class row
  • 我应该使用 mysql_real_escape_string 转义预期的整数值还是可以只使用 (int)$expectedinteger

    使用cast int 代替转义是否安全 class opinion function loadbyopinionid opinionid opinionid int opinionid mysql query select from fe
  • 为什么这个数组没有索引?

    我试图将元素排序到我以这种方式构建的二维数组中 但是当代码到达二维数组时 我收到错误 数组超出索引 var categoryTempArray ProductCatalogue func sortinOut var i 0 var j 0
  • 使用prepareForSegue方法时IBOutlet属性不会更新

    我在将值传递给destinationViewController的IBOutlet属性时遇到问题 但它在普通属性上工作正常 请参阅下面的代码 void prepareForSegue UIStoryboardSegue segue send
  • 固定可滚动表格的标题

    这是一个带有固定行和列的表格 我也试图通过固定标题来改进它 IE 当您滚动表格时 标题不应滚动 它应该永久可见 是否可以 我已经尝试过了caption side top outside but top outside仅适用于 Firefox
  • 从 HTMLElement 获取 google.maps.Map 实例

    我的页面上有一张现有地图 我可以使用类似于 document getElementById 的方法来选择该元素来获取 HTMLElement javascript 对象 是否可以获取初始化地图时创建的 google maps Map 实例
  • 应用程序被终止时如何从 Firebase 向设备发送消息? [复制]

    这个问题在这里已经有答案了 我正在尝试熟悉 Firebase 通知 它工作正常 但当应用程序未打开时 我只能从通知控制台接收消息 我知道文档说 如果您的应用程序位于前台或后台 您可以在 onMessageReceived 方法中接收消息 否
  • Java 程序是否有可能比 C 中的相同程序(优化)更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有关您编写的代码的问题必须描述具体问题 and 包含有效代码重现它 在问题本身中 看SSCCE org http sscce org 以获
  • SVG getBoundingClientRect() + “transform:rotate()”在 Chrome 中以一种非常具体的方式出现错误

    getBoundingClientRect 在所有 SVG 元素上都可以正常工作 但在 Chrome 中旋转元素的情况除外 下面我画了两条线 左边的一条是对角线 右边的线从垂直开始 如黑线所示 绿色框是 getBoundingClientR
  • @ 符号在 Vue.js 中起什么作用?

    我是 Vue js 的新手 我正在查看某人的代码 我注意到他们正在使用 符号 这是做什么用的 export default methods handleCreate console log Child has been created
  • 使用 HTML 中的 Flying-Saucer 渲染 PDF 中的嵌入图像

    我有一个 xhtml 文档 我正在使用 Flyingsaucer 将其转换为 PDF xhtml 有几个标签 其中内嵌有 base64 编码的图像 xhtml 的源是动态的 因此图像标签的结构可能会有所不同 这是标签的示例 img src