2012-06-13 506 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); 
} 

聲明:我爲圖書館的供應商工作。