.NET ドキュメント処理ワークフローにおいて、C# で TIFF を PDF に変換することは一般的な要件です。開発者は、スキャン文書や複数ページの TIFF ファイルを PDF 形式に変換して、互換性の向上、配布プロセスの簡素化、標準化されたドキュメント管理を実現する必要があります。 TIFF ファイルはスキャンおよびアーカイブシステムで広く使用されており、特に単一ファイルに複数のページを保存する場合に適しています。ただし、この形式は共有やクロスプラットフォームでの閲覧時に必ずしも理想的ではなく、PDF はより普遍的で一貫性のあるフォーマットを提供します。 Spire.PDF for .NET を使用すると、簡潔で信頼性の高い C# コードを使用して TIFF 画像を効率的に PDF に変換できます。本記事では、.NET で TIFF から PDF への変換を実行する方法を示し、複数ページの TIFF 画像の処理、ページレイアウトの調整、実際のシナリオにおけるベストプラクティスの適用について説明します。 目次 背景の理解 Spire.PDF を使用して TIFF を PDF に変換する 高度な TIFF から PDF への変換シナリオ よくある問題と解決策 まとめ よくある質問 1. 背景の理解 TIFF(タグ付き画像ファイル形式)は、単一ファイルに複数のページを含めることができる柔軟な画像形式です。この特性により、以下のシナリオで広く利用されています。 スキャン文書: 複数ページの契約書、請求書、フォーム ドキュメントアーカイブ: 単一ファイルで完全な文書履歴を保存 医療画像: 複数のビューを含む診断画像の保存 ファックス送信: 従来のファックスシステムでは通常 TIFF 形式が採用される TIFF を PDF に変換することには、次のような利点があります。 汎用性の高い互換性: すべての主要プラットフォームで PDF ビューアーが提供される ファイルサイズの縮小: PDF 圧縮技術によりストレージ要件を効果的に削減できる 配布の容易さ: PDF はドキュメント配布の標準形式となっている 強化されたセキュリティ: PDF は暗号化とアクセス制御機能をサポートする 2. Spire.PDF を使用して TIFF を PDF に変換する このセクションでは、Spire.PDF を使用して C# で TIFF 画像を PDF に変換する手順の例を提供します。 Spire.PDF for .NET のインストール まず、NuGet パッケージマネージャーを使用してライブラリをインストールします。 Install-Package FreeSpire.PDF または、.NET CLI を使用します。 dotnet add package FreeSpire.PDF Spire.PDF for .NET パッケージをダウンロードして、プロジェクトに手動で追加することも可能です。 単一ページの TIFF を PDF に変換する 単一ページの TIFF ファイルの場合、最も簡単な方法は元の画像サイズに一致する PDF ページを作成し、画像を直接ページに描画することです。これにより、TIFF コンテンツが PDF ページ全体に完全に填充され、不要な余白やスケーリングの問題を回避できます。 using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; // TIFF 画像を読み込む PdfImage tiffImage = PdfImage.FromFile("Sample_Page.tiff"); // 新しい PDF ドキュメントを作成する PdfDocument pdf = new PdfDocument(); // デフォルトのページ余白を削除する pdf.PageSettings.Margins.All = 0; // 画像サイズを取得する float width = tiffImage.PhysicalDimension.Width; float height = tiffImage.PhysicalDimension.Height; // TIFF 画像と同じサイズの PDF ページを追加する PdfPageBase page = pdf.Pages.Add(new SizeF(width, height)); // 画像を描画してページを完全に埋める page.Canvas.DrawImage(tiffImage, 0, 0, width, height); // PDF ドキュメントを保存する pdf.SaveToFile("Sample_Page.pdf"); pdf.Close(); 以下は変換結果のプレビューです。 主要な API の説明: PdfImage.FromFile: TIFF 画像を PDF 互換オブジェクトとして読み込む PageSettings.Margins.All: デフォルトの余白を削除して全ページレンダリングを実現 Pages.Add(SizeF): TIFF サイズに正確に一致する PDF ページを作成 Canvas.DrawImage: TIFF 画像を描画してページを完全に埋める SaveToFile: 変換後の PDF ファイルを保存 この方法では元の TIFF サイズが保持され、出力された PDF で画像コンテンツがページ全体に鮮明に表示されることが保証されます。 画像から PDF への変換に関するその他のシナリオについては、C# で画像を PDF に変換する方法 を参照してください。 複数ページの TIFF を PDF に変換する 複数ページの TIFF ファイルには複数のフレームが含まれており、各フレームは独立したページを表します。変換プロセスでは、各フレームを反復処理し、現在の TIFF フレームにサイズが一致する PDF ページを作成して、元のレイアウトを保持する必要があります。 using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; using System.Drawing.Imaging; // 複数ページの TIFF ファイルを読み込む Image tiffImage = Image.FromFile("Sample.tiff"); // フレーム情報を取得する FrameDimension dimension = new FrameDimension(tiffImage.FrameDimensionsList[0]); int frameCount = tiffImage.GetFrameCount(dimension); // 新しい PDF ドキュメントを作成する PdfDocument pdf = new PdfDocument(); // デフォルトの余白を削除する pdf.PageSettings.Margins.All = 0; // 各 TIFF フレームを処理する for (int i = 0; i < frameCount; i++) { // 現在のフレームを選択する tiffImage.SelectActiveFrame(dimension, i); // 現在のフレームを PdfImage に変換する PdfImage pdfImage = PdfImage.FromImage(tiffImage); // 現在のフレームサイズを取得する float width = pdfImage.PhysicalDimension.Width; float height = pdfImage.PhysicalDimension.Height; // フレームサイズに一致する PDF ページを作成する PdfPageBase page = pdf.Pages.Add(new SizeF(width, height)); // フレームを描画してページを埋める page.Canvas.DrawImage(pdfImage, 0, 0, width, height); } // PDF ドキュメントを保存する pdf.SaveToFile("Sample.pdf"); pdf.Close(); // リソースを解放する tiffImage.Dispose(); 以下は変換結果のプレビューです。 核心概念の解説: FrameDimension: 複数ページの TIFF ファイル内のフレームコレクションを識別 GetFrameCount: TIFF ファイルの総ページ数を取得 SelectActiveFrame: 指定された TIFF フレームに切り替えて処理 Pages.Add(SizeF): 各 TIFF ページにサイズが一致する PDF ページを作成 Canvas.DrawImage: 各 TIFF フレームを対応する PDF ページにレンダリング この方法では、元の TIFF ファイル内のすべてのページが完全に保持され、各ページが PDF キャンバスを完全に占有することが保証され、追加の余白やスケーリングによる歪みが発生しません。 TIFF 画像を標準的な PDF ページに適合させる 一部のワークフローでは、出力される PDF が印刷、ドキュメント共有、またはアーカイブのために標準的なページサイズ(A4 や Letter など)に従う必要があります。この場合、元の TIFF サイズに基づいて PDF ページを作成するのではなく、画像を比例スケーリングして固定ページサイズに適合させ、水平方向に中央揃えにすることができます。 using Spire.Pdf; using Spire.Pdf.Graphics; PdfDocument pdf = new PdfDocument(); PdfImage image = PdfImage.FromFile("Sample_Page.tiff"); // 余白付きの A4 ページを作成する PdfPageBase page = pdf.Pages.Add(PdfPageSize.A4, new PdfMargins(20)); // 比例スケーリングを計算する float scale = Math.Min( page.Canvas.ClientSize.Width / image.PhysicalDimension.Width, page.Canvas.ClientSize.Height / image.PhysicalDimension.Height ); // 最終的な画像サイズを計算する float width = image.PhysicalDimension.Width * scale; float height = image.PhysicalDimension.Height * scale; // 水平方向に中央揃えし、上部に配置 float x = (page.Canvas.ClientSize.Width - width) / 2; // 画像を PDF ページに描画する page.Canvas.DrawImage(image, x, 0, width, height); // PDF ファイルを保存する pdf.SaveToFile("Sample_Page1.pdf"); pdf.Close(); 生成された PDF は標準的なページサイズに適合し、同時に元の画像のアスペクト比を保持します。 この方法を採用する利点: 標準化された出力: すべての変換後の PDF が一貫したページサイズ(A4 や Letter など)を使用することを保証 印刷に適している: 大きな TIFF サイズによる異常なサイズの PDF ページを回避 アスペクト比の保持: 歪みを生じさせずに画像を比例スケーリング 明確なドキュメント形式: コンテンツを適切に配置し、ビジネスおよびアーカイブワークフローに適応 TIFF ファイルを元のサイズを保持するのではなく、標準化された PDF レイアウトに適合させる必要がある場合、この方法が特に効果的です。 さらに多くの C# を使用した PDF レイアウトとページ設定のチュートリアル を探索することも可能です。 3. 高度な TIFF から PDF への変換シナリオ 本番環境では、通常、変換プロセスに対してよりきめ細かい制御が必要です。 複数の TIFF ファイルをバッチ変換する ドキュメント管理システム、スキャンアーカイブ、または自動化ワークフローでは、一度に複数の TIFF ファイルを PDF 形式に変換する必要がある場合があります。次の例では、フォルダー内のすべての TIFF ファイルを処理し、各ファイルを個別の PDF に変換しながら、元の画像サイズを保持します。 using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; using System.IO; string inputFolder = @"C:DocumentsTIFF"; string outputFolder = @"C:DocumentsPDF"; // 出力フォルダーが存在しない場合は作成する Directory.CreateDirectory(outputFolder); // フォルダー内のすべての TIFF ファイルを処理する foreach (string tiffFile in Directory.GetFiles(inputFolder, "*.tiff")) { PdfImage image = PdfImage.FromFile(tiffFile); using (PdfDocument pdf = new PdfDocument()) { // TIFF サイズに一致する PDF ページを作成する PdfPageBase page = pdf.Pages.Add( new SizeF( image.PhysicalDimension.Width, image.PhysicalDimension.Height ) ); // TIFF 画像をページに描画する page.Canvas.DrawImage( image, 0, 0, image.PhysicalDimension.Width, image.PhysicalDimension.Height ); // 出力ファイルパスを生成する string outputFile = Path.Combine( outputFolder, Path.GetFileNameWithoutExtension(tiffFile) + ".pdf" ); // PDF を保存する pdf.SaveToFile(outputFile); } } バッチ変換の利点: 大量の TIFF ファイルを自動的に処理 手動変換の作業量を削減 各ファイルの元の画像サイズを保持 アーカイブ移行およびドキュメント自動化ワークフローに適している この方法は、大量の単一ページ TIFF ファイルを変換するのに最適です。フォルダーに複数ページの TIFF ドキュメントが含まれている場合は、この方法を前述の複数ページ変換ロジックと組み合わせることができます。 複数の TIFF ファイルを単一の PDF に統合する 複数の TIFF 画像を単一の PDF ドキュメントに統合する必要がある場合、各 TIFF ファイルを個別の PDF ページとして追加できます。これは、スキャン文書、請求書、または画像ベースのレポートを統合する際に役立ちます。 using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; string[] tiffFiles = { "Page1.tiff", "Page2.tiff", "Page3.tiff" }; PdfDocument pdf = new PdfDocument(); foreach (string file in tiffFiles) { PdfImage image = PdfImage.FromFile(file); float width = image.PhysicalDimension.Width; float height = image.PhysicalDimension.Height; // TIFF サイズに一致するページを作成する PdfPageBase page = pdf.Pages.Add(new SizeF(width, height)); // TIFF 画像を描画する page.Canvas.DrawImage(image, 0, 0, width, height); } // 統合された PDF を保存する pdf.SaveToFile("CombinedDocument.pdf"); pdf.Close(); TIFF ファイルを統合する利点: 複数のスキャンページを単一の PDF に統合 ドキュメント共有プロセスを簡素化 元の画像品質を保持 契約書、請求書、アーカイブ記録の管理に適している 各 TIFF ファイルが単一の PDF ドキュメント内の個別のページとして表示される必要がある場合、この方法が最適です。 大型の TIFF ファイルを効率的に処理する 大型の複数ページ TIFF ファイルは、変換プロセス中に大量のメモリを消費します。パフォーマンスを向上させるために、各フレームを順次処理し、使用直後にリソースを解放することをお勧めします。 using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; using System.Drawing.Imaging; // 大型の TIFF ファイルを効率的に処理する using (Image tiffImage = Image.FromFile("LargeDocument.tiff")) using (PdfDocument pdf = new PdfDocument()) { FrameDimension dimension = new FrameDimension(tiffImage.FrameDimensionsList[0]); int frameCount = tiffImage.GetFrameCount(dimension); for (int i = 0; i < frameCount; i++) { // 現在のフレームをアクティブにする tiffImage.SelectActiveFrame(dimension, i); using (PdfImage image = PdfImage.FromImage(tiffImage)) { float width = image.PhysicalDimension.Width; float height = image.PhysicalDimension.Height; // フレームサイズに一致するページを作成する PdfPageBase page = pdf.Pages.Add( new SizeF(width, height) ); // 現在のフレームを描画する page.Canvas.DrawImage( image, 0, 0, width, height ); } } pdf.SaveToFile("LargeDocument.pdf"); } メモリ最適化のテクニック: using ステートメントを使用してリソースを自動的に解放 一度に 1 つの TIFF フレームのみを処理 複数の大型画像を同時に読み込まない 高解像度スキャン文書を変換する際のパフォーマンスを大幅に向上 この方法は、大型のアーカイブ TIFF ファイル、医療スキャン、企業ドキュメント移行タスクに特に有用です。 4. よくある問題と解決策 TIFF を PDF に変換する際、開発者は以下のような一般的な問題に遭遇する可能性があります。 複数ページの TIFF が完全に変換されない 問題: PDF 出力に最初のページのみが表示される。 原因: TIFF ファイル内のすべてのフレームが正しく反復処理されていない。 解決策: GetFrameCount と SelectActiveFrame を使用して各フレームを処理する。 int frameCount = tiffImage.GetFrameCount(dimension); for (int i = 0; i < frameCount; i++) { tiffImage.SelectActiveFrame(dimension, i); // 各フレームを処理する } 画像の歪みやレイアウトの問題 問題: 画像が引き伸ばされたり、PDF ページに正しく適合しない。 原因: TIFF を固定サイズページ(A4 など)に適合させる際に、スケーリング計算が正しくない。 解決策: アスペクト比を保持する比例スケーリングアルゴリズムを使用する。 float scale = Math.Min( page.Canvas.ClientSize.Width / image.PhysicalDimension.Width, page.Canvas.ClientSize.Height / image.PhysicalDimension.Height ); float width = image.PhysicalDimension.Width * scale; float height = image.PhysicalDimension.Height * scale; 大型ファイルによる高いメモリ使用量 問題: 大型の TIFF ファイルを処理する際にパフォーマンスが遅くなったり、メモリ不足エラーが発生する。 原因: 複数ページの TIFF がメモリに読み込まれ、リソースが適時に解放されていない。 解決策: フレームを順次処理し、適時にリソースを解放する。 using (Image tiffImage = Image.FromFile("Large.tiff")) using (PdfDocument pdf = new PdfDocument()) { // フレームを逐个処理する } サポートされていない TIFF 形式 問題: 一部の TIFF ファイルを読み込む際にエラーが発生する。 原因: TIFF ファイルが非標準の圧縮またはカラー形式を使用している。 解決策: TIFF ファイルがライブラリでサポートされている標準形式を使用していることを確認する。 まとめ Spire.PDF for .NET を使用して C# で TIFF を PDF に変換することは、簡潔で効率的なプロセスです。このライブラリは、単一ページおよび複数ページの TIFF ファイルを処理するための包括的なメソッドを提供し、同時に画像品質とレイアウトの正確性を保持します。 本記事で示された例とベストプラクティスに従うことで、開発者はドキュメントアーカイブ、バッチ処理、企業ドキュメント管理システムなど、さまざまなシナリオに対応する信頼性の高い TIFF から PDF への変換を実装できます。 Spire.PDF for .NET の機能を評価したい場合は、無料トライアルライセンスを申請 できます。 よくある質問 C# で複数ページの TIFF を PDF に変換するにはどうすればよいですか? FrameDimension を使用して TIFF ファイル内の各フレームにアクセスし、各フレームに対して個別の PDF ページを作成します。GetFrameCount メソッドはフレームの総数を返し、SelectActiveFrame を使用して各フレームを逐次処理できます。 .NET で TIFF を PDF に変換する最良の方法は何ですか? 専用ライブラリ(Spire.PDF for .NET など)を使用することが、最も信頼性が高く効率的なソリューションを提供します。最小限のコードで画像の読み込みと PDF の生成を処理し、複数ページの TIFF ファイルを全面的にサポートします。 TIFF を PDF に変換するとファイルサイズは縮小されますか? 未圧縮の TIFF ファイルと比較して、PDF 圧縮は通常ファイルサイズを縮小できます。ただし、実際のサイズ縮小幅は、元の TIFF 圧縮方式、画像コンテンツ、PDF 設定によって異なります。高解像度画像は依然として较大的な PDF ファイルになる可能性があります。 Microsoft Office や他のソフトウェアをインストールせずに TIFF を PDF に変換できますか? はい。Spire.PDF for .NET は独立して動作し、Microsoft Office、Adobe Acrobat、または他の外部ソフトウェアを必要としません。独自のレンダリングエンジンを使用してすべての変換操作を実行します。 TIFF を PDF に変換する際に画像品質を保持するにはどうすればよいですか? 画像品質を保持するには、不要なスケーリングを回避し、PDF ページサイズを TIFF 画像サイズに正確に一致させて最適な効果を得ることが推奨されます。