Конвертировать SVG в PDF в Python

Quick Answer: Загрузите SVG через SVGDocument, создайте PdfSaveOptions и вызовите Converter.convert_svg(document, options, output_path), чтобы сохранить SVG как PDF. Используйте PdfSaveOptions, если нужно настроить размер страницы, фон, разрешение, качество JPEG, метаданные или шифрование.

Конвертация SVG в PDF программно

PDF – распространенный выходной формат, когда SVG-графику нужно напечатать, архивировать, вложить в документы или передать в формате, который сохраняет макет в разных просмотрщиках. Aspose.SVG for Python via .NET позволяет конвертировать SVG в PDF через высокоуровневый converter API или через устройство рендеринга, если нужен явный контроль над пайплайном.

Используйте Converter.convert_svg() для большинства задач конвертации файлов. Используйте SVGDocument.render_to() с PdfDevice, если ваш процесс уже работает с устройствами рендеринга или требует подхода на базе устройства.

Конвертация SVG в PDF с помощью Converter.convert_svg()

Самый простой способ конвертировать SVG в PDF – загрузить SVG-документ через SVGDocument, создать PdfSaveOptions и вызвать Converter.convert_svg().

1from aspose.svg import SVGDocument
2from aspose.svg.converters import Converter
3from aspose.svg.saving import PdfSaveOptions
4
5# Convert an SVG file to PDF using the default save options
6options = PdfSaveOptions()
7
8with SVGDocument("document.svg") as document:
9    Converter.convert_svg(document, options, "document.pdf")

Конвертация SVG в PDF с пользовательскими параметрами сохранения

Используйте PdfSaveOptions, когда нужно управлять PDF-выводом. Следующий пример задает прозрачный фон, подгоняет страницу под содержимое SVG, изменяет разрешение растровых изображений и настраивает качество JPEG.

 1import os
 2from aspose.svg import SVGDocument
 3from aspose.svg.converters import Converter
 4from aspose.svg.drawing import Resolution
 5from aspose.svg.rendering import SizingType
 6from aspose.svg.saving import PdfSaveOptions
 7from aspose.pydrawing import Color
 8
 9# Convert SVG to PDF and customize page sizing and image quality
10input_folder = "data/"
11output_folder = "output/"
12input_path = os.path.join(input_folder, "document.svg")
13output_path = os.path.join(output_folder, "document.pdf")
14os.makedirs(output_folder, exist_ok=True)
15
16options = PdfSaveOptions()
17options.background_color = Color.from_argb(0, 255, 255, 255)
18options.page_setup.sizing = SizingType.FIT_CONTENT
19options.horizontal_resolution = Resolution.from_dots_per_inch(96.0)
20options.vertical_resolution = Resolution.from_dots_per_inch(96.0)
21options.jpeg_quality = 80
22
23with SVGDocument(input_path) as document:
24    Converter.convert_svg(document, options, output_path)

Основные свойства PdfSaveOptions

СвойствоЧто контролирует
background_colorЦвет фона страницы, если в SVG есть прозрачные области
page_setupРазмер страницы, поля и режим подгонки
horizontal_resolutionГоризонтальное разрешение для растровых ресурсов внутри PDF
vertical_resolutionВертикальное разрешение для растровых ресурсов внутри PDF
jpeg_qualityКачество JPEG-сжатия для встроенных растровых изображений
document_infoМетаданные PDF: title, author, subject, keywords
encryptionШифрование PDF и настройки разрешений

PdfSaveOptions наследует настройки PDF-рендеринга от PdfRenderingOptions, поэтому многие свойства совпадают для сценариев через converter и через устройство рендеринга.

Конвертация SVG в PDF с помощью render_to()

Метод render_to() отправляет загруженный SVG-документ на устройство рендеринга. Такой подход полезен, если приложение уже работает с устройствами Aspose.SVG или должно явно выбирать целевое устройство.

 1import os
 2from aspose.svg import SVGDocument
 3from aspose.svg.rendering import SizingType
 4from aspose.svg.rendering.pdf import PdfDevice, PdfRenderingOptions
 5
 6# Render SVG to PDF through a PdfDevice
 7input_folder = "data/"
 8output_folder = "output/"
 9input_path = os.path.join(input_folder, "document.svg")
10output_path = os.path.join(output_folder, "document.pdf")
11os.makedirs(output_folder, exist_ok=True)
12
13options = PdfRenderingOptions()
14options.jpeg_quality = 80
15options.page_setup.sizing = SizingType.FIT_CONTENT
16
17with SVGDocument(input_path) as document:
18    with PdfDevice(options, output_path) as device:
19        document.render_to(device)

Converter.convert_svg() или render_to()

МетодКогда использовать
Converter.convert_svg()Прямая конвертация SVG в PDF с коротким кодом и параметрами сохранения
SVGDocument.render_to()Сценарии с устройствами вывода, например PdfDevice

Для обычной конвертации SVG в PDF начинайте с Converter.convert_svg(): он короче и естественно соответствует задаче конвертации файла. Используйте render_to(), когда нужен подход на базе устройства.

Типичные ошибки и решения

ПроблемаВозможная причинаРешение
Размер страницы PDF не тот, что ожидалсяНастройки страницы по умолчанию не соответствуют viewport SVG или границам содержимогоЗадайте options.page_setup.sizing и явно настройте размер страницы или поля
Прозрачные области SVG отображаются с нежелательным фономPDF-просмотрщик или последующий процесс применяет собственный фонЗадайте options.background_color перед конвертацией
Встроенные изображения выглядят размытыми или слишком большимиРазрешение и качество JPEG не соответствуют целевому выводуНастройте horizontal_resolution, vertical_resolution и jpeg_quality
PDF не создаетсяПапка вывода не существует или скрипт сохраняет файл в другой рабочей директорииСоздайте папку через os.makedirs() и собирайте пути через os.path.join()
Текст или внешние ресурсы отсутствуютSVG ссылается на шрифты, изображения или CSS, которые не удается разрешитьИспользуйте корректные пути и держите внешние ресурсы рядом с SVG-документом

Онлайн-конвертер SVG в PDF

Вы можете проверить конвертацию SVG в PDF с помощью бесплатного онлайн SVG to PDF Converter. Загрузите SVG-файл, выполните конвертацию и сравните результат перед реализацией того же сценария в Python.

                
            

Онлайн-конвертер SVG в PDF

FAQ

Как конвертировать SVG в PDF в Python?

Загрузите SVG через SVGDocument, создайте PdfSaveOptions и вызовите Converter.convert_svg(document, options, output_path).

Можно ли задать размер страницы PDF при конвертации SVG?

Да. Используйте свойство page_setup у PdfSaveOptions или PdfRenderingOptions, чтобы настроить размер страницы, поля и режим подгонки.

Можно ли конвертировать SVG в PDF без класса Converter?

Да. Создайте PdfRenderingOptions, откройте PdfDevice и вызовите document.render_to(device).

Сохраняется ли прозрачность при конвертации SVG в PDF?

Прозрачный SVG-контент может сохраняться, но видимый результат зависит от PDF-просмотрщика и последующего процесса. Укажите background_color, если нужен предсказуемый фон страницы.

Как уменьшить размер созданного PDF?

Снизьте jpeg_quality, уменьшите разрешение встроенных растровых изображений и упростите крупный или сложный SVG перед конвертацией.

Связанные статьи