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

时间:2015-02-02 11:57:30

标签: c# pdf itextsharp

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

1 个答案:

答案 0 :(得分:0)

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

  1. PDF版本:在PDF 1.5与PDF 1.5及更高版本之前,
  2. PDF样式:纯文本交叉引用表与交叉引用流和
  3. iText(夏普)版本:在5.3 vs 5.3及更高版本之前。
  4. 让我们从PDF版本和交叉引用表开始。如果你不知道:交叉引用表定义了PDF中每个对象的字节偏移量。

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

    版本低于PDF 1.5的PDF的最大大小约为10千兆字节。

    从PDF 1.5开始,您可以选择是以纯文本格式创建交叉引用表,还是要使用交叉引用流。如果使用交叉引用流,则“仅10位数”限制将消失。

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

    如果您使用iText(夏普),则需要确保使用压缩的交叉引用流创建文件(如果您需要大于10千兆字节的文件)。

    iText的版本也很重要:

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

    在5.3之前使用iText版本创建的PDF的最大大小为2千兆字节。使用iText 5.3及更高版本创建的PDF的最大大小为1 TB。

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

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