Skip to content
项目
群组
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
统计
统计docx文档信息
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
静态页
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
系统群组
开源项目
统计docx文档信息
提交
1d01e5ff
提交
1d01e5ff
8月 04, 2023
创建
作者:
Administrator
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新 statistics.py
上级
7a07243a
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
48 行增加
和
38 行删除
+48
-38
statistics.py
statistics.py
+48
-38
没有找到文件。
statistics.py
浏览文件 @
1d01e5ff
...
...
@@ -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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论