首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

用pymupdf
EN

Stack Overflow用户
提问于 2021-04-15 19:10:27
回答 1查看 292关注 0票数 0

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

代码如下(源代码:原码):

代码语言:javascript
运行
复制
import fitz

doc = fitz.open("test.pdf")

page = doc[0]

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")

但是,文本只在一页上标记。我试着修改pymupdf (文档)文档中描述的代码,这样它就可以对所有页面进行切片。

代码语言:javascript
运行
复制
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")

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-15 20:43:35

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

  1. 压痕
  2. 切片的开始是基于零的。

否则,您对代码的理解似乎是很好的。

代码语言:javascript
运行
复制
for page in doc.pages(1, 3, 1):
    pass

如果要在页面上循环,则需要将突出显示代码放在页面循环中。此外,您从第2页开始,而不是从第1页开始,因为第1页由索引0表示。

代码语言:javascript
运行
复制
#! /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")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67114704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档