在这个例子中,我们将使用RenderHtmlAsPdf将HTML字符串渲染为PDF。 对于更复杂的 HTML 文档,您可能需要了解 IronPDF 的 HTML 至 PDF 转换功能。 之后,我们将使用PdfDocument对象保存为线性化PDF,传递输出文件路径作为字符串参数。
using IronPdf;// Instantiate Renderervar renderer = new ChromePdfRenderer();// Create a PDF from an HTML string using C#var pdf = renderer.RenderHtmlAsPdf("<h1>Pdf Bytes</h1>");// Get the PDF binary datavar pdfBytes = pdf.BinaryData;// Save the PDF binary data as a linearized PDF filePdfDocument.SaveAsLinearized(pdfBytes, "linearize-from-bytes.pdf");
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");
ImportsIronPdf' Instantiate RendererDim renderer As New ChromePdfRenderer()' Create a PDF from an HTML string using VB.NETDim pdf = renderer.RenderHtmlAsPdf("<h1>Pdf Bytes</h1>")' Get the PDF binary dataDim pdfBytes = pdf.BinaryData' Save the PDF binary data as a linearized PDF filePdfDocument.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 字节保存为线性化格式?
除了直接保存PdfDocument对象外,IronPDF还允许用户将PDF字节数组转换为线性化PDF。 这种灵活性在处理数据库中存储的 PDF 或在内存密集型应用程序中处理 PDF 时特别有用。 有关在内存中处理 PDF 的更多信息,请参阅我们的从内存流中加载 PDF 指南。
using IronPdf;// Instance method: linearize the current document, get bytes backvar pdf = PdfDocument.FromFile("input.pdf");byte[] linearizedBytes = pdf.LinearizePdfToBytes();// Static method: linearize from a byte array without instantiating PdfDocumentbyte[] inputBytes = File.ReadAllBytes("input.pdf");byte[] result = PdfDocument.LinearizePdfToBytes(inputBytes);// Password-protected PDFsbyte[] 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");
ImportsIronPdf' Instance method: linearize the current document, get bytes backDim pdf = PdfDocument.FromFile("input.pdf")Dim linearizedBytes AsByte() = pdf.LinearizePdfToBytes()' Static method: linearize from a byte array without instantiating PdfDocumentDim inputBytes AsByte() = File.ReadAllBytes("input.pdf")Dim result AsByte() = PdfDocument.LinearizePdfToBytes(inputBytes)' Password-protected PDFsDim decrypted AsByte() = 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")
// Instance method: return a StreamStream linearizedStream = pdf.LinearizePdfToStream();// Static method: linearize from a streamusing 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);
ImportsSystem.IO' Instance method: return a StreamDim linearizedStream AsStream = pdf.LinearizePdfToStream()' Static method: linearize from a streamUsing inputStream AsFileStream = File.OpenRead("input.pdf") Dim resultStream AsStream = PdfDocument.LinearizePdfToStream(inputStream)EndUsing
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
控制线性化策略
所有六种方法都接受可选的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);
ImportsIronPdf' Force in-memory linearization (no disk I/O at all)Dim linearized AsByte() = pdf.LinearizePdfToBytes(LinearizationMode.InMemory)
Imports IronPdf
' Force in-memory linearization (no disk I/O at all)
Dim linearized As Byte() = pdf.LinearizePdfToBytes(LinearizationMode.InMemory)
using IronPdf;using Microsoft.AspNetCore.Mvc;public class ReportController : Controller{ public IActionResultDownloadReport() { var pdf = PdfDocument.FromFile("quarterly-report.pdf"); Stream linearized = pdf.LinearizePdfToStream(LinearizationMode.InMemory); return new FileStreamResult(linearized, "application/pdf") {FileDownloadName = "quarterly-report.pdf" }; }}
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"
};
}
}
ImportsIronPdfImportsMicrosoft.AspNetCore.MvcImportsSystem.IOPublic Class ReportControllerInheritsController Public Function DownloadReport() AsIActionResult Dim pdf = PdfDocument.FromFile("quarterly-report.pdf") Dim linearized AsStream = pdf.LinearizePdfToStream(LinearizationMode.InMemory) Return New FileStreamResult(linearized, "application/pdf") With { .FileDownloadName = "quarterly-report.pdf" } End FunctionEnd Class
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 文件,它会先显示第一页,其余内容则在加载过程中流式传输——且没有任何中间文件会触及服务器的磁盘。
我最喜欢的这种库是 IronPDF。它允许快速高效地操作 PDF 文件。它还具有许多有价值的功能,比如导出为 PDF/A 格式和数字签名 PDF 文档。
线性化 PDF 也称为 "快速网络视图 "或 "网络优化 PDF",是为网络流媒体而重新组织的结构。IronPDF 的线性化功能允许兼容的阅览器在下载其余部分时几乎立即显示第一页,极大地改善了大型文档的用户体验,尤其是在慢速网络或移动网络上。
如何用 C# 创建线性化 PDF?
using IronPDF,您可以使用 SaveAsLinearized 方法轻松创建线性化 PDF。只需加载或创建 PDF 文档,然后调用 pdf.SaveAsLinearized(pdf.BinaryData, 'output.pdf'),即可将其保存为线性化的 PDF 文件,该文件经过优化,可用于快速网络浏览。
能否将现有 PDF 转换为线性化格式?
是的,IronPDF 允许您将现有 PDF 转换为线性化格式。您可以使用 PdfDocument.FromFile('input.pdf') 加载任何 PDF,然后使用 SaveAsLinearized 方法将其保存为线性化 PDF,以提高网络性能。
如何验证 PDF 是否已经线性化?
IronPDF 提供 IsLinearized 属性,用于检查 PDF 是否线性化。只需加载 PDF 文档并检查 IsLinearized 布尔属性,即可确定文档是否已为快速网络浏览而优化。
为网络应用程序线性化 PDF 的主要好处是什么?
using IronPDF 对 PDF 进行线性化处理,可立即显示第一页,消除大型文档令人沮丧的加载时间,在专业环境中实现更快的决策,并显著改善用户体验,尤其是在关键任务或时间敏感型应用中。
How can I verify if a PDF is linearized using IronPDF?
IronPDF offers the `IsLinearized` method to programmatically check if a PDF is linearized. This can be integrated into automated testing workflows for quality assurance.
What are the benefits of using IronPDF's `LinearizationMode`?
The `LinearizationMode` in IronPDF allows you to control how linearization is performed, offering options like `Automatic`, `InMemory`, and `FileBased`. These modes provide flexibility depending on the environment and requirements.
What are best practices for using linearized PDFs?
Best practices for linearized PDFs include considering file size, using web deployment strategies that support byte-range requests, performing performance testing in target environments, and ensuring viewer compatibility.
Can IronPDF linearize a PDF directly from a stream?
Yes, IronPDF can linearize a PDF directly from a stream using the `LinearizePdfToStream` method. This is useful for cloud uploads, network sockets, or HTTP response bodies.
How does linearization impact PDF file size?
Linearization may slightly increase PDF file size due to its restructured format. To manage file size, consider using IronPDF's compression features to optimize your documents.