截至目前,我们正在使用水晶报表以编程方式生成 PDF 并将其保存到数据库中。PDF 文档中包含条形码图像。每个文件的大小为 120-150 KB。
一切运行良好,但最近我们面临数据库大小和存储需求大幅增长的问题。这是因为每天生成 100 - 1000 条记录。
有什么方法可以压缩PDF文件然后存储它。任何可用的 API/工具都可以执行这些操作而不会对条形码造成问题。压缩后我们能否大幅减小尺寸?
或者任何其他存储数据的方式都会很好?
对此的任何建议将不胜感激。
谢谢, 斯维拉普
截至目前,我们正在使用水晶报表以编程方式生成 PDF 并将其保存到数据库中。PDF 文档中包含条形码图像。每个文件的大小为 120-150 KB。
一切运行良好,但最近我们面临数据库大小和存储需求大幅增长的问题。这是因为每天生成 100 - 1000 条记录。
有什么方法可以压缩PDF文件然后存储它。任何可用的 API/工具都可以执行这些操作而不会对条形码造成问题。压缩后我们能否大幅减小尺寸?
或者任何其他存储数据的方式都会很好?
对此的任何建议将不胜感激。
谢谢, 斯维拉普
不幸的是,由于 PDF 已经被压缩,您不会通过压缩 PDF获得太多收益。
许多压缩的 PDF 文件可以进一步压缩。
PDF 文件的大小通常可以通过以下方式减小:
我不知道 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);
}
免责声明:我为图书馆的供应商工作。