C# 開発者は、2 つ以上の PDF ファイルを 1 つの PDF に結合する必要がある場合があります。そんなとき、レポートや領収書などさまざまなPDFファイルを1つずつ印刷するのが面倒な場合は、1つの文書にまとめて印刷しましょう。この記事では、REST API を使用して PDF ファイルを結合する方法について説明します。

REST API を使用して複数の PDF ファイルを結合する

この記事では次のトピックについて説明します。

ファイル結合 REST API と .NET SDK

ファイルを結合するには、GroupDocs.Merger Cloud の .NET SDK API を使用します。これは、複数のドキュメントを 1 つに結合したり、1 つのドキュメントを複数のドキュメントに分割したりするために使用される、機能が豊富で高性能な Cloud SDK です。サポートされているファイル形式に対して、文書ページの並べ替えや置換、ページの向きの変更、文書パスワードの管理、その他の操作を簡単に実行する機能を提供します。現在、クラウド API の ドキュメント マージ ファミリー メンバー として Java、PHP、Ruby、Android、および Node.js SDK も提供しています。

NuGet パッケージ マネージャーから、またはパッケージ マネージャー コンソールで次のコマンドを使用して、GroupDocs.Merger-Cloud を Visual Studio プロジェクトにインストールできます。

Install-Package GroupDocs.Merger-Cloud

手順と利用可能なコード例に従う前に、ダッシュボード からクライアント ID とクライアント シークレットを取得する必要があります。以下に示すように、コードにクライアント ID とクライアント シークレットを追加します。

string MyClientId = "YOUR-CLIENT-ID";
string MyClientSecret = "YOUR-CLIENT-SECRET";
string MyStorage;

var storageConfig = new Configuration(MyClientId, MyClientSecret);
var documentApi = new DocumentApi(storageConfig);
var storageApi = new StorageApi(storageConfig);
var fileApi = new FileApi(storageConfig);

REST APIを使用してPDFファイルを結合する

以下の簡単な手順に従って、2 つ以上の PDF ファイルを結合したり、PDF の特定のページを結合したりできます。

PDF ドキュメントをアップロードする

まず、次のいずれかの方法を使用して PDF ドキュメントをクラウドにアップロードします。

public static void UploadFiles(StorageApi storageApi, FileApi fileApi)
{
	var path = @"C:\Files";

	var files = Directory.GetFiles(path, "*.pdf", SearchOption.AllDirectories);
	foreach (var file in files)
	{
		var relativeFilePath = file.Replace(path, string.Empty).Trim(Path.DirectorySeparatorChar);

		var response = storageApi.ObjectExists(new ObjectExistsRequest(relativeFilePath, MyStorage));
		if (response.Exists != null && !response.Exists.Value)
		{
			var fileStream = File.Open(file, FileMode.Open);

			fileApi.UploadFile(new UploadFileRequest(relativeFilePath, fileStream, MyStorage));
			fileStream.Close();
		}
	}

	Console.WriteLine("File Upload Process Completed.");
}

その結果、PDF ファイルがクラウド ストレージにアップロードされます。

PDF から特定のページを結合する

PDF ファイルを dashboard.groupdocs.cloud/files にアップロードしました

アップロードした PDF ファイルを結合する

この簡単なコード例は、REST API を使用して複数の PDF ファイルを 1 つの PDF に結合する方法を示しています。

public static void MergeMultipleFiles(DocumentApi documentApi, FileApi fileApi)
{
    try
    {
        var item1 = new JoinItem
        {
            FileInfo = new GroupDocs.Merger.Cloud.Sdk.Model.FileInfo
            {
                FilePath = "one-page.pdf"
            }
        };

        var item2 = new JoinItem
        {
            FileInfo = new GroupDocs.Merger.Cloud.Sdk.Model.FileInfo
            {
                FilePath = "second-page.pdf"
            }
        };

        var options = new JoinOptions
        {
            JoinItems = new List<JoinItem> { item1, item2 },
            OutputPath = "merged-files.pdf"
        };

        var request = new JoinRequest(options);
        var response = documentApi.Join(request);

        Console.WriteLine("Output file path: " + response.Path);

        // 結合されたファイルをダウンロードする
        DownloadFiles(fileApi, "merged-files.pdf");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

PDF ファイルの特定のページを別のファイルと結合する

PDF ファイルの特定のページを別のファイルと結合できます。この目的のために、以下のコード例に示されているように、一連のページを提供する必要があります。

public static void MergeSpecificPagesOfFiles(DocumentApi documentApi, FileApi fileApi)
{
    try
    {
        var item1 = new JoinItem
        {
            FileInfo = new GroupDocs.Merger.Cloud.Sdk.Model.FileInfo
            {
                FilePath = "sample-10-pages.pdf"
            },
        };

        var item2 = new JoinItem
        {
            FileInfo = new GroupDocs.Merger.Cloud.Sdk.Model.FileInfo
            {
                FilePath = "four-pages.pdf"
            },
            StartPageNumber = 1,
            EndPageNumber = 3,
            RangeMode = JoinItem.RangeModeEnum.OddPages
        };

        var options = new JoinOptions
        {
            JoinItems = new List<JoinItem> { item1, item2 },
            OutputPath = "merged-pages.pdf"
        };

        var request = new JoinRequest(options);
        var response = documentApi.Join(request);

        Console.WriteLine("Output file path: " + response.Path);

        // 結合されたファイルをダウンロードする
        DownloadFiles(fileApi, "merged-pages.pdf");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

結合されたファイルをダウンロードする

上記のコードサンプルは、結合された PDF ファイルをクラウド上に保存します。次のコードサンプルを使用してダウンロードできます。

public static void DownloadFiles(FileApi fileApi, string file)
{
    try
    {
        var downloadRequest = new DownloadFileRequest(file, MyStorage);

        Stream downloadResponse = fileApi.DownloadFile(downloadRequest);
        using (var fileStream = File.Create("C:\\Files\\" + file))
        {
            downloadResponse.Seek(0, SeekOrigin.Begin);
            downloadResponse.CopyTo(fileStream);
        }
        Console.WriteLine("File downloaded successfully");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

結論

この記事では、C# を使用して .NET Merger REST API を使用して、クラウド上の 2 つ以上の PDF ファイルまたは PDF ファイルの特定のページを結合する方法を学習しました。また、プログラムによってファイルをクラウドにアップロードし、クラウドからダウンロードする方法も学習しました。 GroupDocs.Merger Cloud API の詳細については、ドキュメント を参照してください。不明な点がある場合は、サポート までお気軽にお問い合わせください。