Python 使用pymupdf进行加密

Python 使用pymupdf进行加密,python,pdf,pymupdf,Python,Pdf,Pymupdf,我想使用Python和pymupdf在pdf文档中标记几个关键字 代码如下所示(源代码:): 但是,文本仅在一页上标记。我试着按照pymupdf()文档中的描述修改代码,使其覆盖所有页面 import fitz doc = fitz.open("test.pdf") for page in doc.pages(1, 3, 1): pass text = "result" text_instances = page.searchFor(text

我想使用Python和pymupdf在pdf文档中标记几个关键字

代码如下所示(源代码:):

但是,文本仅在一页上标记。我试着按照pymupdf()文档中的描述修改代码,使其覆盖所有页面

import fitz

doc = fitz.open("test.pdf")
for page in doc.pages(1, 3, 1):
    pass

text = "result"

text_instances = page.searchFor(text)

for inst in text_instances:
    highlight = page.addHighlightAnnot(inst)
    highlight.setColors(colors='Red')
    highlight.update()


doc.save("output.pdf")

不幸的是,它仍然只在一个页面上标记关键字。我需要更改什么,以便在所有页面上标记关键字?

您的代码有两个主要问题:

  • 压痕
  • 切片的开始是从零开始的
  • 否则,您对代码的理解似乎很好

    for page in doc.pages(1, 3, 1):
        pass
    
    如果要在页面上循环,则需要将突出显示代码放在页面循环中。此外,您从第2页开始,而不是从第1页开始,因为第1页由索引0表示

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import fitz
    
    doc = fitz.open("test.pdf")
    
    text = "result"
    
    # page = doc[0]
    # for page in doc.pages(start, stop, step):
    for page in doc.pages(0, 3, 1):
        text_instances = page.searchFor(text)
    
        for inst in text_instances:
            highlight = page.addHighlightAnnot(inst) 
            highlight.setColors(colors='Red')
            highlight.update()
        
    doc.save("output.pdf")
    

    你的缩进是错误的。此时,保存发生在循环过程中。这意味着最后一个循环将覆盖output.pdf。@Alan我更改了
    pass
    的缩进,因为这个缩进是错误的。你是指这个缩进还是我在缩进时又犯了一个错误?doc.save(“output.pdf”)是
    inst
    loop@Alan你说得对,我上传问题时也错过了那个。然而,它仍然不能正常工作。
    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import fitz
    
    doc = fitz.open("test.pdf")
    
    text = "result"
    
    # page = doc[0]
    # for page in doc.pages(start, stop, step):
    for page in doc.pages(0, 3, 1):
        text_instances = page.searchFor(text)
    
        for inst in text_instances:
            highlight = page.addHighlightAnnot(inst) 
            highlight.setColors(colors='Red')
            highlight.update()
        
    doc.save("output.pdf")