チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»pdfnetextractread

Displaying items by tag: pdfnetdocumentoperation

大きな PDF ドキュメントは、電子メールで PDF ファイルを転送したい場合や、限られたストレージ容量のデバイスに PDF ファイルを保存したい場合など、すべての場合に適用されません。その時、PDF ファイルのサイズを圧縮することは、この問題を解決するための完璧な方法かもしれません。この記事では、Spire.PDF for .NET を使用して、C# および VB.NET でプログラムによって PDF ファイルを圧縮する方法を示します。

ここでは、画像、フィールド、コメント、ブックマーク、添付ファイル、埋め込みフォントを削除することによって PDF サイズを小さくすることには触れません。

Spire.PDF for .NET をインストールします

まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.PDF

PDF ファイルのコンテンツと画像を圧縮する

次の手順は、Spire.PDF for .NET を使用して PDFファイルを圧縮する方法を示しています

  • PdfDocument クラスのオブジェクトを作成する
  • PdfDocumentLoadFromFile() メソッドを使用して、PDF ドキュメントをロードする。 
  • PdfDocumentFileInfo.IncrementalUpdate の属性を false に設定して incremental update を無効にします。
  • 圧縮レベルを「最適」に設定して、ドキュメントのコンテンツを圧縮します。PdfCompressionLevel の例から他のいくつかのレベルを選択できます。
  • ドキュメント内のページをトラバースし、PdfImageHelper.GetImagesInfo() メソッドを使用して、各ページの画像情報セットを取得します。
  • コレクション内のすべてのアイテムをトラバースし、PdfImageHelperReplaceImage() メソッドを使用して、各ピクチャを圧縮ピクチャに置き換えます。
  • PdfDocumentSaveToFile() メソッドを使用して、ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using Spire.Pdf.Utilities;

namespace CompressPdf
{
    class Program
    {
        static void Main(string[] args)
        {
            // PdfDocumentクラスのオブジェクトを作成する
            PdfDocument doc = new PdfDocument();

            // PDFファイルのロードする
            doc.LoadFromFile(@"sample.pdf");

            // incremental updateを無効にする
            doc.FileInfo.IncrementalUpdate = false;

            //圧縮レベルを最適に設定する
            doc.CompressionLevel = PdfCompressionLevel.Best;

            //ドキュメント内のページをループブラウズする
            foreach (PdfPageBase page in doc.Pages)
            {
                //PdfImageHelperのオブジェクトを作成する
                PdfImageHelper helper = new PdfImageHelper();

                //特定のページの画像情報セットを取得する
                PdfImageInfo[] imagesInfo = helper.GetImagesInfo(page);

                //コレクション内のすべてのアイテムをループブラウズする
                foreach (PdfImageInfo imageInfo in imagesInfo)
                {
                    //特定の画像を圧縮画像と一緒に配置する           
                    helper.ReplaceImage(imageInfo, CompressImage(imageInfo.Image));
                }

            }

            //ドキュメントを別のPDFファイルに保存する
            doc.SaveToFile("output.pdf");
            doc.Close();
        }

        //画質を低下させることで画像を圧縮する
        private static PdfBitmap CompressImage(Image img)
        {
            PdfBitmap newImage = new PdfBitmap(img);
            newImage.Quality = 10;
            return newImage;
        }
    }
}
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing
Imports Spire.Pdf.Utilities
 
Namespace CompressPdf
    Class Program
        Shared  Sub Main(ByVal args() As String)
            ' PdfDocumentクラスのオブジェクトを作成する
            Dim doc As PdfDocument =  New PdfDocument() 
 
            ' PDFファイルのロードする
            doc.LoadFromFile("sample.pdf")
 
            ' incremental updateを無効にする
            doc.FileInfo.IncrementalUpdate = False
 
            '圧縮レベルを最適に設定する
            doc.CompressionLevel = PdfCompressionLevel.Best
 
            'ドキュメント内のページをループブラウズする
            Dim page As PdfPageBase
            For Each page In doc.Pages
                ' PdfImageHelperのオブジェクトを作成する
                Dim helper As PdfImageHelper =  New PdfImageHelper() 
 
                '特定のページの画像情報セットを取得する
                Dim imagesInfo() As PdfImageInfo =  helper.GetImagesInfo(page) 
 
                'コレクション内のすべてのアイテムをループブラウズする
                Dim imageInfo As PdfImageInfo
                For Each imageInfo In imagesInfo
                    '特定の画像を圧縮画像と一緒に配置する   
                    helper.ReplaceImage(imageInfo, CompressImage(imageInfo.Image))
                Next
 
            Next
 
            'ドキュメントを別のPDFファイルに保存する
            doc.SaveToFile("output.pdf")
            doc.Close()
            System.Diagnostics.Process.Start("output.pdf")
 
        End Sub
 
        '画質を低下させることで画像を圧縮する
        Private Shared Function CompressImage(ByVal img As Image) As PdfBitmap
            Dim NewImage As PdfBitmap =  New PdfBitmap(img) 
            NewImage.Quality = 10
            Return NewImage
        End Function
    End Class
End Namespace

C#/VB.NET:PDF ファイルを圧縮する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in 文書操作

場合によって、1つの PDF をいくつかのより小さな PDF に分割すると便利です。たとえば、大規模な契約書、レポート、書籍、学術論文、またはその他のドキュメントを小さな部分に分割して、レビューや再利用を容易にすることができます。この記事では、PDF を単一ページの PDF に分割する方法と、Spire.PDF for .NET を使用して C# および VB.NET で PDF をページ範囲ごとに分割する方法を学習します。

Spire.PDF for .NET をインストールします

まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.PDF

PDF を1ページの PDF に分割

