Trabalhar com Gráficos Vetoriais em Python
Aspose.PDF para Python via .NET fornece o Absorvedor de Gráficos classe para acessar e manipular gráficos vetoriais já presentes em uma página PDF. Chame-a visit método em qualquer página para extrair caminhos, formas e outros operadores gráficos, então mover, remover ou copiar esses elementos conforme necessário.
Use esta página quando precisar inspecionar ou modificar elementos de desenho vetorial incorporados em um PDF existente, em vez de desenhar novas formas do zero.
Extraindo Gráficos
A extração é o ponto de partida para todas as tarefas de gráficos vetoriais. GraphicsAbsorber lê o fluxo de conteúdo de uma página e expõe cada elemento gráfico com sua referência de página, posição e operadores brutos.
- Abra o documento PDF.
- Criar um Absorvedor de Gráficos instância.
- Chamar
visitna página de destino para preencherelements. - Iterar sobre
elementspara inspecionar a posição e as contagens de operadores.
import aspose.pdf as ap
import sys
from os import path
def using_graphics_absorber(infile: str):
with ap.Document(infile) as document:
with ap.vector.GraphicsAbsorber() as graphics_absorber:
page = document.pages[1]
graphics_absorber.visit(page)
for element in graphics_absorber.elements:
print(f"Page Number: {element.source_page.number}")
print(f"Position: ({element.position.x}, {element.position.y})")
print(f"Number of Operators: {element.operators.length}")
GraphicsAbsorber é parte do aspose.pdf.vector namespace e é projetado especificamente para interagir com gráficos vetoriais em fluxos de conteúdo PDF.
Gráficos em movimento
Após a extração, defina um novo position em cada elemento para realocá-lo na mesma página. Envolva as atualizações em suppress_update / resume_update chamadas para agrupar gravações de fluxos de conteúdo em uma única operação e evitar repinturas redundantes.
- Abra o documento PDF.
- Criar um
GraphicsAbsorbere chamarvisitna página de destino. - Chamar
suppress_updatepara pausar gravações de fluxo de conteúdo. - Atualizar o
positionde cada elemento. - Chamar
resume_updatepara confirmar todas as alterações de uma só vez. - Salve o documento modificado.
import aspose.pdf as ap
import sys
from os import path
def move_graphics(infile: str, outfile: str):
with ap.Document(infile) as document:
with ap.vector.GraphicsAbsorber() as graphics_absorber:
page = document.pages[1]
graphics_absorber.visit(page)
graphics_absorber.suppress_update()
for element in graphics_absorber.elements:
position = element.position
element.position = ap.Point(position.x + 150, position.y - 10)
graphics_absorber.resume_update()
document.save(outfile)
Removendo Gráficos
Para excluir elementos vetoriais específicos de uma página, filtre por posição ou retângulo delimitador e, em seguida, remova-os. Aspose.PDF for Python fornece duas abordagens, dependendo de você querer remover os elementos inline ou coletá-los primeiro.
Método 1: Remover Inline Usando Limite do Retângulo
Esta abordagem verifica a posição de cada elemento em relação a um retângulo e chama element.remove() diretamente dentro do loop. Use-o quando quiser código conciso e não precisar inspecionar o conjunto removido posteriormente.
- Abra o documento PDF.
- Criar um
GraphicsAbsorbere chamarvisitna página de destino. - Defina o alvo Retângulo.
- Chamar
suppress_updatepara pausar gravações de fluxo de conteúdo. - Iterar
elements, chamandoremove()em cada elemento cuja posição esteja dentro do retângulo. - Chamar
resume_updatepara confirmar as exclusões. - Salve o documento modificado.
import aspose.pdf as ap
import sys
from os import path
def remove_graphics_method_1(infile: str, outfile: str):
with ap.Document(infile) as document:
with ap.vector.GraphicsAbsorber() as graphics_absorber:
page = document.pages[1]
graphics_absorber.visit(page)
rectangle = ap.Rectangle(70, 248, 170, 252, True)
graphics_absorber.suppress_update()
for element in graphics_absorber.elements:
if rectangle.contains(element.position, False):
element.remove()
graphics_absorber.resume_update()
document.save(outfile)
Método 2: Coletar Elementos Primeiro, Depois Excluir
Esta abordagem reúne elementos correspondentes em um GraphicElementCollection e passa a coleção para page.delete_graphics. Use-o quando precisar revisar ou registrar o que será removido antes de confirmar a exclusão.
- Abra o documento PDF.
- Criar um
GraphicsAbsorbere chamarvisitna página de destino. - Defina o retângulo de destino.
- Iterar
elementse adicione elementos correspondentes a umGraphicElementCollection. - Chamar
page.contents.suppress_updatepara pausar gravações de fluxo de conteúdo. - Chamar
page.delete_graphicscom a coleção. - Chamar
page.contents.resume_updatepara confirmar as exclusões. - Salve o documento modificado.
import aspose.pdf as ap
import sys
from os import path
def remove_graphics_method_2(infile: str, outfile: str):
with ap.Document(infile) as document:
with ap.vector.GraphicsAbsorber() as graphics_absorber:
page = document.pages[1]
rectangle = ap.Rectangle(70, 248, 170, 252, True)
graphics_absorber.visit(page)
removed_elements_collection = ap.vector.GraphicElementCollection()
for element in graphics_absorber.elements:
if rectangle.contains(element.position, False):
removed_elements_collection.add(element)
page.contents.suppress_update()
page.delete_graphics(removed_elements_collection)
page.contents.resume_update()
document.save(outfile)
Adicionando Gráficos a Outra Página
Elementos vetoriais extraídos de uma página podem ser colocados em qualquer outra página no mesmo documento. Dois métodos estão disponíveis: adicionar os elementos um a um ou passar toda a coleção em uma única chamada.
Método 1: Adicionar Elementos Individualmente
Use este método quando precisar de controle por elemento, como filtrar ou transformar elementos individuais antes de colocá‑los na página de destino.
- Abra o documento PDF.
- Criar um
GraphicsAbsorbere chamarvisitna página de origem. - Adicionar uma nova página de destino ao documento.
- Chamar
page_2.contents.suppress_updatepara pausar gravações de fluxo de conteúdo. - Chamar
element.add_on_page(page_2)para cada elemento. - Chamar
page_2.contents.resume_updatepara confirmar todas as adições. - Salve o documento modificado.
import aspose.pdf as ap
import sys
from os import path
def add_to_another_page_method_1(infile: str, outfile: str):
with ap.Document(infile) as document:
with ap.vector.GraphicsAbsorber() as graphics_absorber:
page_1 = document.pages[1]
page_2 = document.pages.add()
graphics_absorber.visit(page_1)
page_2.contents.suppress_update()
for element in graphics_absorber.elements:
element.add_on_page(page_2)
page_2.contents.resume_update()
document.save(outfile)
Método 2: Adicionar toda a coleção de uma vez
Use este método quando quiser copiar todos os elementos extraídos para uma página em uma única operação sem iterar manualmente.
- Abra o documento PDF.
- Criar um
GraphicsAbsorbere chamarvisitna página de origem. - Adicionar uma nova página de destino ao documento.
- Chamar
page_2.contents.suppress_updatepara pausar gravações de fluxo de conteúdo. - Chamar
page_2.add_graphicscom o completoelementscoleção. - Chamar
page_2.contents.resume_updatepara confirmar todas as adições. - Salve o documento modificado.
import aspose.pdf as ap
import sys
from os import path
def add_to_another_page_method_2(infile: str, outfile: str):
with ap.Document(infile) as document:
with ap.vector.GraphicsAbsorber() as graphics_absorber:
page_1 = document.pages[1]
page_2 = document.pages.add()
graphics_absorber.visit(page_1)
page_2.contents.suppress_update()
page_2.add_graphics(graphics_absorber.elements, None)
page_2.contents.resume_update()
document.save(outfile)