IRONSOFTWAREHOME
产品比较

与Aspose C#创建PDF文件 vs IronPDF:开发人员指南

Curtis Chau
Curtis Chau
Updated: 2026年7月5日

通过文件路径或URL引用图像的PDF携带隐藏的依赖。 当文档离开创建它的机器,在无状态的云函数中运行,或被归档多年后,这些引用可能会失效,并在应该显示标志或图表的地方留下空白框。 直接在HTML中以base64数据URI嵌入图像去除了这种依赖,IronPDF将结果渲染为一个完全自包含的PDF。

业务问题

一个发票服务移到Azure或AWS Lambda上,文件系统访问受限且短暂,因此原本在本地有效的图像路径不再解析。 一个报告工具需要发送电子邮件的文档在数年后仍能正确显示,尽管原始资源服务器已改变。 一个管道从运行时生成的图像中组装文档,而这些图像从未保存到磁盘。 在每种情况下,外部图像引用都是一种责任。

将图像作为数据URI嵌入

该模式分为三个步骤:读取图像字节,将其转换为base64,并将结果放入带有匹配MIME类型的<img>标签中。 然后渲染的PDF将图像保存在文件内。

using IronPdf;
using System;

byte[] imageBytes = System.IO.File.ReadAllBytes("logo.png");
string dataUri = "data:image/png;base64," + Convert.ToBase64String(imageBytes);
string html = $"<img src='{dataUri}'>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("self-contained.pdf");
C#

相同的方法适用于运行时生成的图像,例如在内存中生成的图表或条形码,直接编码字节而不写入临时文件。只要数据URI声明正确的类型,即可支持多种格式:PNG、JPEG、GIF、SVG (image/svg+xml) 和 WebP。

需要计划的要点

  • Base64增加大小: 编码会使每个图像的字节大小增加大约三分之一,HTML和PDF中都会包含。 对于图像密集型文档,可以在编码前压缩或调整大小,并在之后应用PDF压缩。
  • 匹配MIME类型: 前缀必须与格式匹配,例如data:image/jpeg;base64,用于JPEG,否则图像将无法渲染。
  • 无文件系统依赖: 因为图像在文档中传输,渲染不依赖于可访问的路径或资源服务器,这使得它在云和容器部署中可靠。
  • 减少获取: 内联图像避免了渲染期间的额外HTTP或文件系统调用,当文档包含许多小图像时,有助于提高吞吐量。

结果

通过将图像嵌入为数据URI,团队可以生成在笔记本电脑或无服务器函数中运行时渲染相同的PDF,并在通过电子邮件发送或归档时保持每个图像完整。 完整的格式细节和示例在使用DataURI嵌入图像指南中。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户