使用带有图像的 C# 代码生成 pdf 文件的大小限制是多少?

2024-05-12

我正在使用 Web 应用程序使用 C# 代码生成 PDF 文件。 PDF 文件包含 .tiff 图像。如果包含图像的文件夹大小超过 1GB,则浏览器将自动关闭。使用 C# 代码生成 PDF 文件的图像大小限制是多少?


您问题的答案取决于三个参数:

  1. PDF 版本:PDF 1.5 之前与 PDF 1.5 及更高版本,
  2. PDF 样式:纯文本交叉引用表与交叉引用流,以及
  3. iText(Sharp) 版本:5.3 之前 vs 5.3 及更高版本)。

让我们从 PDF 版本和交叉引用表开始。如果您不知道:交叉引用表定义了 PDF 内每个对象的字节偏移量。

在 PDF 1.5 之前的 PDF 版本中,交叉引用表以纯文本形式添加,并且每个字节偏移量使用十位数字定义。因此,文件的大小将限制为 10 到十分之一字节(大约 10 GB)。

PDF 1.5 之前版本的 PDF 的最大大小约为 10 GB。

从 PDF 1.5 开始,您可以选择是否要以纯文本创建交叉引用表,或者是否要使用交叉引用流。如果您使用交叉引用流,“仅限 10 位数字”限制就会消失。

使用压缩交叉引用流的 PDF 版本 1.5 或更高版本的 PDF 的最大大小仅取决于处理 PDF 的软件的限制。

如果您使用 iText(Sharp),并且需要大于 10 GB 的文件,则需要确保使用压缩的交叉引用流创建文件。

iText 的版本也很重要:

  • iText 5.3 之前的所有版本仅支持最大约 2 GB 的文件,因为所有字节偏移量都存储为int这些版本中的值。
  • 从 5.3 开始,iText 支持最大 1 TB 的文件,因为所有字节偏移量都存储为long这些版本中的值。

使用 5.3 之前的 iText 版本创建的 PDF 的最大大小为 2 GB。使用 iText 版本 5.3 及更高版本创建的 PDF 的最大大小为 1 TB。

但是:您还需要考虑到并非所有查看器都可以渲染那么大的文件。虽然该文件可能完全符合 ISO-32000-1,但您可能会达到内存限制。

您正在通过互联网向随机计算机上的随机浏览器中的随机 PDF 查看器插件发送 1 GB 数据。如果是旧机器,连1G内存都没有。当最终用户的连接速度较慢时,最终用户将不得不永远等待才能获取完整的文件。您无法预测浏览器和 PDF 查看器将如何响应。我的猜测是浏览器由于内存不足异常而关闭。这不是由 PDF 固有的限制引起的问题,也不是由 iText(Sharp) 的限制引起的问题。这纯粹是您的设计固有的限制。您不应该向浏览器发送千兆字节。将它们写入云中的共享驱动器。

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

使用带有图像的 C# 代码生成 pdf 文件的大小限制是多少? 的相关文章

随机推荐