C#とIronPDFを使用してPDFを線形化する方法
リニアライズされたPDFは、ダウンロード中に最初のページを即座に表示できるため、大容量のドキュメントにおけるユーザーエクスペリエンスを劇的に向上させます。 IronPDFは、C#でこれらを作成・検証するためのシンプルなメソッドを提供し、Web上での高速表示に最適化されたドキュメントを作成します。
"Fast Web View"または"Web最適化PDF"とも呼ばれるリニアライズドPDFは、インターネットストリーミング用に構造が再編成されています。 これにより、対応するビューアでは、ファイル全体のダウンロードが完了するずっと前に、ドキュメントの最初のページをほぼ瞬時に表示できるようになります。
ミッションクリティカルなアプリケーションや時間的制約のあるアプリケーションにおいて、この機能は特に有用です。 これにより、特に低速なネットワークやモバイルネットワーク上で発生する、大容量ドキュメントの読み込み待ちによるストレスが解消され、ユーザーはコンテンツに即座にアクセスできるようになります。 これにより、Professionalな環境において意思決定が迅速化され、生産性が向上します。 IronPDFのパフォーマンス最適化機能と組み合わせることで、卓越した閲覧体験を提供します。
このハウツー記事では、IronPDFが開発者に提供する、ドキュメントをリニアライズされたPDFとしてエクスポートするためのオプションについて解説します。
クイックスタート:PDFを線形化してWebでの表示を高速化
IronPDF を使って、PDF を簡単にテキスト化しましょう。 この簡単なコード例は、IronPDFのLinearizePdfメソッドを使用して、Webブラウザでの読み込みを高速化するためにPDFを最適化する方法を示しています。 ドキュメント全体のダウンロードを待つのではなく、読み込み中にページを表示できるようにすることで、ユーザーエクスペリエンスを向上させます。 以下の手順に従って、PDFを最適化し、オンラインでの共有をより効率的に行えるようにしてください。
最小限のワークフロー(5ステップ)
- NuGetからIronPDF C#ライブラリをダウンロード
- PDFレンダラーをインスタンス化し、HTML文字列を渡します
- HTML文字列を以下のようにレンダリングしてください
PdfDocument - PDFをリニアライズされたPDFとして保存するには
RenderHtmlAsPdf - PDFがリニアライズされているかどうかを確認してください
SaveAsLinearized
PDFをリニアライズ形式で保存するにはどうすればよいですか?
IronPDF を使用してドキュメントをリニアライズされた PDF として保存するのは、迅速かつ簡単なプロセスです。 作業を開始する前に、NuGet またはその他の利用可能なインストール方法のいずれかを使用して、IronPDF がインストールされていることを確認してください。
この例では、RenderHtmlAsPdf を使用して HTML 文字列を PDF に変換します。 より複雑なHTMLドキュメントについては、IronPDFのHTMLからPDFへの変換機能をご検討ください。 その後、SaveAsLinearizedオブジェクトをリニアライズされたPDFとして保存します。
:path=/static-assets/pdf/content-code-examples/how-to/linearize-pdf.cs
using IronPdf;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Pdf Bytes</h1>");
// Get the PDF binary data
var pdfBytes = pdf.BinaryData;
// Save the PDF binary data as a linearized PDF file
PdfDocument.SaveAsLinearized(pdfBytes, "linearize-from-bytes.pdf");
Imports IronPdf
' Instantiate Renderer
Dim renderer As New ChromePdfRenderer()
' Create a PDF from an HTML string using VB.NET
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Pdf Bytes</h1>")
' Get the PDF binary data
Dim pdfBytes = pdf.BinaryData
' Save the PDF binary data as a linearized PDF file
PdfDocument.SaveAsLinearized(pdfBytes, "linearize-from-bytes.pdf")
このプロセスにより、PDFの内部形式が再構成され、重要な情報がファイルの先頭に配置されるため、プログレッシブダウンロードとレンダリングが可能になります。 Webアプリケーションを通じてPDFを提供する際に特に有用です。
翻訳後の出力はどのようなものになりますか?
PDF BytesをLinearized形式で保存するにはどうすればよいですか?
PdfDocument オブジェクトを直接保存できることに加え、IronPDF では PDF バイト配列をリニアライズされた PDF に変換することも可能です。 この柔軟性は、データベースに保存されたPDFを扱う場合や、メモリを大量に消費するアプリケーションでPDFを処理する場合に特に役立ちます。 メモリ内でのPDFの取り扱いに関する詳細については、メモリストリームからのPDF読み込みに関するガイドをご覧ください。
この例では、HTML文字列をbyte[]入力、出力パス、およびオプションのパスワードを受け取り、そのデータを線形化されたPDFとして保存する方法を示します。
翻訳後の出力はどのようなものになりますか?
以下は、コードによって生成されたファイルです:
MemoryStream を Linearized 形式で保存するにはどうすればよいですか?
SaveAsLinearized 入力を受け取る Stream オーバーロードは、依然として線形化された出力を指定された出力パスにあるファイルに書き込みます。 これは、ソースPDFがすでにストリーム(データベース、ネットワーク、またはメモリ内バッファからのもの)として存在し、その線形化された結果をディスクに永続化したい場合に役立ちます。
この例では、MemoryStreamに書き出し、そのストリームをリニアライズされたPDFファイルとして保存することで、この機能を実演します。
ディスクへの書き込みを完全に回避する必要がある場合(HIPAA、PCI-DSS、サンドボックス化されたアプリ、または読み取り専用ファイルシステムを持つクラウド関数など)、次のセクションのインメモリ方式を参照してください。
以下は、コードによって生成されたファイルです:
メモリ内での完全な線形化を行うにはどうすればよいですか?
サンドボックス環境、クラウド関数、またはコンプライアンスに配慮が必要なワークフロー(HIPAA、PCI-DSS)など、ディスクへの書き込みが制限されている、あるいは望ましくない場合、IronPDFはLinearizePdfToStreamメソッドを提供します。これらのメソッドは、一時ファイルやディスクI/Oを使用することなく、リニアライズされたPDFを直接返します。
これらのメソッドは、PdfDocument に対するインスタンスメソッドとして、また byte[] または Stream を受け取る静的メソッドとして利用可能です。
バイナリ形式の出力を取得
HTTPレスポンス、データベースのLinearizePdfToBytesを使用してください。
using IronPdf;
// Instance method: linearize the current document, get bytes back
var pdf = PdfDocument.FromFile("input.pdf");
byte[] linearizedBytes = pdf.LinearizePdfToBytes();
// Static method: linearize from a byte array without instantiating PdfDocument
byte[] inputBytes = File.ReadAllBytes("input.pdf");
byte[] result = PdfDocument.LinearizePdfToBytes(inputBytes);
// Password-protected PDFs
byte[] decrypted = PdfDocument.LinearizePdfToBytes(encryptedBytes, password: "secret");
using IronPdf;
// Instance method: linearize the current document, get bytes back
var pdf = PdfDocument.FromFile("input.pdf");
byte[] linearizedBytes = pdf.LinearizePdfToBytes();
// Static method: linearize from a byte array without instantiating PdfDocument
byte[] inputBytes = File.ReadAllBytes("input.pdf");
byte[] result = PdfDocument.LinearizePdfToBytes(inputBytes);
// Password-protected PDFs
byte[] decrypted = PdfDocument.LinearizePdfToBytes(encryptedBytes, password: "secret");
Imports IronPdf
' Instance method: linearize the current document, get bytes back
Dim pdf = PdfDocument.FromFile("input.pdf")
Dim linearizedBytes As Byte() = pdf.LinearizePdfToBytes()
' Static method: linearize from a byte array without instantiating PdfDocument
Dim inputBytes As Byte() = File.ReadAllBytes("input.pdf")
Dim result As Byte() = PdfDocument.LinearizePdfToBytes(inputBytes)
' Password-protected PDFs
Dim decrypted As Byte() = PdfDocument.LinearizePdfToBytes(encryptedBytes, password:="secret")
線形化された出力をストリームとして取得する
ファイル全体をメモリにバッファリングせずに、別のストリーム(クラウド Blob へのアップロード、HTTP レスポンス本文、ネットワークソケットなど)に出力をパイプする場合、LinearizePdfToStream を使用してください。
// Instance method: return a Stream
Stream linearizedStream = pdf.LinearizePdfToStream();
// Static method: linearize from a stream
using var inputStream = File.OpenRead("input.pdf");
Stream resultStream = PdfDocument.LinearizePdfToStream(inputStream);
// Instance method: return a Stream
Stream linearizedStream = pdf.LinearizePdfToStream();
// Static method: linearize from a stream
using var inputStream = File.OpenRead("input.pdf");
Stream resultStream = PdfDocument.LinearizePdfToStream(inputStream);
Imports System.IO
' Instance method: return a Stream
Dim linearizedStream As Stream = pdf.LinearizePdfToStream()
' Static method: linearize from a stream
Using inputStream As FileStream = File.OpenRead("input.pdf")
Dim resultStream As Stream = PdfDocument.LinearizePdfToStream(inputStream)
End Using
線形化戦略の制御
これら6つのメソッドはすべて、オプションの LinearizationMode パラメータを受け付けます:
| モード | 動作 | 使用場面 |
|---|---|---|
Automatic (デフォルト) |
まずファイルベースの方法を試行し、ディスクアクセスが制限されている場合はメモリ内処理に切り替えます | 推奨されるデフォルト設定; ほとんどの環境で動作します |
InMemory |
メモリ内でのみ線形化を実行し、ディスクI/Oをゼロにします | HIPAA / PCI-DSS ワークフロー、サンドボックス化されたアプリ、読み取り専用ファイルシステム、クラウドファンクション |
FileBased |
システムの一時ディレクトリにある一時ファイルを使用します | 一時ファイルの動作を明示的に希望し、書き込み権限がある場合 |
using IronPdf;
// Force in-memory linearization (no disk I/O at all)
byte[] linearized = pdf.LinearizePdfToBytes(LinearizationMode.InMemory);
using IronPdf;
// Force in-memory linearization (no disk I/O at all)
byte[] linearized = pdf.LinearizePdfToBytes(LinearizationMode.InMemory);
Imports IronPdf
' Force in-memory linearization (no disk I/O at all)
Dim linearized As Byte() = pdf.LinearizePdfToBytes(LinearizationMode.InMemory)
ArgumentException は、入力バイトが null または空の場合、あるいは入力ストリームが読み取り不可能な場合にスローされます。 ArgumentNullException は、入力ストリームが null の場合にスローされます。)}]
リニアライズされたPDFをHTTPレスポンスとしてストリーミングするにはどうすればよいですか?
LinearizePdfToStream を ASP.NET の FileStreamResult と組み合わせることで、一時ファイルを作成することなく、Web 向けに最適化された PDF/A をブラウザに直接配信できます:
:path=/static-assets/pdf/content-code-examples/how-to/linearize-pdf-http-response.cs
using IronPdf;
using Microsoft.AspNetCore.Mvc;
public class ReportController : Controller
{
public IActionResult DownloadReport()
{
var pdf = PdfDocument.FromFile("quarterly-report.pdf");
Stream linearized = pdf.LinearizePdfToStream(LinearizationMode.InMemory);
return new FileStreamResult(linearized, "application/pdf")
{
FileDownloadName = "quarterly-report.pdf"
};
}
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Imports System.IO
Public Class ReportController
Inherits Controller
Public Function DownloadReport() As IActionResult
Dim pdf = PdfDocument.FromFile("quarterly-report.pdf")
Dim linearized As Stream = pdf.LinearizePdfToStream(LinearizationMode.InMemory)
Return New FileStreamResult(linearized, "application/pdf") With {
.FileDownloadName = "quarterly-report.pdf"
}
End Function
End Class
ブラウザは線形化されたPDFを受信し、最初のページを表示し始めると同時に残りのページがストリーミングで配信されます。この際、中間ファイルがサーバーのディスクに保存されることは一切ありません。
PDFがリニアライズされているかどうかを確認するにはどうすればよいですか?
Adobe Acrobat などの PDF ビューアでドキュメントのプロパティを確認して PDF がリニア化されているかを確認するだけでなく、IronPDF では IsLinearized メソッドを使用して、これをプログラムでチェックする方法も提供しています。 ファイルパスを指定する文字列パラメータを受け取り、PDFが暗号化されている場合は、パスワードを指定するオプションの2番目の文字列パラメータを受け取ります。 この検証機能は品質保証に不可欠であり、自動テストワークフローに組み込むことができます。
この例では、上記の3つの例から得られた出力ファイルを使用して、それらがリニアライズされているかどうかをテストし、さらに4つ目のリニアライズされていないPDFを含めて、この手法の挙動を実証します。 より高度なPDF操作および検証技術については、IronPDFの包括的な機能セットをご覧ください。
翻訳結果はどうなりましたか?
ご覧の通り、最初の3つの例は MemoryStream を返しますが、リニアライズされていない最後のPDFは IsLinearized を返します。
IsLinearized を通じて保存されたファイルに対して行われます。 ディスクに書き込まずに、バイトまたはストリームとしてリニアライズされた出力を生成するには、前述の LinearizePdfToBytes および LinearizePdfToStream メソッドを使用してください。)}]
線形化PDFのベストプラクティス
線形化されたPDFを扱う際は、以下のベストプラクティスを考慮してください:
-
ファイルサイズの考慮事項: 形式の再構成により、リニアライゼーション処理を行うとファイルサイズがわずかに増加する可能性があります。 必要に応じて、IronPDFの圧縮機能を使用してファイルサイズを最適化してください。
-
Web 展開: 線形化された PDF は、Web アプリケーションに最適です。 リニアライゼーションの効果を最大限に引き出すために、Webサーバーを設定してバイト範囲リクエストをサポートするようにしてください。
-
パフォーマンステスト:リニアライズされたPDFは、必ずターゲット環境でテストしてください。 パフォーマンスの向上は、低速な接続環境下での大容量ファイルの処理において最も顕著です。
- 互換性: 最近のPDFビューアの大半はリニアライズされたPDFに対応していますが、ユーザーが好んで使用するビューアとの互換性を確保してください。
その他の最適化戦略や高度なPDF処理技術については、IronPDFのレンダリングオプションに関するドキュメントを参照してください。
よくある質問
リニアライズPDFとは何ですか?
リニアライズされたPDFは'Fast Web View'または'Web-optimized PDF'とも呼ばれ、インターネットストリーミングのために構造的に再編成されます。IronPDFのリニアライズ機能により、互換性のあるビューアーは最初のページをほぼ即座に表示し、残りのページをダウンロードすることができ、特に低速またはモバイルネットワーク上で、大きなドキュメントのユーザーエクスペリエンスを劇的に改善します。
C# で線形化 PDF を作成す る 方法は?
IronPDFを使えば、SaveAsLinearizedメソッドを使って簡単にリニアライズされたPDFを作成することができます。PDFドキュメントをロードまたは作成し、pdf.SaveAsLinearized(pdf.BinaryData, 'output.pdf')を呼び出すだけで、高速なWeb表示用に最適化された線形化PDFとして保存できます。
既存のPDFをリニアライズ形式に変換できますか?
はい、IronPDFは既存のPDFをリニアライズされたフォーマットに変換することができます。PdfDocument.FromFile('input.pdf')を使ってPDFを読み込み、SaveAsLinearizedメソッドを使ってリニアライズされたPDFとして保存することで、ウェブパフォーマンスを向上させることができます。
PDFがすでにリニアライズされているかどうかは、どのように確認できますか?
IronPDFはPDFがリニアライズされているかどうかをチェックするIsLinearizedプロパティを提供します。PDFドキュメントを読み込み、IsLinearizedブール型プロパティをチェックするだけで、ドキュメントがすでに高速なウェブ表示用に最適化されているかどうかを判断できます。
WebアプリケーションのためにPDFをリニアライズする主な利点は何ですか?
IronPDFでPDFをリニアライズすることで、最初のページが即座に表示され、大きなドキュメントの読み込みにかかるイライラが解消され、プロフェッショナルな環境での迅速な意思決定が可能になり、特にミッションクリティカルなアプリケーションや時間に制約のあるアプリケーションでのユーザーエクスペリエンスが大幅に向上します。

