有没有什么软件可以管理PDF书签?

使用场景:经常需要翻PDF的书籍,有时候某一页有重要内容的,我会加书签,久而久之,我希望之前这些加过PDF书签,能够可以检索,或者能够分类之类的;并且点击书签能够自动打开这个书签所在PDF的所在页。

之前有在站内搜索到Zotero,是文献管理软件,但总觉得太繁琐了,实际并没有用到那么多功能,上手也难。

各位大神有没有接触过相关软件,望推荐。

可以导出为 txt 文件,在命令行使用软件: pdftk

# 导入 test.pdf,导出书签为 test.pdf.txt
pdfk {test.pdf} dump_data_utf8 output {test.pdf.txt}

# 使用书签 test.pdf.txt 与 PDF 文件 test.pdf 生成新的 pdf -> "new.pdf"
pdftk {test.pdf.txt} update_info_utf8 {test.pdf} output {new.pdf}


检索,分类,是文件管理方面的问题,在命令行下可以使用 find, grep, egrep,等命令勉强实现。

比如将其中的文本放到其他位置,如 “第2章 编码与组合”放到家目录的 计组.txt 中,那么当要找类别为“计组”相关的 PDF 时,顺序是,通过“计组.txt ”找到书签内容,通过书签内容去用 grep 遍历所有的书签文件,就能找到对应的 PDF 位置(书签名与PDF文件名相同),使用 grep 的 -C, -A -B 选项显示与书签内容相关的前后几行,也就找到了对应页码,书签层级。 :laughing:

用户自行创建的标记的通用名称应该是“注释”,sumatrapdf都能做。。。
点击跳转就加收藏夹

您好!您的方法的确能实现检索汇总功能,汇总之后我是希望能够点击某个书签,就能自动打开这个PDF的某一页。不知道是否好实现?

打开指定 PDF 的指定页需要 PDF 处理软件的支持,但是在打开后或许也只能预览,不能编辑。

使用 firefox 或 chrome:

打开 test.pdf 定位在 150 页:firefox.exe file:///E:/Books/test.pdf#page=150

为了方便在终端中操作,有必要写个脚本,但终端中的路径与 windows 的路径不同,

对于 cygwin shell,获得当前位置的 Windows 上的路径:

cygpath -w ~

但是不会写 shell 脚本,所以用 python 写了下:

pdft.py

#!/cygdrive/c/Users/god/AppData/Local/Programs/Python/Python39/python.exe
# python 的路径要指定,不然就是用 shell 中的 python,而 shell 中的 python 在运行 os.getcwd() 时得到的路径与 windows 不同
# 打开 pdf 并定位到指定的位置

import os
import sys
from sys import exit # 为了打包成 exe 时 exit() 不报错,https://stackoverflow.com/questions/45066518/nameerror-name-exit-is-not-defined

# 空格要加双引号,只给驱动盘符后面的路径加,不然运行报错 'C:\\Program' is not recognized as an internal or external command,
firefox = r'C:\\"Program Files\\Mozilla Firefox\\firefox.exe"'

# 或者将 firefox 的快捷方式放在一个没有空格的路径下
#firefox = r'C:\\WinRunLnk\\ff.lnk'

pth = os.getcwd()
pdf = sys.argv[1]

if pdf == '-h' or pdf == '--help': 
  print('Usage: pdft {pdf_path_without_space} page_number')
  exit(0)

page = sys.argv[2]

cmd = fr'{firefox} "file:///{pth}/{pdf}#page:{page}"'

print(cmd)

os.system(cmd)

跳转到 test.pdf 的第 150 页, ./pdft.py test.pdf 150
跳转到 tes t.pdf的第 150 页,./pdft.py tes\ t.pdf 150


iPad 上有一个管理书签的软件 margin notes。

file:///E:/Book/test.pdf#page:52 这样的地址,在 firefox 中输入不能直接定位对应的页面,只打开了 PDF 的首页。似乎只能在用类似 firefox file:///E:/Book/test.pdf#page:52 打开 firefox 时,才能定位。

所以,把书签添加到浏览器再分类貌似不可行。

不理解。

下图这种纸质书中我们叫 目录 的,在多数pdf中都叫书签


有没有一种可能,加收藏夹我是在sumatrapdf后面说的,所以这个收藏夹是在说sumatra里的功能
image

我直接存浏览器书签了,用了您的代码,发现还是满足要求的。谢谢~