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

更新 statistics.py

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