我需要用fitz库在python中改变矩形的颜色
我用Fitz库在Python中写了这段代码,我想要改变矩形的颜色。为此,我访问了填充部分,但它没有改变。如果有人能帮我就好了。
我试着用这段代码,但你们帮我改的没有效果。
import fitz
Ruta del archivo PDF
pdf_path = "rectangulos.pdf"
Abrir el archivo PDF
pdf_document = fitz.open(pdf_path)
Recorrer cada página del PDF
for page_number in range(len(pdf_document)):
Obtener la página actual
page = pdf_document[page_number]
page_drawings = page.get_drawings()
for drawing in page_drawings:
if drawing['items'][0][0] == 're':
drawing['fill'] = (1, 1, 1)
Guardar los cambios en un nuevo archivo PDF
output_pdf_path = "rectangulos_modificados.pdf"
pdf_document.save(output_pdf_path)
print("¡Se ha modificado el color de todos los rectángulos a rojo en el archivo PDF!")]</kbd>`
1 个回答
0
这个问题主要是关于page.get_drawings()
返回的内容,它其实就是一个字典的列表(你可以查看fitz文档)。简单来说,修改一个字典只会影响这个字典本身,不会对页面或fitz对象产生其他影响。如果你想创建一个修改过的版本,就需要修改一个fitz的页面对象(可以是从现有的pdf_document中获取,或者创建一个新的fitz对象)。下面是一个简单的例子,展示如何在页面上添加一个形状:
for page in pdf_document:
shape = page.new_shape()
shape.drawRect(fitz.Rect(x0, y0, x1, y1))
shape.finish(fill=(1, 1, 1))
shape.commit() # Apply the changes to the page
注意这里有一个很重要的commit
,它是用来将对形状的修改应用到属于页面对象的形状上。你应该利用现有的形状来帮助确定新形状的几何形状。希望这能给你指明方向!继续创造吧 =)
我还假设正确格式的代码是下面这样的:
import fitz
# Ruta del archivo PDF
pdf_path = "rectangulos.pdf"
# Abrir el archivo PDF
pdf_document = fitz.open(pdf_path)
# Recorrer cada página del PDF
for page_number in range(len(pdf_document)):
# Obtener la página actual
page = pdf_document[page_number]
page_drawings = page.get_drawings()
for drawing in page_drawings:
if drawing['items'][0][0] == 're':
drawing['fill'] = (1, 1, 1)
# Guardar los cambios en un nuevo archivo PDF
output_pdf_path = "rectangulos_modificados.pdf"
pdf_document.save(output_pdf_path)