首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从纯文本文件中解析文本并使用结果突出显示PDF文件

如何从纯文本文件中解析文本并使用结果突出显示PDF文件
EN

Stack Overflow用户
提问于 2014-09-23 02:11:42
回答 2查看 1K关注 0票数 1

早在2010年,就有人声称自己有能力做到这一点:

http://www.mobileread.com/forums/showthread.php?t=103847

“Kindle将其注释存储在Mobipocket (".mobi")文件中,用于每个文档,并存储在一个名为"My Clippings.txt”的长文本文件中。在这篇文章中,我描述了一个将这些注释与计算机上相应文档的PDF版本同步的系统。

概述

这个系统包含在一个Applescript中,它解析我的剪报文件并控制浏览PDF阅读器。脚本首先解析剪报文件。然后,它搜索剪报并隔离来自kindle上的文档的任何内容,与当前打开的PDF文件(“相关剪报”)的文件名相匹配。然后,脚本遍历每一个相关的剪报,在PDF文档中找到匹配的文本或位置,并在适当的情况下应用高亮或添加注释。最终结果是一个带注释的、可打印的PDF文档,它与kindle上的文档相匹配。

您可以在这里下载脚本:http://dl.dropbox.com/u/2541109/KindleClippings.scpt。在运行脚本之前,请确保更改MyEmail的值以匹配您的发送地址,并验证MyClippingsFile中定义的Kindle挂载点是否正确。你也需要免费浏览PDF阅读器。

要使用它,发送或复制文档文件到您的kindle。记住,kindle支持RTF、DOC、TXT和其他常见的文本格式,它会在内部将它们转换成MobiPocket文件,以便于阅读。做点笔记。然后将刚发送到kindle的相同文档转换成PDF格式,例如使用Mac中的打印到PDF功能。确保文件名保持不变。以浏览方式打开同样的PDF并运行脚本。高光和注释应出现在PDF中。

如果您对此有兴趣,请在这里阅读更多我的博客:不再可用

可悲的是,他的剧本和他的博客都没有了。

你们知道这有可能吗?我一直在寻找这种功能,但哪儿也找不到。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-06 12:09:35

这段代码使用pythonPyMuPDF,工作如下:

代码语言:javascript
复制
import fitz

# the document to annotate
doc = fitz.open("text_to_highlight.pdf")

# the text to be marked
text_list = [
    "first piece of text", 
    "second piece of text",
    "third piece of text"
        ]

for page in doc:
    for text in text_list:
        rl = page.search_for(text, quads = True)
        page.add_highlight_annot(rl)

# save to a new PDF
doc.save("text_annotated.pdf")

最初的‘我的Clippings.txt’应该被操纵,stringr可以工作,但我发现更有用的是在崇高文本中使用多种选择的文本--目标是以text_list的形式列出一个亮点列表。

票数 1
EN

Stack Overflow用户

发布于 2015-03-02 01:34:40

我正在尝试使用Python + Windows宏创建者(我是Win 7用户)来完成这个任务。您可以使用这种方法将文件保存为RTF、DOCX、PDF等。到目前为止,它是相当有效的。首先要注意2件事:

1-‘我的剪报’文件只保存文本和页面,而不是保存页面上的位置(例如,如果您在第15页突出显示“哺乳动物是动物”,它会给出这一行和页码,但是如果第15页上有多个“哺乳动物是动物”,则不可能知道您突出显示的是哪一个)。这是特别坏的,当你强调一个通用的词,如“动物”或“的”。如果你通过按一个词来发表评论,这个词是你能得到的关于评论中所指内容的唯一信息(例如,我按下了“动物”,菜单弹出了,我选择了‘注释’。如果“动物”出现在第15页上20次,我不知道我的评论指的是哪一种)。

2-检索页面上位置的唯一方法是分析*.pds和*.pdt文件,在Kindle的驱动器(“Documents”)中的*.sdr文件夹中。我看不懂这些文件。

在Python中,可以运行一段简单的代码,从“我的剪报”中提取您想要的信息。然后,您可以使用宏创建者自动复制文本并将其注释到PDF (例如,使用Acrobat ),然后保存PDF文件。

以Acrobat为例:

假设我想将我所有的亮点保存到PDF文件中。首先,我将在Python上创建一个*.txt文件,并运行一个脚本将与突出显示相关的所有字符串复制到这个新的txt文件(即突出显示的文本&页码)。下面是这样的代码示例(但是首先,将"My Clippings.txt“文件复制并粘贴到IDE start文件夹中,例如:C:\Python27 27):

代码语言:javascript
复制
#for python 2.7.6
with open('My Clippings.txt','r') as rf:
    with open('My Clippings Output.txt','w') as wf:
        access = 0
        bookTitle = 'Book Title'#put the book file's name as it's written in "My Clippings.txt"
        for x in rf:
            if access == 1:
                wf.write(x)
            if bookTitle in x: 
                access = 1
            #for highlights only, instead of all annotations, include this if statement:
            if (' | Added on ' in x) and ('- Your Note ' in x) or ('- Your Bookmark ' in x):
                access = 0
            if x == '==========\n':
                access = 0

然后,我将创建一个宏来复制“Clippings.txt Output.txt”文件中的页码(它位于放置"My Clippings.txt“文件的同一个文件夹中),粘贴在Acrobat”页面窗口“中,在页面中找到(ctrl+f)字符串,然后按”突出显示“。完成了!

但是Acrobat有一个陷阱,搜索/查找函数的限制是28个字符,所以突出显示的文本不能超过这一点。我还是不知道如何绕过这个限制..。我在这里提出了这个问题,https://superuser.com/questions/884221/how-to-search-and-highlight-long-passages-in-a-pdf-file。为了绕过Acrobat上的28个字符限制,您可以使用“shift”+“右箭头28次”对宏进行编程,然后使用“剪切”代替“复制”。

有许多免费使用和libre宏创建者,只要谷歌和选择一个你最喜欢的。对于Windows,我最喜欢的是普洛弗的宏创造者。如果你对这个过程有任何疑问,你可以在这里发表评论或者下午我。我希望你在这里发表意见,这样我才能改进答案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25985819

复制
相关文章

相似问题

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