把pdf文件批量转成docx文件
本文作者:李朋冲
文字编辑:李钊颖
技术总编:李春涛
前几天,室友问我,可不可以批量把pdf文件转换成docx文件?我说当然可以,使用Stata中的wordconvert命令就可以轻松搞定!
以上工作都做好了之后,我们即可使用wordconvert命令来转换pdf文件了。首先安装该命令:
ssc install wordconvert, replace
wordconvert的语法非常简单:
wordconvert old_file.extension new_file.extension, [options]
其中:
old_file.extension指的是需要转换的文件,new_file.extension指的是要转换成的文件,文件格式参见上文。
选项只有两个:replace和encoding(),如果需要转换的文件中有中文字符或者文件名中有中文,我们一般使用encoding(gb2312)。
我们先从The National Bureau of Economic Research(网址:https://www.nber.org/)上下载3篇最新的working paper,作为我们转换的素材文件。
clear
cap mkdir e:/wordconvert/
cd e:/wordconvert/
forvalues i = 26135/26137{
copy "https://www.nber.org/papers/w`i'.pdf" w`i'.pdf, replace
}
首先对w26135.pdf进行转换,程序如下:
wordconvert "w26135.pdf" "w26135.docx", replace
shellout w26135.docx
因为这个文件的文件名以及文件里面都没有中文字符,所以我们没有加“encoding(gb2312)”的选项。我们打开docx文件可以看到,除了一些模型公式的格式不太准确之外,其他的诸如正文、表格等内容都转换得很好。
通过以上程序,我们对一个pdf文件进行了转换。基于同样的方法,只需获得当前路径下所有pdf文件的名称,然后使用循环,即可批量转换pdf文件。
我们使用宏扩展函数获得当前路径下所有的pdf文件名称,然后批量处理,程序如下:
clear
local file: dir "." files "*.pdf"
foreach file in `file'{
wordconvert "`file'" "`file'.docx", replace
}
最后,我们确实是把pdf文件批量转换成了docx文件,但看到docx文件的名称,相信大家也不会很满意:
文件名中包含了“.pdf”,这并不是我们想要的。至于为什么会出现这种情况,是因为使用宏扩展函数得到的文件名称,本身就包含“.pdf”,在循环里,我们又在它后面加上了“.docx”:
clear
local file: dir "." files "*.pdf"
di `file'
我们需要在批量处理之前,把“.pdf”去掉,使用filesearch命令来实现这个目的。filesearch命令的用法,我们在推文《筛选文件利器——filesearch命令》中有过介绍。使用strip选项即可删除检索结果中符合匹配模式的部分,在此需要匹配的是文件名结尾处的“.pdf”,注意要加上regex选项,因为我们使用“$”来匹配末尾位置。首先将以上docx文件删除:
filesearch *.docx
foreach x in `r(filenames)'{
erase `x'
}
在获得文件名时,strip选项就可以把“.pdf”删除掉,程序和截图如下:
clear all
filesearch \.pdf$, strip regex
foreach x in `r(filenames)'{
wordconvert "`x'.pdf" "`x'.docx", replace
}
我们看到,最后转换成的docx文件的名称中,已不再含有“.pdf”。filesearch的这个功能,相信大家在把xlsx文件批量导入Stata进而生成dta文件时,一定用得到。
以上就是使用wordconvert命令批量转换pdf文件的介绍,大家如果有需要的话,不妨使用一下这种方法!
对爬虫俱乐部的推文累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫!
往期推文推荐
字符串的小帮手之ascii()、str()和repr()函数
万般进制千机变,Python一计乾坤定——利用Python来进行进制转换
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。