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

更新 statistics.py

上级 7a07243a
......@@ -17,44 +17,54 @@ project_id = sys.argv[3]
# ci_job_token
token = sys.argv[4]
# 取得docx文档的页数、字数和字符数的数据
document = zipfile.ZipFile(sys.argv[1])
dxm1 = document.read('docProps/app.xml')
uglyxml = xml.dom.minidom.parseString(dxm1)
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
else:
character_count = find_character[0].childNodes[0].nodeValue
# 如果取得的docx文件页数不大于1,那么可能是统计数据有问题,将docx转换成pdf后,再取pdf的页数
if int(page_count) <= 1:
# 执行命令,将文件转换成pdf
convert_pdf = "soffice --headless --convert-to pdf " + "\"" +sys.argv[1] + "\""
os.system(convert_pdf)
filename, ext_name = os.path.splitext(sys.argv[1])
pdf_filename = filename + ".pdf"
if os.path.exists(pdf_filename):
gvn_file = open(pdf_filename, 'rb')
pdf_read = PyPDF2.PdfFileReader(gvn_file)
page_count = pdf_read.numPages
# 取得docx文档的表格数
mydocx = docx.Document(sys.argv[1])
table_count = len(mydocx.tables)
# 取得docx文档的图片数
# 通过调试查看target_ref,发现图片在文档中会设置一个形如imageX的默认名
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
# 此处增加空文件的判断
try:
mydocx = docx.Document(sys.argv[1])
# 如果成功打开文档,则所需的包存在
# 取得docx文档的页数、字数和字符数的数据
document = zipfile.ZipFile(sys.argv[1])
dxm1 = document.read('docProps/app.xml')
uglyxml = xml.dom.minidom.parseString(dxm1)
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
else:
character_count = find_character[0].childNodes[0].nodeValue
# 如果取得的docx文件页数不大于1,那么可能是统计数据有问题,将docx转换成pdf后,再取pdf的页数
if int(page_count) <= 1:
# 执行命令,将文件转换成pdf
convert_pdf = "soffice --headless --convert-to pdf " + "\"" +sys.argv[1] + "\""
os.system(convert_pdf)
filename, ext_name = os.path.splitext(sys.argv[1])
pdf_filename = filename + ".pdf"
if os.path.exists(pdf_filename):
gvn_file = open(pdf_filename, 'rb')
pdf_read = PyPDF2.PdfFileReader(gvn_file)
page_count = pdf_read.numPages
# 取得docx文档的表格数
table_count = len(mydocx.tables)
# 取得docx文档的图片数
# 通过调试查看target_ref,发现图片在文档中会设置一个形如imageX的默认名
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 = {
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论