在 Java 中将 PDF 转换为 HTML

Aspose.PDF for Java 支持 HTML 导出,具有图像、SVG、页面拆分、透明度和图层渲染的选项。使用 HtmlSaveOptions 控制 PDF 页面、资源和标记写入 HTML 输出的方式。

将 PDF 转换为 HTML

当需要将 PDF 导出为标准 HTML 文档时,请使用此示例。

  1. 使用 Document 实例打开源 PDF。
  2. 创建默认 HtmlSaveOptions 用于标准 HTML 序列化。
  3. 调用 document.save(outputFile.toString(), saveOptions) 因此,PDF 页面内容被导出为 HTML 标记。
  4. 保存生成的 HTML 输出。
public static void convertPdfToHtml(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        HtmlSaveOptions saveOptions = new HtmlSaveOptions();
        document.save(outputFile.toString(), saveOptions);
    }
    System.out.println(inputFile + " converted into " + outputFile);
}

将 PDF 转换为 HTML 并单独存储图像

在 HTML 导出期间,如果提取的图像应写入为单独的文件,请使用此示例。

  1. 使用 Document 实例打开源 PDF。
  2. 创建 HtmlSaveOptions 并设置 setSpecialFolderForAllImages(...) 到专用的图像输出目录。
  3. 调用 document.save(outputFile.toString(), saveOptions) 因此,栅格图像会作为单独的资源文件输出,而不是仅内联输出。
  4. 将 HTML 输出连同生成的图像资源一起保存。
public static void convertPdfToHtmlStoringImages(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        HtmlSaveOptions saveOptions = new HtmlSaveOptions();
        saveOptions.setSpecialFolderForAllImages(inputFile.getParent().resolve("images").toString());
        document.save(outputFile.toString(), saveOptions);
    }
    System.out.println(inputFile + " converted into " + outputFile);
}

将 PDF 转换为多页 HTML

当每个 PDF 页面应在 HTML 输出中单独呈现时,请使用此示例。

  1. 使用 Document 实例打开源 PDF。
  2. 创建 HtmlSaveOptions 并启用 setSplitIntoPages(true)。
  3. 调用 document.save(outputFile.toString(), saveOptions) 所以每个 PDF 页面都会被写成单独的 HTML 输出。
  4. 保存生成的 HTML 文件。
public static void convertPdfToHtmlMultiPage(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        HtmlSaveOptions saveOptions = new HtmlSaveOptions();
        saveOptions.setSplitIntoPages(true);
        document.save(outputFile.toString(), saveOptions);
    }
    System.out.println(inputFile + " converted into " + outputFile);
}

将 PDF 转换为 HTML 并将 SVG 单独存储

当向量内容应作为单独的 SVG 资源输出时,请使用此示例。

  1. 使用 Document 实例打开源 PDF。
  2. 创建 HtmlSaveOptions 并设置 setSpecialFolderForSvgImages(...) 到外部 SVG 资源目录。
  3. 调用 document.save(outputFile.toString(), saveOptions) 因此,矢量图形存储在主 HTML 文件之外。
  4. 保存 HTML 输出和 SVG 资源。
public static void convertPdfToHtmlStoringSvg(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        HtmlSaveOptions saveOptions = new HtmlSaveOptions();
        saveOptions.setSpecialFolderForSvgImages(inputFile.getParent().resolve("svg_images").toString());
        document.save(outputFile.toString(), saveOptions);
    }
    System.out.println(inputFile + " converted into " + outputFile);
}

将 PDF 转换为带有压缩 SVG 的 HTML

在 HTML 导出时应优化 SVG 输出,请使用此示例。

  1. 使用 Document 实例打开源 PDF。
  2. 创建 HtmlSaveOptions 并为 SVG 资源配置专用文件夹。
  3. 启用 setCompressSvgGraphicsIfAny(true) 因此,在导出过程中 SVG 资产会被压缩。
  4. 调用 document.save(outputFile.toString(), saveOptions) 并保存转换后的 HTML 文件。
public static void convertPdfToHtmlCompressSvg(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        HtmlSaveOptions saveOptions = new HtmlSaveOptions();
        saveOptions.setSpecialFolderForSvgImages(inputFile.getParent().resolve("svg_images").toString());
        saveOptions.setCompressSvgGraphicsIfAny(true);
        document.save(outputFile.toString(), saveOptions);
    }
    System.out.println(inputFile + " converted into " + outputFile);
}

将 PDF 转换为带 PNG 页面背景的 HTML

当页面背景应在 HTML 输出中渲染为 PNG 图像时,请使用此示例。

  1. 使用 Document 实例打开源 PDF。
  2. 创建 HtmlSaveOptions 并将光栅图像保存模式设置为 PNG 页面背景。
  3. 调用 document.save(outputFile.toString(), saveOptions) 因此,页面背景内容会以 PNG 支持的 HTML 层形式输出。
  4. 保存转换后的 HTML 输出。
public static void convertPdfToHtmlPngBackground(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        HtmlSaveOptions saveOptions = new HtmlSaveOptions();
        saveOptions.setRasterImagesSavingMode(
                HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedPartsOfPngPageBackground);
        document.save(outputFile.toString(), saveOptions);
    }
    System.out.println(inputFile + " converted into " + outputFile);
}

仅将 PDF 转换为 HTML 正文内容

当只需要正文标记而不是完整的 HTML 文档外壳时,请使用此示例。

  1. 使用 Document 实例打开源 PDF。
  2. 创建 HtmlSaveOptions 并将标记生成模式设置为 WriteOnlyBodyContent。
  3. 保持 setSplitIntoPages(true) 启用时,即使仅输出正文也应保持分页。
  4. 调用 document.save(outputFile.toString(), saveOptions) 并保存 HTML 输出。
public static void convertPdfToHtmlBodyContent(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        HtmlSaveOptions saveOptions = new HtmlSaveOptions();
        saveOptions.setHtmlMarkupGenerationMode(
                HtmlSaveOptions.HtmlMarkupGenerationModes.WriteOnlyBodyContent);
        saveOptions.setSplitIntoPages(true);
        document.save(outputFile.toString(), saveOptions);
    }
    System.out.println(inputFile + " converted into " + outputFile);
}

将 PDF 转换为 HTML,使用透明文本渲染

在需要在 HTML 导出中保留透明文本时,请使用此示例。

  1. 使用 Document 实例打开源 PDF。
  2. 创建 HtmlSaveOptions 并启用透明和带阴影文本的保留。
  3. 调用 document.save(outputFile.toString(), saveOptions) 因此,透明度相关的文本外观在 HTML 结果中得以保留。
  4. 保存转换后的 HTML 输出。
public static void convertPdfToHtmlTransparentTextRendering(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        HtmlSaveOptions saveOptions = new HtmlSaveOptions();
        saveOptions.setSaveTransparentTexts(true);
        saveOptions.setSaveShadowedTextsAsTransparentTexts(true);
        document.save(outputFile.toString(), saveOptions);
    }
    System.out.println(inputFile + " converted into " + outputFile);
}

将 PDF 转换为带有文档层渲染的 HTML

当 PDF 图层可见性应在 HTML 结果中反映时,请使用此示例。

  1. 使用 Document 实例打开源 PDF。
  2. 创建 HtmlSaveOptions 并启用 setConvertMarkedContentToLayers(true)。
  3. 调用 document.save(outputFile.toString(), saveOptions) 因此标记的 PDF 内容被映射到 HTML 层。
  4. 保存导出的 HTML 文件。
public static void convertPdfToHtmlDocumentLayersRendering(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        HtmlSaveOptions saveOptions = new HtmlSaveOptions();
        saveOptions.setConvertMarkedContentToLayers(true);
        document.save(outputFile.toString(), saveOptions);
    }
    System.out.println(inputFile + " converted into " + outputFile);
}