さまざまな組織がPDFファイルを使用して、安全で組織的な情報交換を行っています。ただし、画像、ビデオ、図面などの埋め込みコンテンツが原因でPDFファイルのサイズが大きくなる場合があります。このようなPDFファイルのサイズは、品質を損なうことなく簡単に最適化または圧縮できます。 Javaアプリケーションに組み込むことができるPDFサイズの圧縮と最適化の次のシナリオを調べてみましょう。

PDFサイズの最適化と圧縮API–インストール

Aspose.PDF for Java APIの効率的で信頼性の高いルーチンを利用して、同じ品質を維持しながら巨大なサイズのPDFファイルを最適化または圧縮できます。 JARファイルは、プロジェクトのダウンロードまたはMaven構成からダウンロードできます。

Javaを使用してWeb用にPDFドキュメントを最適化する

PDFドキュメントは、Webページで使用する必要がある場合に最適化できます。この最適化は、PDFドキュメントの最初のページをできるだけ早く表示するのに役立ちます。以下の手順に従って、最適化されたPDFファイルを作成できます。

  1. オープンソースのPDFファイル
  2. PDF最適化のためにメソッドの最適化を呼び出します
  3. 出力PDFファイルを保存します

以下のコードスニペットは、Java環境でWeb用にPDFドキュメントを最適化する方法の例です。

// ドキュメントを開く
Document pdfDocument = new Document("Original.pdf");

// Web用に最適化
pdfDocument.optimize();

// 出力ドキュメントを保存する
pdfDocument.save("Optimized_output.pdf");

Javaを使用して画像を含むPDFのサイズを圧縮または最適化する

ここでは主に、PDFファイルに多くの画像が含まれているためサイズが大きいシナリオについて説明します。たとえば、飛行機のさまざまなモデルの図面と、マイナーまたはメジャーの各パーツに関する情報を含むPDFファイルが、すべてのコンポーネントの画像または写真として含まれています。さらに、多くの専門文書には、ファイルの主要なアーティファクトとして画像が含まれている可能性があります。このようなシナリオでは、次の方法でPDFファイルを圧縮できます。

Javaを使用したすべての画像の縮小、圧縮、サイズ変更

画像を縮小、圧縮、サイズ変更することで、多くの画像を含むPDFファイルのサイズを最小限に抑えることができます。ファイルサイズの大部分は、現在縮小しようとしている画像でカバーされているため、サイズの改善が顕著になる可能性があります。 PDFファイルの画像または画像を縮小、圧縮、およびサイズ変更するには、以下の手順に従う必要があります。

  1. 入力PDFファイルをロードします
  2. OptimizationOptionsオブジェクトを初期化します
  3. 画質と解像度を設定する
  4. optimizeResourcesメソッドを呼び出します
  5. 出力PDFドキュメントを保存します

以下のコードスニペットは、Javaを使用してPDFファイルサイズを縮小および最小化するために画像を縮小または圧縮する方法を示しています。

// 入力ドキュメントを読み込む
Document doc = new Document(dataDir + "Test.pdf");

// OptimizationOptionsオブジェクトを初期化します
OptimizationOptions opt = new OptimizationOptions();

// 画像圧縮を有効にする
// PDFファイルの画像の品質と解像度を設定します
opt.getImageCompressionOptions().setCompressImages(true);
opt.getImageCompressionOptions().setImageQuality(10);
opt.getImageCompressionOptions().setMaxResolution(150);
opt.getImageCompressionOptions().setResizeImages(true);
doc.optimizeResources(opt);

// 更新したファイルを保存します
doc.save(dataDir + "compressingPDFWithImages_out.pdf");

埋め込みフォント、未使用のストリームの削除、およびJavaを使用した重複ストリームのリンク

PDFファイルのサイズを小さくする必要がある場合は、すべてのバイトが重要になります。埋め込みフォントは、さまざまなアプローチでファイルサイズを縮小するのに役立ちます。たとえば、すべてのフォントの埋め込みを解除することも、PDFファイルで使用されているフォント文字のサブセットのみを保持することもできます。それでもファイルサイズを最小化するのに役立つフォントの部分的な埋め込み解除になります。さらに、未使用のストリームを削除したり、重複したストリームをリンクして、さらにスペースを節約することができます。これらのPDFの最適化により、ファイルサイズが大幅に削減されます。 PDFファイルのサイズを最適化および縮小するには、次の手順に従う必要があります。

  1. 入力PDFドキュメントを読み込む
  2. OptimizationOptionsクラスオブジェクトを初期化します
  3. すべてのフォントまたはフォントのサブセットの埋め込みを解除します
  4. 重複するストリームをリンクする
  5. 未使用のストリームを削除します

次のコードは、PDFドキュメントのサイズを最適化、縮小、最小化するためにPDFファイルを圧縮する方法を詳しく説明しています。

Document doc = new Document(dataDir + "Test.pdf");
OptimizationOptions opt = new OptimizationOptions();

// また
// PDFのすべてのフォントの埋め込みを解除します
opt.setUnembedFonts(true);

//また
// 使用されている文字の埋め込みフォントのみを保持する
opt.setSubsetFonts(true);

// 重複ストリームをリンクする
opt.setLinkDuplcateStreams(false);