Spire.PDF は、複数ページの PDF ドキュメントを複数の単一ページファイルに分割する Split() メソッドを提供します。詳細な手順は次のとおりです。

  • PdfDcoument オブジェクトを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用して PDF ドキュメントをロードします。
  • PdfDocument.Split(string destFilePattern、int startNumber メソッドを使用して、ドキュメントを1ページの PDF に分割します。
  • C#
  • VB.NET
using System;
using Spire.Pdf;

namespace SplitPDFIntoIndividualPages
{
    class Program
    {
        static void Main(string[] args)
        {
            //入力ファイルのパスを指定する
            String inputFile = "C:\\Users\\Administrator\\Desktop\\License.pdf";

            //出力ディレクトリを指定する
            String outputDirectory = "C:\\Users\\Administrator\\Desktop\\Output\\";

            //PdfDocumentオブジェクトを作成する
            PdfDocument doc = new PdfDocument();

            //PDFファイルをロードする
            doc.LoadFromFile(inputFile);

            //PDFを1ページのPDFに分割する
            doc.Split(outputDirectory + "output-{0}.pdf", 1);
        }
    }
}
Imports System
Imports Spire.Pdf
 
Namespace SplitPDFIntoIndividualPages
    Class Program
        Shared  Sub Main(ByVal args() As String)
            '入力ファイルのパスを指定する
            Dim inputFile As String =  "C:\\Users\\Administrator\\Desktop\\License.pdf" 
 
            '出力ディレクトリを指定する
            Dim outputDirectory As String =  "C:\\Users\\Administrator\\Desktop\\Output\\" 
 
            'PdfDocumentオブジェクトを作成する
            Dim doc As PdfDocument =  New PdfDocument() 
 
            'PDFファイルをロードする
            doc.LoadFromFile(inputFile)
 
            'PDFを1ページのPDFに分割する
            doc.Split(outputDirectory + "output-{0}.pdf", 1)
        End Sub
    End Class
End Namespace

C#/VB.NET:PDF を複数の PDF ファイルに分割する方法

PDF をページ範囲で分割

PDF ドキュメントをページ範囲で分割するための簡単な方法は提供されていません。 そのために、2つ以上の新しい PDF ドキュメントを作成し、ソースドキュメントからそれらにページまたはページ範囲をインポートします。詳細な手順は次のとおりです。

  • PdfDocument オブジェクトの初期化中にソースPDFファイルをロードします。
  • 2つの追加の PdfDocument オブジェクトを作成します。
  • PdfDocument.InsertPage() メソッドを使用して、ソースファイルから最初のドキュメントに最初のページをインポートします。
  • PdfDocument.InsertPageRange() メソッドを使用して、残りのページをソースファイルから2番目のドキュメントにインポートします。
  • PdfDocument.SaveToFile() メソッドを使用して、2つのドキュメントを別々の PDF ファイルとして保存します。
  • C#
  • VB.NET
using Spire.Pdf;
using System;

namespace SplitPdfByPageRanges
{
    class Program
    {
        static void Main(string[] args)
        {
            //入力ファイルのパスを指定する
            String inputFile = "C:\\Users\\Administrator\\Desktop\\License.pdf";

            //出力ディレクトリを指定する
            String outputDirectory = "C:\\Users\\Administrator\\Desktop\\Output\\";

            //PdfDocumentオブジェクトの初期化中にソースPDFファイルをロードする
            PdfDocument sourceDoc = new PdfDocument(inputFile);

            //2つの追加のPdfDocumentオブジェクトを作成する
            PdfDocument newDoc_1 = new PdfDocument();
            PdfDocument newDoc_2 = new PdfDocument();

            //ソースファイルの最初のページを最初のドキュメントに挿入する
            newDoc_1.InsertPage(sourceDoc, 0);

            //ソースファイルの残りのページを2番目のドキュメントに挿入する
            newDoc_2.InsertPageRange(sourceDoc, 1, sourceDoc.Pages.Count - 1);

            //2つのドキュメントをPDFファイルとして保存する
            newDoc_1.SaveToFile(outputDirectory + "output-1.pdf");
            newDoc_2.SaveToFile(outputDirectory + "output-2.pdf");
        }
    }
}
Imports Spire.Pdf
Imports System
 
Namespace SplitPdfByPageRanges
    Class Program
        Shared  Sub Main(ByVal args() As String)
            '入力ファイルのパスを指定する
            Dim inputFile As String =  "C:\\Users\\Administrator\\Desktop\\License.pdf" 
 
            '出力ディレクトリを指定する
            Dim outputDirectory As String =  "C:\\Users\\Administrator\\Desktop\\Output\\" 
 
            'PdfDocumentオブジェクトの初期化中にソースPDFファイルをロードする
            Dim sourceDoc As PdfDocument =  New PdfDocument(inputFile) 
 
            '2つの追加のPdfDocumentオブジェクトを作成する
            Dim NewDoc_1 As PdfDocument =  New PdfDocument() 
            Dim NewDoc_2 As PdfDocument =  New PdfDocument() 
 
            'ソースファイルの最初のページを最初のドキュメントに挿入する
            NewDoc_1.InsertPage(sourceDoc, 0)
 
            'ソースファイルの残りのページを2番目のドキュメントに挿入する
            NewDoc_2.InsertPageRange(sourceDoc, 1, sourceDoc.Pages.Count - 1)
 
            '2つのドキュメントをPDFファイルとして保存する
            NewDoc_1.SaveToFile(outputDirectory + "output-1.pdf")
            NewDoc_2.SaveToFile(outputDirectory + "output-2.pdf")
        End Sub
    End Class
End Namespace

C#/VB.NET:PDF を複数の PDF ファイルに分割する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in 文書操作
2 / 2