我需要用fitz库在python中改变矩形的颜色

0 投票
1 回答
27 浏览
提问于 2025-04-13 12:27

我用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)

撰写回答