提交 1d01e5ff 创建 作者: Administrator's avatar Administrator

更新 statistics.py

上级 7a07243a
...@@ -17,22 +17,27 @@ project_id = sys.argv[3] ...@@ -17,22 +17,27 @@ project_id = sys.argv[3]
# ci_job_token # ci_job_token
token = sys.argv[4] token = sys.argv[4]
# 取得docx文档的页数、字数和字符数的数据 # 此处增加空文件的判断
document = zipfile.ZipFile(sys.argv[1]) try:
dxm1 = document.read('docProps/app.xml') mydocx = docx.Document(sys.argv[1])
uglyxml = xml.dom.minidom.parseString(dxm1) # 如果成功打开文档,则所需的包存在
page_count = uglyxml.getElementsByTagName('Pages')[0].childNodes[0].nodeValue
# 这个字符数将一个汉字做为一个字符,将一个字母做为一个字符 # 取得docx文档的页数、字数和字符数的数据
# 先取Characters如果没有,就用CharactersWithSpaces document = zipfile.ZipFile(sys.argv[1])
# 测试时如果用libreoffice打开docx文件后保存,选择”Use Microsoft Word 2007-2013 XML Format“后,图片可以正常统计数量,但是app.xml文件中只有CharactersWithSpaces参数,没有Characters参数 dxm1 = document.read('docProps/app.xml')
find_character = uglyxml.getElementsByTagName('Characters') uglyxml = xml.dom.minidom.parseString(dxm1)
if not find_character: page_count = uglyxml.getElementsByTagName('Pages')[0].childNodes[0].nodeValue
# 这个字符数将一个汉字做为一个字符,将一个字母做为一个字符
# 先取Characters如果没有,就用CharactersWithSpaces
# 测试时如果用libreoffice打开docx文件后保存,选择”Use Microsoft Word 2007-2013 XML Format“后,图片可以正常统计数量,但是app.xml文件中只有CharactersWithSpaces参数,没有Characters参数
find_character = uglyxml.getElementsByTagName('Characters')
if not find_character:
character_count = uglyxml.getElementsByTagName('CharactersWithSpaces')[0].childNodes[0].nodeValue character_count = uglyxml.getElementsByTagName('CharactersWithSpaces')[0].childNodes[0].nodeValue
else: else:
character_count = find_character[0].childNodes[0].nodeValue character_count = find_character[0].childNodes[0].nodeValue
# 如果取得的docx文件页数不大于1,那么可能是统计数据有问题,将docx转换成pdf后,再取pdf的页数 # 如果取得的docx文件页数不大于1,那么可能是统计数据有问题,将docx转换成pdf后,再取pdf的页数
if int(page_count) <= 1: if int(page_count) <= 1:
# 执行命令,将文件转换成pdf # 执行命令,将文件转换成pdf
convert_pdf = "soffice --headless --convert-to pdf " + "\"" +sys.argv[1] + "\"" convert_pdf = "soffice --headless --convert-to pdf " + "\"" +sys.argv[1] + "\""
os.system(convert_pdf) os.system(convert_pdf)
...@@ -44,18 +49,23 @@ if int(page_count) <= 1: ...@@ -44,18 +49,23 @@ if int(page_count) <= 1:
pdf_read = PyPDF2.PdfFileReader(gvn_file) pdf_read = PyPDF2.PdfFileReader(gvn_file)
page_count = pdf_read.numPages page_count = pdf_read.numPages
# 取得docx文档的表格数 # 取得docx文档的表格数
mydocx = docx.Document(sys.argv[1]) table_count = len(mydocx.tables)
table_count = len(mydocx.tables)
# 取得docx文档的图片数 # 取得docx文档的图片数
# 通过调试查看target_ref,发现图片在文档中会设置一个形如imageX的默认名 # 通过调试查看target_ref,发现图片在文档中会设置一个形如imageX的默认名
dict_rel = mydocx.part._rels dict_rel = mydocx.part._rels
for rel in dict_rel: for rel in dict_rel:
rel_info = dict_rel[rel] rel_info = dict_rel[rel]
if "image" in rel_info.target_ref: if "image" in rel_info.target_ref:
image_count += 1 image_count += 1
except docx.opc.exceptions.PackageNotFoundError:
# 如果出现PackageNotFoundError异常,则所需的包不存在
os.system(sys.argv[1] + "是空文件")
# 为了在任务信息板中展示
page_count = 1
# 准备向接口发送的参数 # 准备向接口发送的参数
data = { data = {
'project_id': project_id, 'project_id': project_id,
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论