Извлечение векторных данных из PDF-файла с помощью Python
Получение доступа к векторным данным PDF-документа
Используйте GraphicsAbsorber, чтобы анализировать элементы векторной графики на странице Document. После обработки целевой страницы переберите извлечённые элементы, чтобы изучить такие свойства, как границы прямоугольника, позиции и операторы рисования.
- Откройте исходный PDF как
Document. - Создайте экземпляр
GraphicsAbsorber. - Вызовите
gr_absorber.visit(page)для целевой страницы. - Получите извлечённые элементы из
gr_absorber.elements. - Переберите элементы и запишите их свойства в выходной файл.
import aspose.pdf as ap
def extract_graphics_elements(infile, outfile):
"""
Extract vector graphic elements from a specified page of a PDF and log basic element properties.
Args:
infile (str): Path to input PDF file.
outfile (str): Path to output text file for logging element info.
"""
document = ap.Document(infile)
try:
gr_absorber = ap.vector.GraphicsAbsorber()
# Visit page 2 (pages collection is 1-indexed; document.pages[1] is the second page)
gr_absorber.visit(document.pages[1])
elements = gr_absorber.elements
with open(outfile, "w", encoding="utf-8") as f:
for idx, elem in enumerate(elements, start=1):
# Basic properties
rect = elem.rectangle
pos = elem.position
ops_count = len(elem.operators)
f.write(
f"Element {idx}: Rectangle = {rect}, Position = {pos}, Operators = {ops_count}\n"
)
finally:
document.close()
Сохранение векторной графики со страницы в SVG-файл
Экспортируйте векторную графику со страницы PDF в SVG, чтобы сохранить масштабируемые контуры и фигуры вне исходного PDF. Этот метод полезен для повторного использования векторных иллюстраций в веб-, дизайнерских или издательских процессах.
- Загрузите PDF-документ.
- Получите доступ к целевой странице.
- Вызовите
page.try_save_vector_graphics(), чтобы экспортировать векторные контуры страницы в SVG. - Закройте документ.
import aspose.pdf as ap
def save_vector_graphics_to_svg(infile, svg_outfile):
"""
Save vector graphics from a specified page of a PDF document into an SVG file.
Args:
infile (str): Path to input PDF file.
svg_outfile (str): Path to output SVG file.
"""
document = ap.Document(infile)
try:
page = document.pages[1]
# Try to save vector graphics into SVG
page.try_save_vector_graphics(svg_outfile)
finally:
document.close()
Извлечение каждого подпути в отдельный SVG
Когда страница содержит несколько независимых векторных путей, используйте SvgExtractionOptions вместе с SvgExtractor, чтобы записать каждый подпуть в отдельный SVG-файл.
- Загрузите PDF.
- Создайте
SvgExtractionOptionsи настройтеextract_every_subpath_to_svg. - Получите доступ к первой странице документа.
- Создайте экземпляр
SvgExtractor, передав параметры. - Вызовите
extractor.extract(), чтобы записать отдельные SVG-файлы для каждого векторного подпути. - Закройте документ.
import aspose.pdf as ap
def extract_subpaths_to_svgs(infile, output_dir):
"""
Extract each vector sub-path on a PDF page into separate SVG files using extraction options.
Args:
infile (str): Input PDF file path.
output_dir (str): Directory path where SVG files will be saved.
"""
document = ap.Document(infile)
try:
options = ap.vector.SvgExtractionOptions()
options.extract_every_subpath_to_svg = True
page = document.pages[1]
extractor = ap.vector.SvgExtractor(options)
extractor.extract(page, output_dir)
finally:
document.close()
Извлечение списка элементов в одно изображение
Извлеките несколько векторных элементов со страницы PDF и сохраните их как одно объединённое SVG-изображение. Это полезно, когда нужно сохранить визуальную связь между сгруппированными фигурами, диаграммами или фрагментами рисунка.
- Откройте PDF с помощью Document.
- Выберите страницу и подготовьте список векторных элементов.
- Используйте SvgExtractor, чтобы объединить эти элементы в один SVG.
- Сохраните выходной файл.
import aspose.pdf as ap
def extract_list_of_elements_to_single_image(infile, outfile):
"""
Extracts multiple vector graphic elements from a PDF page and saves them as a single SVG image.
Args:
infile (str): Path to the input PDF file.
outfile (str): Path to the output SVG file.
"""
document = ap.Document(infile)
try:
page = document.pages[1]
svg_extractor = ap.vector.SvgExtractor()
elements = [] # Fill this list with specific graphic elements as needed
svg_extractor.extract(elements, page, outfile)
finally:
document.close()
Извлечение одного элемента
Извлеките один конкретный векторный элемент из PDF и сохраните его как отдельный SVG-файл. Это полезно для изоляции логотипов, значков или отдельных фигур из более сложных векторных страниц.
- Создайте GraphicsAbsorber, чтобы захватить векторные данные.
- Обработайте выбранную страницу, чтобы собрать её векторные элементы.
- Выберите целевой элемент, например XFormPlacement.
- Сохраните этот отдельный элемент в SVG-файл.
import aspose.pdf as ap
def extract_single_vector_element(infile, outfile):
"""
Extracts a specific vector graphic element (e.g., an XFormPlacement) from a PDF page and saves it as an SVG file.
Args:
infile (str): Path to the input PDF file.
outfile (str): Path to the output SVG file.
"""
document = ap.Document(infile)
try:
graphics_absorber = ap.vector.GraphicsAbsorber()
page = document.pages[1]
graphics_absorber.visit(page)
xform_placement = graphics_absorber.elements[1]
if isinstance(xform_placement, ap.vector.XFormPlacement):
xform_placement.elements[2].save_to_svg(outfile)
finally:
document.close()