Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
本文解释了如何使用 C# 将 HTML 转换为 PDF。它涵盖以下主题。
以下代码片段也适用于 Aspose.PDF.Drawing 库。
格式: HTML
格式: MHTML
格式: 网页
Aspose.PDF for .NET 是一个 PDF 操作 API,允许您无缝地将任何现有的 HTML 文档转换为 PDF。将 HTML 转换为 PDF 的过程可以灵活自定义。
以下 C# 代码示例演示了如何将 HTML 文档转换为 PDF。
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Load the HTML file into a document using HtmlLoadOptions
var options = new Aspose.Pdf.HtmlLoadOptions();
// Open HTML document
using (var document = new Aspose.Pdf.Document(dataDir + "test.html", options))
{
// Save PDF document
document.Save(dataDir + "ConvertHTMLtoPDF_out.pdf");
}
}
HTML 转换引擎有几个选项,允许我们控制转换过程。
媒体查询是一种流行的技术,用于向不同设备提供定制的样式表。我们可以使用 HtmlMediaType
属性设置设备类型。
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFAdvancedMediaType()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Load the HTML file into a document using HtmlLoadOptions with Print media type
var options = new HtmlLoadOptions
{
// Set Print or Screen mode
HtmlMediaType = Aspose.Pdf.HtmlMediaType.Print
};
// Open HTML document
using (var document = new Aspose.Pdf.Document(dataDir + "test.html", options))
{
// Save PDF document
document.Save(dataDir + "ConvertHTMLtoPDFAdvancedMediaType_out.pdf");
}
}
HTML 页面通常使用字体(例如来自本地文件夹的字体、Google Fonts 等)。我们还可以使用 IsEmbedFonts
属性控制文档中字体的嵌入。
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFAdvancedEmbedFonts()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Load the HTML file into a document using HtmlLoadOptions with the font embedding option set
var options = new Aspose.Pdf.HtmlLoadOptions
{
// Disable font embedding
IsEmbedFonts = false
};
// Open HTML document
using (var document = new Aspose.Pdf.Document(dataDir + "test_fonts.html", options))
{
// Save PDF document
document.Save(dataDir + "ConvertHTMLtoPDFAdvanced_EmbedFonts_out.pdf");
}
}
转换引擎提供了一种机制,允许您控制与 HTML 文档相关的某些资源的加载。
HtmlLoadOptions
类具有属性 CustomLoaderOfExternalResources
,通过该属性我们可以定义资源加载器的行为。
假设我们需要将所有 PNG 图像替换为单个图像 test.jpg
,并将其他资源的外部 URL 替换为内部 URL。
为此,我们可以定义一个自定义加载器 SamePictureLoader
并将 CustomLoaderOfExternalResources
指向该名称。
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFAdvanced_DummyImage()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Load the HTML file into a document with a custom resource loader for external images
var options = new Aspose.Pdf.HtmlLoadOptions
{
CustomLoaderOfExternalResources = SamePictureLoader
};
// Open HTML document
using (var document = new Aspose.Pdf.Document(dataDir + "test.html", options))
{
// Save PDF document
document.Save(dataDir + "html_test.pdf");
}
}
private static Aspose.Pdf.LoadOptions.ResourceLoadingResult SamePictureLoader(string resourceURI)
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
Aspose.Pdf.LoadOptions.ResourceLoadingResult result;
if (resourceURI.EndsWith(".png"))
{
byte[] resultBytes = File.ReadAllBytes(dataDir + "test.jpg");
result = new Aspose.Pdf.LoadOptions.ResourceLoadingResult(resultBytes)
{
// Set MIME Type
MIMETypeIfKnown = "image/jpeg"
};
}
else
{
result = new Aspose.Pdf.LoadOptions.ResourceLoadingResult(GetContentFromUrl(resourceURI));
}
return result;
}
private static byte[] GetContentFromUrl(string url)
{
var httpClient = new System.Net.Http.HttpClient();
return httpClient.GetByteArrayAsync(url).GetAwaiter().GetResult();
}
将网页转换与将本地 HTML 文档转换略有不同。为了将网页内容转换为 PDF 格式,我们可以首先使用 HttpClient 实例获取 HTML 页面内容,创建 Stream 对象,将内容传递给 Document 对象,并以 PDF 格式呈现输出。
在将托管在 Web 服务器上的网页转换为 PDF 时:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFAdvanced_WebPage()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
const string url = "https://en.wikipedia.org/wiki/Aspose_API";
// Set page size A3 and Landscape orientation;
var options = new Aspose.Pdf.HtmlLoadOptions(url)
{
PageInfo =
{
Width = 842,
Height = 1191,
IsLandscape = true
}
};
// Load the web page content as a stream and create a PDF document
using (var document = new Aspose.Pdf.Document(GetContentFromUrlAsStream(url), options))
{
// Save PDF document
document.Save(dataDir + "html_test.pdf");
}
}
private static Stream GetContentFromUrlAsStream(string url, System.Net.ICredentials credentials = null)
{
using (var handler = new System.Net.Http.HttpClientHandler { Credentials = credentials })
using (var httpClient = new System.Net.Http.HttpClient(handler))
{
return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
}
}
有时我们需要执行需要身份验证和访问权限的 HTML 文件转换,以便只有经过身份验证的用户才能获取页面内容。这还包括某些资源/数据在 HTML 中引用的场景,这些资源/数据从某个外部服务器获取,需要身份验证。为满足此要求,HtmlLoadOptions
类中添加了 ExternalResourcesCredentials
属性。以下代码片段显示了在将 HTML 文件转换为 PDF 时传递凭据以请求 HTML 及其相关资源的步骤。
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFAdvancedAuthorized()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
const string url = "http://httpbin.org/basic-auth/user1/password1";
var credentials = new System.Net.NetworkCredential("user1", "password1");
var options = new Aspose.Pdf.HtmlLoadOptions(url)
{
ExternalResourcesCredentials = credentials
};
using (var document = new Aspose.Pdf.Document(GetContentFromUrlAsStream(url, credentials), options))
{
// Save PDF document
document.Save(dataDir + "HtmlTest_out.pdf");
}
}
private static Stream GetContentFromUrlAsStream(string url, System.Net.ICredentials credentials = null)
{
using (var handler = new System.Net.Http.HttpClientHandler { Credentials = credentials })
using (var httpClient = new System.Net.Http.HttpClient(handler))
{
return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
}
}
Aspose.PDF for .NET 提供了在将 HTML 文件转换为 PDF 格式时在单个页面上呈现所有内容的能力。例如,如果您有一些 HTML 内容,其输出大小大于一页,您可以使用选项将输出数据呈现为单个 PDF 页面。为使用此选项,HtmlLoadOptions 类通过 IsRenderToSinglePage 标志进行了扩展。以下代码片段显示了如何使用此功能。
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFAdvancedSinglePageRendering()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Initialize HtmlLoadOptions
var options = new Aspose.Pdf.HtmlLoadOptions
{
// Set Render to single page property
IsRenderToSinglePage = true
};
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "HTMLToPDF.html", options))
{
// Save PDF document
document.Save(dataDir + "RenderContentToSamePage_out.pdf");
}
}
Aspose.PDF for .NET 提供了将 HTML 页面转换为 PDF 文档的能力。由于 HTML 允许将 SVG 图形元素作为标签添加到页面中,Aspose.PDF 也支持将此类数据转换为生成的 PDF 文件。以下代码片段显示了如何将带有 SVG 图形标签的 HTML 文件转换为标记 PDF 文档。
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFWithSVG()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Initialize HtmlLoadOptions
var options = new Aspose.Pdf.HtmlLoadOptions(Path.GetDirectoryName(dataDir + "HTMLSVG.html"));
// Initialize Document object
using (var document = new Aspose.Pdf.Document(dataDir + "HTMLSVG.html", options))
{
// Save PDF document
document.Save(dataDir + "RenderHTMLwithSVGData_out.pdf");
}
}
MHTML,即 MIME HTML,是一种网页归档格式,用于将通常由外部链接(如图像、Flash 动画、Java 小程序和音频文件)表示的资源与 HTML 代码组合成一个文件。MHTML 文件的内容被编码为 HTML 电子邮件消息的形式,使用 MIME 类型 multipart/related。Aspose.PDF for .NET 可以将 HTML 文件转换为 PDF 格式,并且随着 Aspose.PDF for .NET 9.0.0 的发布,我们引入了一项新功能,允许您将 MHTML 文件转换为 PDF 格式。以下代码片段显示了如何使用 C# 将 MHTML 文件转换为 PDF 格式:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertMHTtoPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Initialize MhtLoadOptions with page setup
var options = new Aspose.Pdf.MhtLoadOptions()
{
PageInfo = { Width = 842, Height = 1191, IsLandscape = true }
};
// Initialize Document object using the MHT file and options
using (var document = new Aspose.Pdf.Document(dataDir + "fileformatinfo.mht", options))
{
// Save PDF document
document.Save(dataDir + "MhtmlTest_out.pdf");
}
}
本文还涵盖了以下主题。代码与上述相同。
格式: HTML
格式: MHTML
格式: 网页
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.