4

現在、Crystal レポートを使用してプログラムで PDF を生成し、データベースに保存しています。PDFドキュメントにはバーコード画像が含まれています。各ファイルのサイズは 120 ~ 150 KB です。

すべてが順調に進んでいますが、最近、データベースのサイズとストレージ要件が大幅に増加するという問題に直面しています。これは、毎日 100 ~ 1000 件のレコードが生成されるためです。

PDFファイルを圧縮して保存する方法はありますか?バーコードに問題を生じさせずにこれらを実行できる API/ツールはありますか?圧縮後にサイズを大幅に縮小できますか?

または、データを保存する別の方法は良いでしょうか?

これに関する提案は大歓迎です。

ありがとう、スヴィーラップ

4

2 に答える 2

3

残念ながら、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 に答える