一个小工具,PDF的书签
关于书的格式,只知道html与pdf。
html很容易修改内容,pdf则很容易添加注释!
html更多的是记录详细的东西,有的时候怕一修改,他就不完整了。
所以他更适合做参考。
pdf记录的是零散的知识与智慧,你如果不加上点什么东西的话,恐怕就不能真正的了解他。
或许他才能称之为书!
用python做了一个小工具,可以搜索、查看并打开书签(用pdf阅读器打开)
如果有人能把pdf的内容都转化成一个文档class的话,那他应该用不上这个东西
如果有人不想用PyQt的话,或是其他的如果,那他也不用这个东西
事先的说明:
1.需要PyQt与PDFNetC 及python3
2.如果有exception的话,请自行处理,我并不想做过多的解释,我觉得也没有什么是值得解释的,一切都在源码之中
3.因为我用的是PyQt,所以我也向大家推荐一下PyQt,他就像python一样的容易。只需要一本书就足够了!
共有三个文件:dia是UI。model是工具。main是主文件
凡是“#修改点”注释的地方都是你要修改的地方
代码如下:
文件开始:dia.py
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
_fromUtf8 = lambda s: s
#修改点 为model.mulu = r'D:\Books'的子目录
#应根据你的文件夹做调整
books = ['Python','eclipse','Antlr', 'UML', 'Java', 'Android',
'unix','Web', 'C++','面向对象', '算法']
class Ui_Dialog(object):
''' UI '''
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(1278, 743)
self.widget = QWidget(Dialog)
self.widget.setGeometry(QRect(4, 16, 1259, 703))
self.widget.setObjectName(_fromUtf8("widget"))
self.horizontalLayout_3 = QHBoxLayout(self.widget)
self.horizontalLayout_3.setMargin(0)
self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
self.verticalLayout = QVBoxLayout()
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
self.label = QLabel(self.widget)
self.label.setObjectName(_fromUtf8("label"))
self.horizontalLayout.addWidget(self.label)
self.lineEdit = QLineEdit(self.widget)
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.horizontalLayout.addWidget(self.lineEdit)
self.verticalLayout.addLayout(self.horizontalLayout)
self.listWidget = QListWidget(self.widget)
self.listWidget.setObjectName(_fromUtf8("listWidget"))
self.verticalLayout.addWidget(self.listWidget)
self.horizontalLayout_3.addLayout(self.verticalLayout)
self.verticalLayout_2 = QVBoxLayout()
self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
self.label_2 = QLabel(self.widget)
self.label_2.setObjectName(_fromUtf8("label_2"))
self.horizontalLayout_2.addWidget(self.label_2)
self.comboBox = QComboBox(self.widget)
self.comboBox.setObjectName(_fromUtf8("comboBox"))
self.comboBox.setMinimumSize(QSize(221, 16))
global books
for book in books :
self.comboBox.addItem(book)
self.horizontalLayout_2.addWidget(self.comboBox)
spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout_2.addItem(spacerItem)
self.verticalLayout_2.addLayout(self.horizontalLayout_2)
self.textBrowser = QTreeWidget(self.widget)
self.textBrowser.setFont(QFont("Times", 12))
self.textBrowser.setMinimumSize(QSize(891, 703))
self.textBrowser.setMaximumSize(QSize(891, 703))
self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
#self.highlighter = PythonHighlighter(self.textBrowser.document())
self.verticalLayout_2.addWidget(self.textBrowser)
self.horizontalLayout_3.addLayout(self.verticalLayout_2)
self.retranslateUi(Dialog)
QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QApplication.translate("Dialog", "Dialog", None, QApplication.UnicodeUTF8))
self.label.setText(QApplication.translate("Dialog", "<html><head/><body><p>Search</p></body></html>", None, QApplication.UnicodeUTF8))
self.label_2.setText(QApplication.translate("Dialog", "Books ", None, QApplication.UnicodeUTF8))