// 未使用のストリームを削除します
opt.setRemoveUnusedStreams(false);

// 未使用のオブジェクトを削除します
opt.setRemoveUnusedObjects(false);

doc.optimizeResources(opt);

// 更新したファイルを保存します
doc.save(dataDir + "compressingPDF.pdf");

これまで、主に画像付きのPDFファイルの最適化アプローチについて説明してきました。それでは、PDFを最適化するためのいくつかの方法を進めましょう。

Javaを使用してPDFドキュメントサイズを圧縮または縮小する

PDFファイルには、多くの場合、注釈、編集可能なフォームフィールド、および集合的にスペースを占めるカラーアーティファクトが含まれています。 PDFファイルサイズを圧縮するための次の手順を見てみましょう。

Javaでサイズを縮小するための注釈の削除またはフラット化

PDFファイルには多くの注釈を含めることができます。たとえば、透かし、コメント、図形などです。注釈が不要になった場合は削除したり、変更が不要な場合は注釈を太くしたりできます。 PDFファイルサイズを最適化するために注釈を削除または平坦化するには、以下の手順に従ってください。

  1. オープンソースのPDFドキュメント
  2. 各ページを繰り返します
  3. [アノテーション]をフラット化または削除します(https://reference.aspose.com/pdf/java/com.aspose.pdf/Annotation)
  4. 出力PDFドキュメントを保存します

以下のコードスニペットは、Javaを使用してPDFドキュメントの注釈を削除またはフラット化する方法の例です。

// ドキュメントを開く
Document pdfDocument = new Document(dataDir + "OptimizeDocument.pdf");

// 各ページと注釈を繰り返します
for (Page page : pdfDocument.getPages())
{
    for (Annotation annotation : page.getAnnotations())
    {
        // 注釈を平坦化する
        annotation.flatten();
        
        // または注釈を削除します
        // page.getAnnotations().delete(annotation);        
    }
}
// 最適化されたPDFドキュメントを保存
pdfDocument.save(dataDir + "OptimizeDocument_out.pdf");

JavaでPDFファイルサイズを最小化するためのフォームフィールドの削除

大規模なデータの提出が必要な場合は、入力可能なPDFフォームが一般的です。データの送信後、入力可能なフォームフィールドを削除して、PDFファイルのサイズを最適化および最小化できます。フォームフィールドを削除するには、以下の手順に従う必要があります。

  1. 入力PDFドキュメントを読み込む
  2. PDFドキュメントのフォームフィールドを確認します
  3. 各フィールドを繰り返し処理し、フラット化します
  4. 更新された圧縮PDFファイルを保存します
// ソースPDFフォームを読み込む
Document doc = new Document(dataDir + "input.pdf");

// フォームフィールドをフラット化
if (doc.getForm().getFields().length > 0)
{
    for (Field item : doc.getForm().getFields())
    {
        item.flatten();
    }
}

dataDir = dataDir + "FlattenForms_out.pdf";
// 更新したドキュメントを保存する
doc.save(dataDir);

Javaを使用してPDFの圧縮と最適化のためにRGB色空間をグレースケールに変換する

ほとんどのPDFファイルには、グレースケール色空間でも適切に表現できるテキストコンテンツが含まれています。さらに、目的と優先順位が各バイトを保存することである場合、データのアーカイブに焦点が当てられているため、画像でさえグレースケールに変換できます。 RGB色空間をグレースケールに変換することにより、PDFファイルサイズを圧縮および最適化するための以下の手順に従うことができます。

  1. ソースPDFドキュメントにアクセス
  2. RgbToDeviceGrayConversionStrategyインスタンスを初期化します
  3. 各色の色空間をグレースケールに変換します
  4. 出力最適化PDFファイルを保存

次のコードスニペットは、Java環境で色空間を変更してPDFサイズを圧縮および最適化する方法を示しています。

// 入力PDFドキュメントを読み込む
Document document = new Document("input.pdf");

// RgbToDeviceGrayConversionStrategyインスタンスを初期化します
RgbToDeviceGrayConversionStrategy strategy = new RgbToDeviceGrayConversionStrategy();
for (int idxPage = 1; idxPage <= document.getPages().size(); idxPage++) {
	Page page = document.getPages().get_Item(idxPage);
        
        // 各ページの色空間をグレースケールに変換します
	strategy.convert(page);
}
// 出力PDFドキュメントを保存
document.save("output.pdf");

結論

この記事では、PDFファイルを最適化および圧縮してサイズを縮小するためのさまざまな方法とアプローチについて説明しました。まず、Javaを使用してWeb用にPDFファイルサイズを最適化しました。次に、複数の画像を含むPDFファイル内の画像の縮小、圧縮、およびサイズ変更について学習しました。さらに、フォント、ストリーム、注釈、フォームフィールドの操作、およびPDFドキュメントの色空間をグレースケールに変換して、サイズは小さいが同じ品質のPDFファイルをJavaを使用して作成できるようにすることも検討しました。さらに、このトピックに関連する質問がある場合は、無料サポートフォーラムからお問い合わせください。

関連項目

情報:Asposeの新しいオンラインWebアプリを使用すると、一連の画像をビデオに変換できます。 ビデオから音声を抽出するという別のサービスもチェックしてみてください。