在 .NET 中将 PDF 转换为 HTML

概览

本文解释了如何使用 C# 将 PDF 转换为 HTML。它涵盖了以下主题。

格式HTML

以下代码片段也适用于 Aspose.PDF.Drawing 库。

将 PDF 转换为 HTML

Aspose.PDF for .NET 提供了许多功能,用于将各种文件格式转换为 PDF 文档以及将 PDF 文件转换为各种输出格式。 Aspose.PDF for .NET 提供了许多功能,用于将各种文件格式转换为 PDF 文档以及将 PDF 文件转换为各种输出格式。

Aspose.PDF for .NET 支持将 PDF 文件转换为 HTML 的功能。您可以使用 Aspose.PDF 库完成的主要任务包括:

  • 将 PDF 转换为 HTML;
  • 将输出拆分为多页 HTML;
  • 指定用于存储 SVG 文件的文件夹;
  • 在转换时压缩 SVG 图像;
  • 指定图片文件夹;
  • 仅创建包含正文内容的后续文件;
  • 透明文本渲染;
  • PDF 文档图层渲染。

Aspose.PDF for .NET 提供了两行代码,用于将源 PDF 文件转换为 HTML。 Aspose.PDF for .NET 提供了一个两行代码,用于将源 PDF 文件转换为 HTML。

步骤:在 C# 中将 PDF 转换为 HTML

  1. 使用源 PDF 文档创建 Document 对象的实例。
  2. 通过调用 Document.Save() 方法将其保存为 SaveFormat.Html 格式。
// 完整示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// 文档目录的路径。
string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();

// 打开源 PDF 文档
Document pdfDocument = new Document(dataDir + "PDFToHTML.pdf");

// 将文件保存为 MS 文档格式
pdfDocument.Save(dataDir + "output_out.html", SaveFormat.Html);

将输出拆分为多页 HTML

当将包含多页的大型 PDF 文件转换为 HTML 格式时,输出显示为单个 HTML 页面。 将多页 PDF 文件转换为 HTML 格式时,输出显示为单个 HTML 页面。

// 完整示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// 文档目录的路径。
string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();

// 打开源 PDF 文档
Document pdfDocument = new Document(dataDir + "PDFToHTML.pdf");

// 实例化 HTML 保存选项对象
HtmlSaveOptions htmlOptions = new HtmlSaveOptions();

// 指定将输出分成多个页面
htmlOptions.SplitIntoPages = true;

// 保存文档
pdfDocument.Save(@"MultiPageHTML_out.html", htmlOptions);

指定存储 SVG 文件的文件夹

在 PDF 转 HTML 转换过程中,可以指定应将 SVG 图像保存到的文件夹。 在 PDF 到 HTML 转换过程中,可以指定保存 SVG 图像的文件夹。

// 加载 PDF 文件
Document doc = new Document(dataDir + "PDFToHTML.pdf");

// 实例化 HTML 保存选项对象
HtmlSaveOptions newOptions = new HtmlSaveOptions();

// 指定 PDF 到 HTML 转换过程中保存 SVG 图像的文件夹
newOptions.SpecialFolderForSvgImages = dataDir;

// 保存输出文件
doc.Save(dataDir + "SaveSVGFiles_out.html", newOptions);

在转换过程中压缩 SVG 图像

在 PDF 到 HTML 转换期间压缩 SVG 图像,请尝试使用以下代码:

// 有关完整示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// 创建具有测试功能的 HtmlSaveOption
HtmlSaveOptions newOptions = new HtmlSaveOptions();

// 如果有 SVG 图像,则压缩它们
newOptions.CompressSvgGraphicsIfAny = true;

指定图像文件夹

我们还可以指定在 PDF 到 HTML 转换期间将保存图像的文件夹: 我们还可以指定在PDF转换为HTML期间图片将保存到的文件夹:

// 要获取完整示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// 创建具有测试功能的HtmlSaveOption
HtmlSaveOptions newOptions = new HtmlSaveOptions();

// 指定保存图片的单独文件夹
newOptions.SpecialFolderForAllImages = dataDir;

仅创建包含正文内容的后续文件

最近,我们被要求引入一个功能,其中PDF文件被转换为HTML,并且用户可以仅获取每个页面的<body>标签内容。这将生成一个包含CSS、<html><head>细节的文件,以及其他仅包含<body>内容的文件。

为了满足这一要求,HtmlSaveOptions类中引入了一个新属性,HtmlMarkupGenerationMode。

通过以下简单的代码片段,您可以将输出HTML分割为多个页面。 通过以下简单的代码片段,您可以将输出HTML分割成多个页面。

// 文档目录的路径。
string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();

Document doc = new Document(dataDir + "PDFToHTML.pdf");
           
HtmlSaveOptions options = new HtmlSaveOptions();
// 这是经过测试的设置
options.HtmlMarkupGenerationMode = HtmlSaveOptions.HtmlMarkupGenerationModes.WriteOnlyBodyContent;
options.SplitIntoPages = true;

doc.Save(dataDir + "CreateSubsequentFiles_out.html", options);

透明文本渲染

如果源/输入的PDF文件包含由前景图像阴影的透明文本,则可能会出现文本渲染问题。因此,为了应对这种情况,可以使用SaveShadowedTextsAsTransparentTexts和SaveTransparentTexts属性。

// 若要获取完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// 文档目录的路径。
string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();

Document doc = new Document(dataDir + "PDFToHTML.pdf");
HtmlSaveOptions htmlOptions = new HtmlSaveOptions();
htmlOptions.SaveShadowedTextsAsTransparentTexts = true;
htmlOptions.SaveTransparentTexts = true;
doc.Save(dataDir + "TransparentTextRendering_out.html", htmlOptions);

PDF文档层渲染

我们可以在PDF到HTML转换期间,将PDF文档层渲染到单独的层类型元素中:

// 有关完整示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// 文档目录的路径。
string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();

Document doc = new Document(dataDir + "PDFToHTML.pdf");
// 实例化HTML SaveOptions对象
HtmlSaveOptions htmlOptions = new HtmlSaveOptions();

// 指定在输出HTML中单独渲染PDF文档层
htmlOptions.ConvertMarkedContentToLayers = true;

// 保存文档
doc.Save(dataDir + "LayersRendering_out.html", htmlOptions);

另见

本文还涵盖以下主题。代码与上面相同。

格式: HTML