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

标签 c# pdf itext

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

最佳答案

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

  1. PDF 版本:PDF 1.5 之前与 PDF 1.5 及更高版本,
  2. PDF 样式:纯文本交叉引用表与交叉引用流,以及
  3. iText(Sharp) 版本:5.3 之前与 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,但您可能会遇到内存限制。

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

关于c# - 使用带图像的 C# 代码生成 pdf 文件的大小限制是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28277273/

相关文章:

c# - 从 linq 中的类返回可枚举值?

c# - 通过 SmtpClient ( ASP.NET MVC) 发送邮件后删除附件

c# - npgsql 泄漏 Postgres 数据库连接 : Way to monitor connections?

linux - 将PDF文件制作成动画书

ios - 使用 CGPDFScanner 提取字体数据

java - 如何阻止 Flying Saucer (xhtmlrender) PDF 在 MacOS X 上显示超链接周围的边框?

pdf - iText 中的特殊字符

c# - 使用 Lambda 表达式的高级搜索

java - itextpdf : merge pdf files

pdf - 修复 PDF 的方向以进行缩放