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

如何解析纯文本文件中的文本并使用结果突出显示PDF文件,pdf,kindle,Pdf,Kindle,回到2010年,有人声称自己有能力做到这一点: Kindle将其注释存储在每个文档的Mobipocket(“.mobi”)文件中,并存储在一个名为“My Clippings.txt”的长文本文件中。在本文中,我描述了一个将这些注释与计算机上相应文档的PDF版本同步的系统 概述 该系统包含在一个Applescript中,该脚本解析“我的剪报”文件并控制Skim PDF阅读器。该脚本首先解析剪报文件。然后搜索剪报,并分离出kindle上与当前打开的PDF文件名匹配的任何文件(“相关剪报”)。然后,

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

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

概述

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

您可以在此处下载脚本:。在运行脚本之前,请确保更改MyEmail的值以匹配您的发送地址,并验证MyClippingFile中定义的Kindle装载点是否正确。您还需要免费的Skim PDF阅读器

要使用它,请将文档文件发送或复制到您的kindle。记住,kindle支持RTF、DOC、TXT和其他常见文本格式,它会在内部将它们转换为MobiPocket文件,以便于阅读。做一些笔记。然后将刚发送到kindle的同一文档转换为PDF,例如使用“打印到PDF”功能请确保文件名保持不变。在Skim中打开相同的PDF并运行脚本。突出显示和注释应显示在PDF中

如果您对这项工作方式感兴趣,请在我的博客上阅读更多内容: [不再提供]

遗憾的是,他的剧本和他的博客都不存在了


你们知道这是否可行吗?我一直在寻找这种功能,但在任何地方都找不到。

我正在尝试使用Python+Windows宏创建者(我是Win 7用户)来实现这一点。你们可以使用这种方法将文件保存为RTF、DOCX、PDF等。到目前为止,它相当有效。首先注意两件事:

1-“我的剪报”文件只保存文本和页面,它不保存页面上的位置(例如,如果您在第15页突出显示“哺乳动物是动物”,它会给您这一行和页码,但如果在第15页有多个“哺乳动物是动物”,则无法知道您突出显示了哪一个)。当你突出显示一个通用词,如“动物”或“the”时,这一点尤其糟糕。如果你通过按一个词来发表评论,那么这个词是你在该页上得到的关于评论所指内容的唯一信息(例如,我按了“animals”,弹出菜单,我选择了“comment”。如果“animals”“在第15页上出现了20次,我不知道我的评论指的是哪一次)

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

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

以Adobe Acrobat为例:

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

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

Acrobat中有一个陷阱,搜索/查找功能限制为28个字符,因此突出显示的文本不能超过28个字符。我仍然不知道如何绕过这个限制。。。我在这里提出了这个问题。为了绕过Acrobat上的28个字符限制,您可以使用“shift”+“向右箭头28次”对宏进行编程,然后使用“剪切”而不是“复制”


有许多免费使用和自由发挥的宏创作者在那里,只是谷歌和选择一个你最喜欢的。对于Windows,我最喜欢的是Pulover的宏创建者。如果你对这个过程有任何疑问,你可以在这里发表评论或PM我。我希望你在这里发表评论,这样我可以改进答案

这似乎没有回答问题。你说你正在做OP想用Python和宏做的事情,但你没有提供任何Python或宏代码,只是一个警告列表。他问:“你们知道这是否可行吗?我一直在寻找这种功能,但在任何地方都找不到。”如果他问我这个问题,我可以提供一步一步的过程,但是这个过程实现起来非常简单,我不知道写它是否值得(答案会变得越来越大)。顺便说一下,这些警告与该过程的可行性有关——正如我所说的,仅使用“我的剪辑”文件是不可能获得页面位置的。如果Mobileread的人答应了他,那他是在撒谎
#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