用 Python 将 SVG 转换为 PDF
本文将介绍如何使用 Converter 类的 convert_svg() 方法将 SVG 转换为 PDF,以及如何应用 PdfSaveOptions。使用 Aspose.HTML for Python via .NET,您可以通过编程将 SVG 转换为 PDF 格式,并完全控制各种转换参数。 此外,您还可以试用在线 SVG 转换器来测试 Python API 的功能并即时转换 SVG。
在线 SVG 转换器
您可以使用 Aspose.HTML API 将 SVG 实时转换为其他格式。请从本地文件系统或 URL 加载 SVG,选择输出格式并运行示例。默认设置**保存选项。您将立即以单独文件的形式收到转换结果。
将 SVG 转换为 PDF
让我们来看看如何将 SVG 文档转换成 PDF 文件格式。Converter 类中的 convert_svg() 方法主要用于将 SVG 文件转换成各种格式的最简单方法。您应遵循以下几个步骤:
- 加载 SVG 文档。要进行转换,可以从文件、URL 或代码字符串加载 SVG。在下面的示例中,我们通过代码创建一个 SVG 文件。
- 创建一个新的 PdfSaveOptions对象。如果您没有为保存生成的 PDF 文件设置特定选项,则将使用默认选项。
- 使用转换器类的
convert_svg(
content, base_uri, options, output_path) 方法将 SVG 保存为 PDF 文件。
1# Convert SVG code to PDF document using Python
2
3import os
4import aspose.html.converters as conv
5import aspose.html.saving as sav
6
7# Setup directories and define paths
8output_dir = "output/"
9if not os.path.exists(output_dir):
10 os.makedirs(output_dir)
11save_path = os.path.join(output_dir, "circles.pdf")
12
13# SVG code
14svg_code = """
15<svg xmlns="http://www.w3.org/2000/svg">
16 <circle id="base" cx="100" cy="100" r="80" fill="teal" stroke="salmon" stroke-width="10" />
17 <g>
18 <use href="#base" transform="translate(120, 10) scale(0.9)" />
19 <use href="#base" transform="translate(240, 20) scale(0.8)" />
20 <use href="#base" transform="translate(360, 30) scale(0.7)" />
21 <use href="#base" transform="translate(480, 40) scale(0.6)" />
22 <use href="#base" transform="translate(600, 50) scale(0.5)" />
23 </g>
24</svg>
25"""
26
27# Initialize PdfSaveOptions
28options = sav.PdfSaveOptions()
29
30# Convert SVG to PDF
31conv.Converter.convert_svg(svg_code, ".", options, save_path)下图以 “circles.pdf “文件的一个片段为例,展示了 SVG 到 PDF 的渲染质量。之所以说是文件片段,是因为保存选项被设置为默认值后,整个文件大小相当于一页 A4 纸。

