2012-06-13 77 views
2

截至目前,我们正在编程使用水晶报告生成PDF并将其保存到数据库。 PDF文档中有条形码图像。每个文件大小为120-150 KB。.net压缩pdf生成水晶报告

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

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

或者其他任何存储数据的方式都不错?

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

感谢, Sveerap

+0

是否将pdf存储在文件系统中,并且只在DB中存储pdf的路径选项? –

+0

每天120MB不算什么。 – Lakis

+0

@MikeBantegui:我已经提出了这种方法,但业务并不关心在文件系统上存储pdfs – sveerap

回答

2

不幸的是,你不会,因为它已经被压缩压缩PDF获得

1

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

PDF文件的大小通常可以通过降低:

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

我不知道水晶报表如何压缩PDF文件,但你可能想尝试Docotic.Pdf library和下面的代码,看看你的˚F iles可以被压缩得更好。

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); 
} 

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