查看原文
其他

把pdf文件批量转成docx文件

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:李朋冲

文字编辑:李钊颖

技术总编:李春涛

重磅!!!爬虫俱乐部将于2019年10月2日至10月5日在湖北武汉举行Python编程技术培训,本次培训采用理论与案例相结合的方式,旨在帮助零基础学员轻松入门Python,由浅入深学习和掌握Python编程技术,尤其是爬虫技术和文本分析技术。该培训目前在火热招生中,点击《爬虫俱乐部2019十一Python编程技术培训报名啦!》,了解培训详细信息,抓紧时间报名吧!另外,2019年8月22日至28日在湖北武汉举行的Stata编程技术培训,高级班招生已经结束,初级班仅剩几个名额感兴趣的同学可打开爬虫俱乐部往期推文——《爬虫俱乐部2019暑假stata编程训练营报名啦!报名,不要错过机会哦! 

前几天,室友问我,可不可以批量把pdf文件转换成docx文件?我说当然可以,使用Stata中的wordconvert命令就可以轻松搞定!

wordconvert是爬虫俱乐部推出的一个命令,它通过调用PowerShell和Microsoft Word实现rtf、doc、dot、docx、pdf 以及xps格式文件的相互转换。
在使用wordconvert命令之前,首先要配置一下Powershell,把PowerShellExecutionPolicy设置为RemoteSigned,具体可参考推文《朝花夕拾 | 如何解决PowerShell禁止脚本运行的问题?》;配置完成以后,将PowerShell所在的路径添加到环境变量中,具体的方法,我们在《爬虫俱乐部又出新命令了——wordconvert转换你的word文件也有非常详细的介绍。

 

以上工作都做好了之后,我们即可使用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,作为我们转换的素材文件。

clearcap 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", replaceshellout w26135.docx

因为这个文件的文件名以及文件里面都没有中文字符,所以我们没有加“encoding(gb2312)”的选项。我们打开docx文件可以看到,除了一些模型公式的格式不太准确之外,其他的诸如正文、表格等内容都转换得很好。


通过以上程序,我们对一个pdf文件进行了转换。基于同样的方法,只需获得当前路径下所有pdf文件的名称,然后使用循环,即可批量转换pdf文件。

我们使用宏扩展函数获得当前路径下所有的pdf文件名称,然后批量处理,程序如下:

clearlocal file: dir "." files "*.pdf"foreach file in `file'{ wordconvert "`file'" "`file'.docx", replace }

最后,我们确实是把pdf文件批量转换成了docx文件,但看到docx文件的名称,相信大家也不会很满意:

文件名中包含了“.pdf”,这并不是我们想要的。至于为什么会出现这种情况,是因为使用宏扩展函数得到的文件名称,本身就包含“.pdf”,在循环里,我们又在它后面加上了“.docx”:

clearlocal file: dir "." files "*.pdf"di `file'

我们需要在批量处理之前,把“.pdf”去掉,使用filesearch命令来实现这个目的。filesearch命令的用法,我们在推文《筛选文件利器——filesearch命令》中有过介绍。使用strip选项即可删除检索结果中符合匹配模式的部分,在此需要匹配的是文件名结尾处的“.pdf”,注意要加上regex选项,因为我们使用“$”来匹配末尾位置。首先将以上docx文件删除:

filesearch *.docxforeach x in `r(filenames)'{ erase `x'}

在获得文件名时,strip选项就可以把“.pdf”删除掉,程序和截图如下:

clear allfilesearch \.pdf$, strip regexforeach x in `r(filenames)'{ wordconvert "`x'.pdf" "`x'.docx", replace }

我们看到,最后转换成的docx文件的名称中,已不再含有“.pdf”。filesearch的这个功能,相信大家在把xlsx文件批量导入Stata进而生成dta文件时,一定用得到。

以上就是使用wordconvert命令批量转换pdf文件的介绍,大家如果有需要的话,不妨使用一下这种方法


对爬虫俱乐部的推文累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫!

往期推文推荐

       格式化字符串方法的比较

 字符串的小帮手之ascii()、str()和repr()函数

 朝花夕拾—— 如何输出内存中的矩阵与绘图

 朝花夕拾——putdocx批量输出变量观测值

        爬虫俱乐部2019十一Python编程技术培训报名啦!
        Stata16新功能——定义图形元素的绝对大小
        添加docx内容哪家强,Stata16新命令帮你忙
       将数值型计算“一网打尽”——(1)
       将数值型计算“一网打尽”——(2)
        Stata16新功能之“框架”——读入多个数据集(1)
 Stata16新功能——同一个文档,不一样的布局
 手持Python,斗图不输!

 万般进制千机变,Python一计乾坤定——利用Python来进行进制转换

        朝花夕拾——cnstock与cntrade强强联合

关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。


此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存