Aspose.PDF for .NET(ver.23.2)を利用しPDF圧縮処理を実装しているのですが、添付ファイル1は大幅に圧縮できているのに対し、
添付ファイル1.pdf (4.7 MB)
添付ファイル2.pdf (3.0 MB)
添付ファイル2はほとんど圧縮することができておりません。
↓圧縮後のファイルサイズ
添付ファイル1.pdf (4,826KB)⇒1,746KB
添付ファイル2.pdf (3,116KB)⇒3,013KB
各種パラメータの設定は以下の通りです。
LinkDuplcateStreams = true;
RemoveUnusedObjects = true;
RemoveUnusedStreams = true;
MaxResoultion = 72;
ImageCompressionOptions.ResizeImages = true;
ImageCompressionOptions.CompressImages = true;
ImageCompressionOptions.ImageQuality = 50;
添付ファイル1、2ともに圧縮可能なパラメータの設定をご教授いただきたいです。
また、今後パラメータを設定する際に何を参考に設定すればよいかもご教授いただければ幸いです。
お手数おかけしますが、よろしくお願いいたします。
@Shunsuke_Kumai
要約
PDF のサイズは画像の圧縮・リサイズ、未使用オブジェクトやストリームの除去、メタデータの削除によって大きく変わります。Aspose.PDF for .NET では OptimizationOptions と Document.OptimizeResources、Document.Optimize、Document.RemoveMetadata を組み合わせて実行することで、ほとんどのケースでサイズを削減できます。
原因
- 画像リサイズが有効になっていない可能性 –
ImageCompressionOptions.MaxResolution が正しく設定されていないと、画像はリサイズされません。
- 最適化手順が不足 –
OptimizeResources だけでは未使用オブジェクトやストリームの除去が完了しません。Optimize と RemoveMetadata を併用する必要があります。
次にすべきこと
- 最適化オプションを正しく設定
var opt = new Aspose.Pdf.Optimization.OptimizationOptions
{
LinkDuplicateStreams = true,
RemoveUnusedObjects = true,
RemoveUnusedStreams = true,
ImageCompressionOptions = new Aspose.Pdf.Optimization.ImageCompressionOptions
{
CompressImages = true,
ResizeImages = true,
MaxResolution = 72, // 画像の最大解像度 (dpi)
ImageQuality = 50 // 0‑100 の品質 (必要に応じて調整)
}
};
- 最適化手順を実行
using (var pdf = new Aspose.Pdf.Document("input.pdf"))
{
pdf.OptimizeResources(opt); // 画像圧縮・リサイズ
pdf.Optimize(); // 未使用オブジェクト・ストリームの除去
pdf.RemoveMetadata(); // XMP/Info メタデータの除去
pdf.Save("output_optimized.pdf");
}
- 効果が出にくい場合の調整
- 画像がすでに高圧縮 JPEG の場合は
ImageQuality を 30〜20 程度に下げて再圧縮を試す。
MaxResolution を 50 前後に下げると、解像度が高い画像のサイズがさらに削減できることがあります。
- 必要に応じてフォントのサブセット化や不要な添付ファイルの除去を検討してください(これらは
RemoveMetadata で一部対応します)。
チェックリスト
OptimizationOptions に LinkDuplicateStreams、RemoveUnusedObjects、RemoveUnusedStreams と画像圧縮オプションを設定する。
OptimizeResources → Optimize → RemoveMetadata の順に呼び出し、PDF を保存する。
- 圧縮後のサイズが期待に満たない場合は
ImageQuality と MaxResolution をさらに低く設定して再実行する。
この手順で画像中心の PDF でもサイズ削減が期待できます。必要に応じて各パラメータを微調整し、最適なバランスを見つけてください。
お世話になっております。頂いたアドバイスを試しましたが改善できなかったため検証をお願いいたします。
チェックリスト
1.OptimizationOptions に LinkDuplicateStreams、RemoveUnusedObjects、RemoveUnusedStreams と画像圧縮オプションを設定する。
2.OptimizeResources → Optimize → RemoveMetadata の順に呼び出し、PDF を保存する。
3.圧縮後のサイズが期待に満たない場合は ImageQuality と MaxResolution をさらに低く設定して再実行する。
チェックリストについて実施して再度PDF圧縮を試みましたが、サイズ削減に変化はありませんでした。
お手数おかけして恐縮ですが、はじめの投稿で連携しているPDFがサイズ削減できるのかどうか検証して頂くことは可能でしょうか?
・添付ファイル1.pdf (4.7 MB)
・添付ファイル2.pdf (3.0 MB)
目標の圧縮サイズは、それぞれ2MB以下を目指しております。
よろしくお願いいたします。
@Shunsuke_Kumai
私たちは最新バージョンのAPI(25.11)でテストを行い、ファイルが2.4MBに圧縮されました。最新バージョンのAPIを使用していただき、結果が問題ないかお知らせいただけますでしょうか?
out.pdf (2.9 MB)
@asad.ali
お世話になっております。
ご検証頂きましてありがとうございます。
PDF圧縮の結果について承知いたしました。
恐れ入りますが、私は2MB以下のファイルサイズまで圧縮したいと考えておりました。
今回の結果は、最大限圧縮して2.4MBになっているという認識で合っていますでしょうか?
つまり、2MB以下にはできないという理解で合っていますでしょうか?
お忙しいところ恐れ入りますが、教えて頂けますと幸いです。
また、もしよろしければ検証に用いたソースコードを共有して頂けますでしょうか?
よろしくお願いいたします。
@Shunsuke_Kumai
私たちは、あなたが共有してくれた同じコードスニペットを使用し、それを2.4Mに圧縮しました。もしこれが唯一の解決策である場合、2M未満にサイズを減らす可能性を詳細に調査することも可能です。その場合はご確認いただき、問題追跡システムにチケットを登録して共有できるよう進めさせてください。
お世話になっております。
私が共有したソースコードを使用してPDF圧縮をした結果である旨を承知いたしました。
また、最新バージョンのAPIを使用して試す件ですが、APIを呼び出す元のシステムが.NET5.0を使用している関係上、NET5.0がサポートされているver.23.2までしか使用することができません。
お手数おかけいたしますが、2M未満にサイズを減らす可能性を詳細に調査して頂けますでしょうか?
その際、ver.23.2のAPIで可能かどうか検証いただくことは可能でしょうか?
よろしくお願いいたします。
@Shunsuke_Kumai
旧バージョンのAPIに関しては、解決策のご提案や修正の提供ができないことをご了承ください。サポートは最新バージョンのAPIを基準として提供しており、お客様のシナリオについて調査チケットをログする場合、修正(可能であれば)は最新バージョンのAPIで行われます。そのため、最新バージョンをご利用いただく必要があります。
ご返信が遅くなりまして申し訳ありません。
旧バージョンのAPIに関しては、解決策の提案や修正の提供ができない旨を承知いたしました。
調査頂きましてありがとうございました。
@Shunsuke_Kumai
フィードバックありがとうございます。APIを引き続きご利用ください。他に情報が必要な場合は、お気軽に新しいトピックを作成してください。