4

截至目前,我们正在使用水晶报表以编程方式生成 PDF 并将其保存到数据库中。PDF 文档中包含条形码图像。每个文件的大小为 120-150 KB。

一切运行良好,但最近我们面临数据库大小和存储需求大幅增长的问题。这是因为每天生成 100 - 1000 条记录。

有什么方法可以压缩PDF文件然后存储它。任何可用的 API/工具都可以执行这些操作而不会对条形码造成问题。压缩后我们能否大幅减小尺寸?

或者任何其他存储数据的方式都会很好?

对此的任何建议将不胜感激。

谢谢, 斯维拉普

4

2 回答 2

3

不幸的是,由于 PDF 已经被压缩,您不会通过压缩 PDF获得太多收益。

于 2012-06-13T04:17:09.420 回答
2

许多压缩的 PDF 文件可以进一步压缩。

PDF 文件的大小通常可以通过以下方式减小:

  • 删除未使用的对象(如果有)
  • 从文件中删除多余的空白字符(而不是从视觉内容中)
  • 使用对象流(PDF 1.5 功能)

我不知道 Crystal Report 压缩 PDF 的效果如何,但您可能想尝试Docotic.Pdf 库和以下代码,看看您的文件是否可以更好地压缩。

public static void CompressExistingDocument(string original, string output)
{
    using (PdfDocument pdf = new PdfDocument(original))
    {
        pdf.SaveOptions.Compression = PdfCompression.Flate;
        pdf.SaveOptions.UseObjectStreams = true;
        pdf.SaveOptions.RemoveUnusedObjects = true;
        pdf.SaveOptions.WriteWithoutFormatting = true;

        pdf.Save(output);
    }

    FileInfo originalFileInfo = new FileInfo(original);
    FileInfo compressedFileInfo = new FileInfo(output);
    MessageBox.Show(
        String.Format("Original file size: {0} bytes;\r\nCompressed file size: {1} bytes",
        originalFileInfo.Length, compressedFileInfo.Length));

    System.Diagnostics.Process.Start(output);
}

免责声明:我为图书馆的供应商工作。

于 2012-06-13T15:09:16.873 回答