基于Python的文档附件自动转换系统的设计

2021-11-21 19:20叶萍
电子技术与软件工程 2021年18期
关键词:待处理附件文档

叶萍

(常州信息职业技术学院软件与大数据学院 江苏省常州市 213164)

本文旨在实现文档附件自动化转换系统,对于多个文档附件的处理。通过多个不同的方案进行对比,分别在其优缺点、工作流程、操作复杂度等进行多方面解析。此系统可以将多个文档附件进行合并,将所需要内容进行筛选整合,降低文档处理人员工作量,提高了文档处理效率,并减少存储空间和处理时间。

1 现状分析

传统的文档附件处理,都是需要处理者手动进行筛选、识别、添加、删除、合并等操作。其处理方式工程量大,并且会遇到搜索定位复杂、修改内容困难等多个问题。文档处理的需求主要有如下四个方面:

(1)副本内容的同步,文档附件自动转换系统需要实现将副本文档与原文档进行内容同步转换。在操作文档之前需要进行数据备份,在修改原文档内容时,会出现只修改了原来文档的内容,而副本文档内容却没有与原文档同步,这就需要手动去核对和修改,较多的文件进行修改的场景中,给文档处理增加了许多负担。

(2)附件文档的筛选,文档附件的类型有许多种,不同的文档类型在文档附件自动转换系统中需要进行筛选。一般附件文档的文件类型为PDF 文档,所以在设计系统时需要设计文档筛选功能,选出PDF 类型文档。筛选出来的文档中还有可能存在个别所不需要或用不上的文档,需要对这一类文档进行删除操作。

(3)附件文档格式化,在处理文档时,需要进行将每个PDF文档的每一页都转换为图片保存于本地,一是为了做好数据备份,二是为了能够方便使用者将不需要的内容进行修改与删除。在进行附件文档格式化时,还需考虑所保存的图片清晰度、图片的大小、图片的尺寸、图片的格式。

(4)附件文档的整合,将格式化后的文档附件进行整合,首先需要考虑文档页眉页码的添加,其次要考虑如何能够按照顺序将文档逐步的合并,最后需要考虑如何生成一个清晰完整的目录。

对于非功能性需求主要有三个。

(1)存储空间大小,文档附件自动转换系统在实现过程需要进行文档资源备份,而备份操作会将整个项目文档的大小逐渐增大,而减少存储空间大小是我们在设计系统时要仔细考虑如何解决这个问题,一般可以下面从三个方面进行考虑。在进行文档处理之前,就直接筛选保存需要操作的文档,而不操作、不修改的文档可以不进行备份保存。在备份时,将备份文档的清晰度降到最适合的像素,这样保存的备份图片占用的存储空间就会大大减少。可以在存储图片时,使用图片占用存储空间较小的图片格式类型来存储。

(2)系统的及时性,传统文档处理方式需要花费较多的时间,基本上需要以分钟来进行计算。那么系统在处理文档是需要花费的时间一般要以MS(毫秒)来计算是基本要求。处理文档时间花费越小,系统的效率越高。

(3)系统的友好程度,系统的应用性即系统应该要便于用户的使用,使用者不需要太多的学习就可以轻松掌握其使用方法,在与传统文档处理方式相比较下,系统的应该需要做到使用者在处理文档附件过程中尽量少去进行操作,减少一些用户所不必要的操作;可扩展性是系统程序应在未来能添加新的性能、能够进行系统升级、确保维护人员能够修改和优化。所以系统需要有较高的可分析行、可重用性及模块性。可维护性为文档附件的自动转换系统在日后需要进行优化和修复,首先应考虑该系统在维护时的难易程度,其次是考虑该系统能否接受重新改进。

2 解决对策

本文提出了文档附件自动转换的设计方法,系统在传统的文档处理思路上实现自动化,遇到多文档处理时可以通过文档附件自动转换节约大量时间。此方案设计在Ubuntu 操作系统下对基于Python 的文档附件自动转换系统设计与实现,主要可以分为五个模块,分别为PDF 类型模板模块、筛选合并PDF 文档模块、模板与待处理文档合并模块及SHELL 脚本的文件模块。

(1)Shell 脚本模块。该模块是为了方便用户一次性执行多项操作,事先将所要执行命令放到一个文件中,类似于Windows 操作系统下的批处理,而Shell 脚本文件只能在Ubuntu 操作系统或者Unix 操作系统下运行,功能却比Windows 下批处理强大的多。Shell 脚本主要编写内容为筛选所需要的PDF 类型文档附件、设计RST 模板文件、合并模板文件与待处理文档及生成结果文档。此模块编写的脚本文档为shell 类型文件,编写内容主要有四个部分,第一部分为生成一个JSON 文档。第二部分为运行一个 Python 文档生成一个为RST 模板文档和一个合并所有所需处理文档的PDF 类型的待处理文档。第三部分是将RST 文档转换为PDF 类型的模板文档。第四部分为将PDF 模板文档与待处理文档进行合并。

(2)筛选文档模块。主要用来实现将路径下的所有PDF 类型文档进行筛选并写入后缀是“.json”的JSON 文件。JSON 是一种轻量级的数据交换格式,因为JSON 层次结构清晰、简洁明了、便于阅读及编写,而且也易于计算机解析和生成。本系统设计方案基于Python 编程语言,而Python 中的一种基本数据结构就是Dictionary(字典),字典的结构与JSON 的结构非常相近,而且Python 中也有JSON 库可供用户进行两者之间的自动化转换。用 tree 命令生成一个该路径下所有为 PDF 类型文件的json 文件,以完整的路径方式保存。所生成的 JSON 文件主要存放的有多个字典组成的列表,每个字典都有至少两个键值,分别为“type”(存放的是该文件或者文件夹类型)、“name” (该文件名)。JSON 类型文件将其打开后可直接进行编辑,即就可以很方便的将不需要处理的该文档所在的字典中进行删除。