使用 PdfSaveOptions 将 SVG 转换为 PDF
Aspose.HTML for Python via .NET 提供了 PdfSaveOptions类,使您可以对如何以 PDF 格式保存文档进行更多控制。该类的某些属性继承了基类的属性,如 PdfRenderingOptions 或 RenderingOptions。下面是 “PdfSaveOptions “中一些可用属性的说明:
- page_setup – 该属性提供对 PageSetup 对象的访问,该对象用于配置输出 PDF 页面的布局和设置,以适应特定的打印或显示要求。
- horizontal_resolution – 该属性控制处理过程中使用的内部图像和 HTML 中包含的任何外部图像的水平分辨率。默认设置为 300 dpi。
- vertical_resolution – 与
horizontal_resolution类似,该属性管理 PDF 生成过程中内部和外部图像的垂直分辨率。与水平分辨率一样,它的默认值也是 300 dpi。 - background_color – 该属性设置或检索填充每个 PDF 文档页面的背景颜色。默认值为透明色,但可根据品牌或审美偏好进行自定义,以确保所有页面的一致性。
- jpeg_quality – 该属性决定嵌入 PDF 文档中的图像所使用的 JPEG 压缩质量。默认质量设置为 95,在图像保真度和文件大小之间取得了良好的平衡。通过设置此属性,您可以根据具体需要优化文件大小或图像质量。
- css – 该属性使用一个
CssOptions对象来配置在 HTML 转换为 PDF 的过程中对 CSS 属性的处理。它允许精确控制如何在生成的 PDF 中解释和应用 HTML 中的样式。 - encryption – 该属性提供有关 PDF 文档加密的详细信息,包括密码保护和权限设置。如果未配置该属性,则不会应用加密,但设置该属性可以安全地分发和控制对敏感 PDF 内容的访问。
- is_tagged_pdf – 设置为
true时,将在 PDF 文档中创建标记布局,从而提高残疾用户的可访问性。这可确保内容结构合理,可使用辅助技术进行导航,并符合可访问性标准。
要将 SVG 转换为指定了 PdfSaveOptions 的 PDF,需要遵循以下几个步骤:
- 使用 SVGDocument 类的 SVGDocument() 构造函数之一加载 SVG 文件。
- 创建一个新的 PdfSaveOptions 对象并指定保存选项。
- 使用
convert_svg() 方法之一将 SVG 保存为 PDF 文件。在示例中,convert_svg() 方法接收
document、options和输出文件路径save_path并执行转换操作。
以下 Python 代码片段可配置 PDF 保存选项,以设置页面大小和页边距,应用 CSS 规则进行打印,以 80% 的质量压缩 JPEG 图像,并启用标记 PDF 以提高可访问性:
1# Convert SVG to PDF with custom settings using Python
2
3import os
4import aspose.html.dom.svg as ahsvg
5import aspose.html.converters as conv
6import aspose.html.saving as sav
7import aspose.html.drawing as dr
8
9# Setup directories and define paths
10output_dir = "output/"
11input_dir = "data/"
12if not os.path.exists(output_dir):
13 os.makedirs(output_dir)
14
15document_path = os.path.join(input_dir, "flower.svg")
16save_path = os.path.join(output_dir, "svg-to-pdf.pdf")
17
18# Load an SVG document
19document = ahsvg.SVGDocument(document_path)
20
21# Initialize PdfSaveOptions
22options = sav.PdfSaveOptions()
23
24# Customize save options for PDF
25options.page_setup.any_page = dr.Page(dr.Size(600, 500), dr.Margin(20, 20, 10, 10))
26options.css.media_type.PRINT
27options.jpeg_quality = 80
28options.is_tagged_pdf = True
29
30# Convert SVG to PDF
31conv.Converter.convert_svg(document, options, save_path)在上述示例中,我们使用
page_setup属性来定制 PDF 页面的布局;css.media_type属性来指定 CSS 在渲染过程中的媒体类型。在本例中,它被设置为PRINT,这意味着在生成 PDF 时将应用为打印媒体定义的 CSS 规则;jpeg_quality属性来设置 PDF 中图像的 JPEG 压缩质量。将其设置为80,意味着 PDF 中的 JPEG 图像将被压缩为原始质量的 80%;is_tagged_pdf属性可启用或禁用在 PDF 中创建标签结构,这对可访问性非常重要。将此属性设置为True可确保生成的 PDF 将被标记,从而使依赖屏幕阅读器等辅助技术的用户更容易访问。
使用我们的在线 SVG 到 PDF 转换器 查看 SVG 转换为 PDF 的质量。上传、转换您的文件并在几秒钟内获得结果。现在就免费试用我们强大的 SVG 到 PDF 转换器!
下载我们的 Aspose.HTML for Python via .NET library 可以让您成功、快速、轻松地将 HTML、MHTML、EPUB、SVG 和 Markdown 文档转换为最流行的格式。
您可以从 GitHub 下载完整的示例和数据文件。
