提取论⽂标题并⾃动重命名pdf⽂件
在我们确定⼀个研究课题之后,我们总是会先下载⼀堆相关的paper,看看这个领域现在已经做到⼀个什么地步,也看看别⼈是怎么做的,后⾯⾃⼰写paper的时候可以参考参考。当我们把相关的⽂章都下载到⼀个⽂件夹之后,有⼀个问题,⼀般我们从IEEE或是ACM相关站点下载的PDF⽂件的⽂件名不是相应⽂章的标题。我们希望⽂件名尽量能够反映⽂件的主要内容,⽂章的标题显然是最能概括⽂张内容的。
昨天上午,⼀个⼩时的时间就花在把下载下来的⽂件重命名上了。因为太费时间,想⾃⼰写个简单的⼩程序来完成这个⼯作。上⽹⼀,嗬,这⽅⾯的内容还不少,在stack overflow上⾯就有好⼏个帖⼦。这⼏个帖⼦我都看了,总结⼀下就是完成这个任务的⽅法有很多,可以⽤java来做,也可以python,还有C#,perl什么的都可以做,这些⽅法的⼀个共同点是需要额外的包或者模块来完成这个任务,java需要PDFBox,python需要PyPDF这个模块。
最后我选择的是⽤python来做。这是从简洁性⾓度考虑作出的选择,PyPDF模块的安装⾮常简单,安装之后编写程序也⾮常简单(就像⼀个⼩的脚本),还有python是跨平台的。选java的好处就是我可以将程序打包成EXE⽂件,⾮CS相关专业的学⽣可以会⽐较容易接受这种⽅式。
stackoverflow/questions/911672/extracting-titles-from-pdf-files
上⾯是stack overflow上⾯的相关页⾯。
pybrary/pyPdf/
这是下载pyPdf模块的页⾯,这个模块是作者⼀个⼈维护的,从10年4⽉开始就没有更新了,所以使⽤的Python版本还停留在2.x。
blog.isnotworking/2006/08/extract-pdf-title-from-all-files-on.html
这个页⾯给出了⼀个简答的例⼦。这个例⼦我在Python 2.7下运⾏通过。在3.2和3.3下运⾏报错,都是SyntaxError,3.x和2.x语法上还是存在⽐较⼤的差异的。
⾃动提取标题并重命名的代码如下:
# pyPdf available at pybrary/pyPdf/from pyPdf import PdfFileWriter, PdfFileReader
import os
for fileName in os.listdir('.'):
actfile = file(fileName,"rb")
try:
if fileName.lower()[-3:] != "pdf": continue
input1 = PdfFileReader(actfile)
# print the title of document1.pdf
print'##1', fileName, '##2', DocumentInfo().title()
except:
print'##1', fileName, '##2'
try:
trgtfilename = DocumentInfo().title + "_" + fileName
except:
print"\n## ERROR ## %s Title could not be extracted. PDF file may be encrypted!" % fileName
continue
python可以做什么游戏
del input1
actfile.close()
print'Trying to rename from:', fileName, '\n to ', trgtfilename
try:
except:
print fileName, ' could not be renamed!'
print'\n## ERROR ## Maybe the filename already exists or the document is already opened!'
⼀个问题:Python3.x的寻模块⽅式和之前相⽐好像也有点变化,将PyPDF直接安装在site-packages下,运⾏的example的时候会提⽰不到pdf这个模块,需要使⽤sys.path.add⽅法⼿动加上才⾏,现在还不知道为什么?
PS:当前的这个程序当⽬录下有⽂件夹时会报错!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。