标题 | 基于C#语言实现word文档转pdf文档 |
范文 | 苟博文 摘要:该文主要探讨基于C#语言实现将word文档转换为pdf文档,并对分析了其转换性能和在小微企业数据化决策系统中的应用问题。 关键词:C#语言;word文档;pdf文档 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)35-0133-03 Implementation of Word Document to PDF Document Based on C# Language GOU Bo-wen (Department of information science and technology, School of tourism and culture, Yunnan University, Lijiang 674100, China) Abstract: This paper mainly discusses the conversion of word document to PDF document Based on C# language, and analyzes its conversion performance and application in small and micro enterprise data decision making system. Key words: C# language; word document; PDF document 在计算机技术的高速发展得当今,网上资料的购买,下载已经变得越来越普遍,但是很多时候用户不知道自己下载的数据或者资料是否符合自己所需,用户只能凭资料标题臆想资料的内容,为了解决这个问题,实现网络在线的预览资料内容,这样极大的让用户确定了这份资料是否是自己想要的,然后用户就可以根据自己意愿来确定是否购买并下载这份数据。目前网络上下载的比较多的就是word文档,但是网页上无法直接放置word文档,所以用户无法再网络上预览,必须将word文档转换为pdf或者html文档,才能放置在网页上供用户预览,所以本文所决绝的问题有很大的使用价值。 1 决策支持系统的技术难题 在此系统中,因为采用了预览后付费下载模式,所以这给编码实现带来一个一个难题,因为分析师分析完后,会存成一份word文件,但是网页是不能直接显示word文件的,所以需要将word文件转为pdf文件或者html等能在网页加载的文件,所以需要将word文件转换成pdf或者html文件。这样用户就可以直接在网页上预览一部分。本次实现基于C#语言操作word文档将其转换为pdf正是解决了这个问题。 2 word转PDF现状 将word文件转换为PDF目前在不同的编程语言下有不同的处理方式,下面就举java和C#这两种编程语言为例,来谈谈这个问题。 首先是java语言操作word转pdf,java与语言作为一门面向对象语言是十分强大的,如果要是使用java语言操作word转pdf的话,有三种方法,第一种是首先下载Itext的相关的包和poi相关的包,首先利用poi的包中的类将word文件转换为Html文件,在这个过程中要注意word文件中的图片保存问题,还有老版以doc结尾的word文件和新版以docx结尾的文件的转换方式不同,需要编写不同的代码,其次再利用Itext相关的包将html文件转换为PDF文件,在这个过程中要注意html代码中的endTag问题,还有中文问题,因为默认的Itext是不支持中文的,尽管你这些都注意了,你转换出来的pdf文件和原word文件的格式还是会有偏差,而且明显,第二种是利用openoffice服务和jodconverter包通过操作openOffice服务转换,缺点:会占用100M左右的内存,比较消耗硬件资源,复杂格式容易出错。第三种jacob + msOfficeWord + SaveAsPDFandXPS格式保存完美,但是效率较慢。 其次是C#语言操作word转pdf文件,应为C#语言是微软主导的编程语言,而且office也是自家的产品,所以在这方面有天然的优势,只需添加Microsoft.Office.Interop.Word的引用即可实现word转pdf,而且不存在doc结尾的文件和docx结尾的文件兼容的问题,而且格式保存较好。而且转换一份8页的有多图片和表格word文档只需3s左右。 3 基本接口 首先在word转pdf中,有这么几个接口:WordToPDF_auto(string sourcePath, string targetPath),WordToPDF_manual(String sourcePath,String targetPath,int startPage,int endPage),isWord(String Source)。 3.1 WordToPDF_auto(string sourcePath, string targetPath)接口 這个接口就是当用户输入word的路径,和要保存的文件路径,然后就会将word文档全部转换为pdf文档。 3.2 WordToPDF_manual(String sourcePath,String targetPath,int startPage,int endPage)接口 这个接口是用户只需输入word文档的源路径和输出pdf的目标路径和转换的开始页和结束页,就将指定的word开始页到word结束页的内容转换为pdf。 3.3 isWord(String sourcePath)接口 这个接口是是根据用户输入的文档路径来读取文件并判断文件是否是word文件。 4 基本处理逻辑 4.1 Word转pdf(自动)的处理逻辑 1) 在程序里添加微软的和word相关的com组件。 2) 然后在程序里增Microsoft.Office.Interop.Word的引用。 3) 首先将系统的word进程杀掉。 4) 然后更具用户输入的word文件源路径来判断文件的后缀是否为doc或者docx来判断文件是否是word文件。 5) 然后创建Microsoft.Office.Interop.Word.Application对象,根绝这个对象来创建Document对象,然后使调用计算word的页数如果文档页数低于1页直接返回false,如果大于一页,则调用document.ExportAsFixedFormat(targetPath, WdExportFormat.wdExportFormatPDF)方法将文档转换成pdf文档到目标路径。如果转换失败就会打印异常信息。 6) 最后再调用Document对象的close()方法关闭Document和调用Microsoft.Office.Interop.Word.Application。 4.2 Word转pdf(手动)的处理逻辑 手动控制转换的就是在自动的基础上增加了用户对转换内容的控制,可以控制转换的起始页和结束页,还增加了用户输入的起始页和结束页的判断。判断输入的起始页是否大于文档的总页数,如果大于发挥false,否则再继续判断用户输入法人结束页是否大于文档的中页数,如果大于返回false。 5 转换效率分析 5.1 自动转换效率分析 为了知道自动转换效率,做了一个转换测试,给定一个800多KB的包含有比较复杂的word像是的文件,来通过此程序进行转换测试,分别采集了10次转换,50次转换,和100次转换的数据如下表。 经过测试时发现转换一份800多kb的有复杂格式和图片的word文件,所需的时间稳定在3s左右,建议使用时分析师在上传后立即转换,用户在查看是就可以直接查看pdf文件,符合系统的需要。 5.2 手动转换效率分析 为了知道手动转换的效率,分别做了10次转换,50次转换和100次转换的测试并采集到其数据如表4。 由这些数据可以看出,转换效率稳定保持在2.7秒左右符合系统的需要。 6 实际转化控制 在项目中因为使用的是预览模式,所以在系统中需要使用手动转换,即控制转换的页数,只转换为客户一部分预览,如果客户需要查看全部,则可付费后直接下载word文档。 但是由于word文档转pdf文档需要耗费大量的硬件资源所以在实际应用中不得不做好以下几点: 1) 由于word文档转pdf文档需要消耗大量硬件资源,建议提高硬件配置。 2) 如果多人同时预览,用户的等待时间就比较长,建议在分析师上传word文件就立即转换,留出足够的转换时间。 3) 做好文件转换后的文件资源释放和word线程管理,防止转换效率变低。 7 结束语 本文提出的采用基于C#语言的实现word文档转pdf文档的设计,解决了word文档的内容在网页预览,而且還保留了word文档的样式,有利于网页在线浏览资料的发展,而且会节省用户大量的时间和金钱,具有很大的社会价值。 参考文献: [1] 微软开发者文档[EB/OL]. (2017-11-10). https://msdn.microsoft.com/library/microsoft.office.tools.word.document.exportasfixedformat(v=vs.100).aspx. [2] karli Watson. Christian Nagel C#入门经典[M]. 北京: 清华大学出版社, 2006. [3] RB Whitaker The C# Player's Guide[Z]. Starbound Software, 2012. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。