import os
import re
import fitz
import csv
filenames = os.listdir()
pdf_name=[]
for i in filenames:
if i.find("公开发行证券的公司信息披露内容与格式准则第2号")!=-1:
pdf_name.append(i)
print(pdf_name)
['公开发行证券的公司信息披露内容与格式准则第2号——年度报告的内容与格式(2012年修订).pdf', '公开发行证券的公司信息披露内容与格式准则第2号——年度报告的内容与格式(2016年修订).pdf', '公开发行证券的公司信息披露内容与格式准则第2号——年度报告的内容与格式(2017年修订).pdf', '公开发行证券的公司信息披露内容与格式准则第2号——年度报告的内容与格式(2021年修订).pdf']
def getText(pdf):
text = ""
doc = fitz.open(pdf)
for page in doc:
text += page.get_text()
doc.close()
return(text)
def getSubtext(pdf):
text = getText(pdf)
p1 = re.compile('第二章\s*年度报告正文(.*)第三章\s*年度报告摘要',re.DOTALL)
subtext = p1.search(text).group(0)
return(subtext)
def getTOC(pdf):
subtext = getSubtext(pdf)
p = re.compile('(?<=\\n)(第\w{1,2}节)\s+(.*)(?=\\n)')
listOftuple = p.findall(subtext)
return(listOftuple)
# text_list = [getText(f) for f in pdf]
toc = [getTOC(f) for f in pdf_name]
for i in pdf_name:
toc_print=getTOC(i)
print("年份:",i[-12:-7],"年报目录准则:",toc_print)
def getTOC_content(pdf):
subtext = getSubtext(pdf)
p = re.compile('(?<=\\n)(第\w{1,2}节)\s+(.*)(?=\\n)')
index = []
for match in p.finditer(subtext):
s = match.start()
e = match.end()
index.append((s,e))
content = []
for i in range(len(index)-1):
s = index[i][1]
e = index[i+1][0]
content.append(subtext[s:e])
last_start = index[-1][1]
last_end = subtext.rfind('\n第三章')
content.append(subtext[last_start:last_end])
return((index, content))
#conten=getTOC_content(pdf_name[1])
#print(conten)
list_of_content = [getTOC_content(f) for f in pdf_name]
年份: 2012年 年报目录准则: [('第一节', '重要提示、目录和释义'), ('第二节', '公司简介'), ('第三节', '会计数据和财务指标摘要'), ('第四节', '董事会报告'), ('第五节', '重要事项'), ('第六节', '股份变动及股东情况'), ('第七节', '董事、监事、高级管理人员和员工情况'), ('第八节', '公司治理'), ('第九节', '内部控制'), ('第十节', '财务报告')] 年份: 2016年 年报目录准则: [('第一节', '重要提示、目录和释义'), ('第二节', '公司简介和主要财务指标'), ('第三节', '公司业务概要'), ('第四节', '经营情况讨论与分析'), ('第五节', '重要事项'), ('第六节', '股份变动及股东情况'), ('第七节', '优先股相关情况'), ('第八节', '董事、监事、高级管理人员和员工情况'), ('第九节', '公司治理'), ('第十节', '公司债券相关情况'), ('第十一节', '财务报告'), ('第十二节', '备查文件目录')] 年份: 2017年 年报目录准则: [('第一节', '重要提示、目录和释义'), ('第二节', '公司简介和主要财务指标'), ('第三节', '公司业务概要'), ('第四节', '经营情况讨论与分析'), ('第五节', '重要事项'), ('第六节', '股份变动及股东情况'), ('第七节', '优先股相关情况'), ('第八节', '董事、监事、高级管理人员和员工情况'), ('第九节', '公司治理'), ('第十节', '公司债券相关情况'), ('第十一节', '财务报告'), ('第十二节', '备查文件目录')] 年份: 2021年 年报目录准则: [('第一节', '重要提示、目录和释义'), ('第二节', '公司简介和主要财务指标'), ('第三节', '管理层讨论与分析'), ('第四节', '公司治理'), ('第五节', '环境和社会责任'), ('第六节', '重要事项'), ('第七节', '股份变动及股东情况'), ('第八节', '优先股相关情况'), ('第九节', '债券相关情况'), ('第十节', '财务报告')]
def export_to_html(pdf,toc,content):
f = open('homework2_output_template.html', encoding='utf-8')
html = f.read()
f.close()
template = '<div><h3>%s</h3><p>%s</p></div>'
toc_list = [t[0]+' '+ t[1] for t in toc]
div = [template % (t,c) for (t,c) in zip(toc_list, content)]
div = ''.join(div)
html = html % div
f = open('zuoye3_%s.html' % pdf, 'w',encoding='utf-8')
f.write(html)
f.close()
return()
content_list = [c[1] for c in list_of_content]
for i in range(0,4):
export_to_html(pdf_name[i], toc[i], content_list[i])