(3)设计模板模块。此模块设计主要运用了reStructuredText轻量级标记语言编写RST 类型的模板文档。用reStructuredText 来进行文档格式编辑是因为它语法简单、运行环境轻量、功能强大,更重要的是它可以将编写的文档内容转换为PDF 类型文档。需要设计两个模板文档,一个是目录模板文档,另一个是标题模板文档。目录模板通过对附件文档格式的考虑,主要对文档附件的目录、标题、章节编号及页码来进行编写设计,模板文件需要实现的目录、页码清晰,最后效果能够一眼识别。标题模板文档需要设计功能图,主要是对内容、标题进行操作。下一步将两个模板文件都设计好以后进行合并,最后再转换为PDF 类型文档,为组合文档模块时做准备。模板文档主要有两个部分,第一部分为目录模板。目录模板主要是对文档的主标题及目录进行编写。使用reStructuredText轻量级标记语言来对目录模板文档的实现生成RST 类型文档。在内容上标与下标都有多个连续的符号(如“=”)为一级标题,即显示的内容样式为一级标题样式。通过:class 对内容添加样式;通过..section-numbering:: 添加章节编号;通过..raw::pdf PageBreak 命令来访问页面模板,cutePage 为页面模板中的样式,其内容为给页面添加页眉页码。第二部分为标题模板的设计,标题模板主要是通过对符号的控制来设编写标题的级别。表示标题的符号有_ 、 * 、 =、 -、`、:、'、"、~、+、 ^、#、<、>,标题可以通过自由组合来进行使用,最多可分为六级。而相同的符号可以通过上标、下标来控制标题级别,使用不同的六个符号的标题依次排列,依次产生的标题为一级标题到六级标题。

最后将模板文档通过rst2pdf 命令将RST 类型文档转为PDF 类型的模板文档。

(4)合并文档模块,主要是将多个需要处理的PDF 类型文档进行合并,生成一个待处理的PDF 类型文档,为组合文档模块做准备。该模块需分两个操作,第一个操作是对于Word 文档内容整合模块的实现,首先需要创建一个模板文件,并对其进行页眉、页脚、样式的设计,先使用 Python 中的docx 库中的Document 类将模板文件打开,再使用clear 类来把模板Word 文档里面所都段落内容都进行清 除(clear 类仅删除内容,不删除样式),这样做是为了在对 Word 文档进行操作 时避免出现不必要的问题。使用add_paragraph 方法添加一个段落,内容为待处理 PDF 文档的文件名,使用style 属性给段落添加样式。再add_picture 方法将 图片插入文档内,用inches 属性来设置图片的大小。还需要解决word 文档生成目录问题,需要oxml 类中的 OxmlElement 方法和qn 方法进行目录的生成。

第二个操作主要是生成一个PDF 类型结果文档,为组合文档模块做准备的待处理文档,实现步骤主要有四个步骤。第一步运用Python 中的json 库的load 方法将json 文件转换为有多个字典组成的列表;第二步通读取每个字典的“type”来判断文件类型;第三步若是文件类型是文件夹则继续循环访问文件夹内文件,直到为类型为文档后再将文档进行合并;第四步生成一个待处理的文档附件。

(5)组合文档模块,此模块主要实现模板文件与待处理文档进行组合,然后输出PDF 类型的结果文档,解决了在需求分析中所提出的附件文档整合的问题。主要分为四个部分,第一部分是获取模板文件与待处理文档页码;第二部分是缩小待处理文档页面,主要是为了后期将两个文档组合时不出现内容覆盖;第三部分是将文档附件与模板进行组合;第四部分是将结果文档进行输出展示。主要是将模板文档与待处理文档相组合,再生成一个最后的结果文档。该模块主要分成四个主要步骤,第一步是通过Python 中pdfrw库的PdfReader类将两个文件打开,再通过pages的方法来获取页码;第二步是通过scale 方法将待处理的文档页面按比例缩放;第三步是用PageMerge 类将模板文件也待处理文档附件进行页面组合;第四步用PdfWriter 类将组合后的文档进行生成输出。

本文所设计的基于Python 的文档附件自动转换系统系统,在与传统文档处理方式相比较下,该系统做到使用者在处理文档附件过程中尽量减少重复性操作,并从根本意义上实现了文档处理部分流程的“自动化”。

3 结束语

文档附件自动转换系统是用程序自动实现文档处理操作。从执行效率来看,传统文档附件处理方式时间较长,处理者工作量大、出错率高,而文档附件自动转换系统则只需处理者点击启动,等待自动化文档结果的生成。从花费时间来看,传统文档附件处理方式需要花费大量时间去执行重复性操作,比如打开多个文件、复制文档内容、筛选文档标题名、保存内容于本地等,这些重复性操作浪费了大量时间。文档附件自动转换系统使用计算机对重复性操作进行自动化处理;从执行效果来看,传统文档附件处理方式,结果文档会有较多的错误,比如图片大小不一、内容顺序颠倒等,文档附件自动转换系统是由计算机按照统一的逻辑和规则进行处理,会大大减少上述问题,并能将最后输出的文档整理的更美观。

猜你喜欢
待处理附件文档
浅谈Matlab与Word文档的应用接口
附件三:拟制定的标准汇总表
有人一声不吭向你扔了个文档
财产清查结果的账务处理
关于TSG 07——2019附件M与TSG Z0004——2007内容的对照
附件 注释体例
基于RI码计算的Word复制文档鉴别
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat