CN111797056B - 一种矢量化家谱书生成方法及系统 - Google Patents

一种矢量化家谱书生成方法及系统 Download PDF

Info

Publication number
CN111797056B
CN111797056B CN202010545725.4A CN202010545725A CN111797056B CN 111797056 B CN111797056 B CN 111797056B CN 202010545725 A CN202010545725 A CN 202010545725A CN 111797056 B CN111797056 B CN 111797056B
Authority
CN
China
Prior art keywords
format
html
file
character
family
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010545725.4A
Other languages
English (en)
Other versions
CN111797056A (zh
Inventor
彭智勇
林博
彭煜玮
李蓉蓉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN202010545725.4A priority Critical patent/CN111797056B/zh
Publication of CN111797056A publication Critical patent/CN111797056A/zh
Application granted granted Critical
Publication of CN111797056B publication Critical patent/CN111797056B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/116Details of conversion of file system types or formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明属于计算机技术领域,公开了一种矢量化家谱书生成方法及系统,方法包括设计家谱书的HTML模板;读取家谱数据信息,采用行传生成调度算法,结合行传的HTML模板,获得HTML格式的行传文件并转换为第一格式;采用吊线图生成调度算法,结合吊线图的HTML模板,获得HTML格式的吊线图文件并转换为第一格式;将第一格式的行传文件与第一格式的吊线图文件进行合并,得到第一格式的家谱书文件;系统包括依次连接的数据读取模块、数据格式化模块、HTML文件生成模块、第一格式文件生成模块。本发明解决了现有家谱数据管理平台数据展示功能的不足、人工编撰家谱书效率低的问题,具有方便直观的展示能力和高效准确的生成能力。

Description

一种矢量化家谱书生成方法及系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种矢量化家谱书生成方法及系统。
背景技术
家谱,又称为宗谱、族谱等,是一种以表谱形式,记载一个家族的世系繁衍及重要人物事迹的书,是中华文明史中一种具有平民特色的重要文献形式。家谱属珍贵的人文资料,对于历史学、民俗学、人口学、社会学和经济学的深入研究有着不可替代的独特功能。
随着计算机技术的发展,家谱数据的数字化成为了趋势和需要,越来越多的公司开始开发数字化家谱数据的管理平台。此类平台多是提供了家谱数据的录入、编辑、保存以及展示的功能,数字化的家谱数据最终保存在结构化的数据库之中。用户通过此类平台的编辑后,往往想得到传统样式的家谱书,便于保存和传播。然而,此类家谱管理平台通常是只提供了家谱展示功能,一般是采用表格或者简单的树形结构进行展示,与传统的家谱书样式之间有很大不同,存在着形式简单,不直观的问题,不能满足人们对于家谱管理的全部需求。同时,传统的家谱书通常是使用人工编撰的方式进行排版、编辑,存在着效率低、容易出错的问题。
发明内容
针对现有技术的不足,本发明提供一种矢量化家谱书生成方法及系统。
本申请实施例提供一种矢量化家谱书生成方法,包括以下步骤:
步骤1、设计家谱书的HTML模板,所述家谱书的HTML模板包括行传的HTML模板、吊线图的HTML模板;
步骤2、读取家谱数据信息,采用行传生成调度算法,结合所述行传的HTML模板,获得HTML格式的行传文件,并将所述HTML格式的行传文件转换为第一格式的行传文件;
步骤3、读取家谱数据信息,采用吊线图生成调度算法,结合所述吊线图的HTML模板,获得HTML格式的吊线图文件,并将所述HTML格式的吊线图文件转换为第一格式的吊线图文件;
步骤4、将所述第一格式的行传文件与所述第一格式的吊线图文件进行合并,得到第一格式的家谱书文件。
优选的,所述步骤1中,所述行传的HTML模板中的基本元素包括:家谱名称、分支名称、世代信息、人物信息表格;所述人物信息表格的每一行对应一个人物的相关信息;每个人物的相关信息包括该人物的父亲谱名、该人物的谱名、该人物简介信息三列;
所述吊线图的HTML模板中的基本元素包括:家谱名称、分支名称、人物世系信息结构图;所述人物世系信息结构图为一个表格,每个单元格对应一个人物的基本信息;每个人物的基本信息包括该人物的谱名、该人物在行传中的页码。
优选的,所述步骤1中,所述行传的HTML模板、所述吊线图的HTML模板均预设有每行所能容纳的最大字数和每页所能容纳的最大行数。
优选的,所述第一格式为PDF格式或图片格式。
优选的,所述步骤2中,所述行传生成调度算法为:按照层次遍历的方式读取家谱数据信息中的世系人物数据,在遍历的过程中完成对世系人物数据的格式化以及对行传的HTML模板的填充,并以页为单位进行行传的生成。
优选的,所述步骤2包括以下子步骤:
步骤S21、根据要生成的家谱ID读取家谱始祖人物ID,将始祖人物ID保存到用于迭代操作的人物ID集合中,初始化一页HTML行传模板,至当前页数为1,进入步骤S22;
步骤S22、从用于迭代操作的人物ID集合中取出一个人物ID,根据此人物ID从所述家谱数据信息中查找其自身、子女及配偶的人物信息,将这三个部分的信息格式化,得到该人物的人物简介信息,并填充到行传的HTML模板中;根据该人物的人物简介信息的行数计算并更新当前页数,并将该人物及该人物所在页数信息保存到哈希表中,key为“人物ID-谱名”,value为“人物所在页数”;将该人物的儿子的ID加入到用于迭代操作的人物ID集合中,进入步骤S23;
步骤S23、若当前HTML模板达到了所能容纳的最大行数,则将本页HTML格式的行传转换成第一格式的行传,并初始化新的HTML行传模板,进入步骤S24;
步骤S24、若用于迭代操作的人物ID集合不为空,进入步骤S22;否则,进入步骤S25;
步骤S25、将最后页HTML格式的行传转换为第一格式的行传,并将所有得到的以页为单位的第一格式的行传合并成完整的行传文件,得到所述第一格式的行传文件。
优选的,所述步骤3中,所述吊线图生成调度算法为:按照限制最大深度的深度优先遍历的方式读取家谱数据信息中的世系人物数据,在遍历的过程中完成对世系人物数据的格式化以及对吊线图的HTML模板的填充,并以页为单位进行吊线图的生成。
优选的,所述最大深度通过如下公式获得:
其中,depth_max为最大深度;width_max为用户指定的用于绘制吊线图的最大宽度;width_unit为用户指定的吊线图中每个单元格的宽度,表示每个世代的宽度;num_column为用户设置的页面分栏数量;表示向下取整。
优选的,所述步骤3包括以下子步骤:
步骤S31、根据要生成的家谱ID读取家谱始祖人物的ID,将始祖人物ID保存到用于迭代操作的人物ID集合中,初始化一页HTML吊线图模板,置遍历路径集合为空,进入步骤S32;
步骤S32、从用于迭代操作的人物ID集合中取出一个人物ID,从该人物开始进行限制最大深度的深度优先遍历;在遍历的过程中,为每个人物结点计算一个长度为3的标识符列表,分别标识该人物是否为第一个孩子,是否为最后一个孩子,是否有儿子;同时记录遍历路径,保存的内容为当前人物的“ID-谱名”以及对应标识符列表;当到达预设最大深度或者当前人物没有儿子时,进入步骤S33;
步骤S33、将当前遍历路径保存到遍历路径集合中,所述遍历路径集合中的每条路径对应HTML吊线图模板中人物世系信息结构图元素的一行,路径上的每个结点对应每行的一个单元格;若当前人物有儿子,则将该人物ID保存到用于迭代操作的人物ID集合中;否则,继续执行;
若路径集合数据量达到了吊线图模板所能容纳的最大行数,进入步骤S34;否则,进入步骤S35;
步骤S34、顺序遍历路径集合,对于集合中的每条路径,根据其前后路径相同位置的路径结点做消除重复操作;为剩下的每个结点,根据其标识符列表为该人物所在单元格选择合适的背景图;同时根据“人物ID-谱名”从页码哈希表中查找该人物所在行传的页码,得到吊线图模板每个单元格所需格式的数据,并填充到HTML吊线图模板中,遍历结束后将本页HTML格式的吊线图文件转换成第一格式的行传,并初始化新的HTML吊线图模板,进入步骤S35;
步骤S35、若用于迭代操作的人物ID集合不为空,进入步骤S32;否则,进入步骤S36;
步骤S36、将最后页的HTML吊线图转换为第一格式的吊线图,并将所有得到的以页为单位的第一吊线图合并成完整的吊线图文件,得到第一格式的吊线图文件。
另一方面,本申请实施例提供一种矢量化家谱书生成系统,包括:依次连接的数据读取模块、数据格式化模块、HTML文件生成模块、第一格式文件生成模块;
所述数据读取模块用于将家谱数据信息读取至内存中;
所述数据格式化模块用于将读取的家谱数据信息分别格式化为行传模板中各个元素所需格式的数据、吊线图模板中各个元素所需格式的数据;
所述HTML文件生成模块用于HTML模板文件的初始化,将格式化后的数据填充至HTML模板文件中;
所述第一格式文件生成模块用于将生成的完整的HTML文件转换成第一格式文件,合并第一格式的行传文件与所述第一格式的吊线图文件,得到第一格式的家谱书文件;
所述矢量化家谱书生成系统用于实现上述的矢量化家谱书生成方法中的步骤。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
在本申请实施例中,首先设计家谱书的HTML模板(包括行传的HTML模板、吊线图的HTML模板);然后读取家谱数据信息,采用行传生成调度算法,结合行传的HTML模板,获得HTML格式的行传文件,并将HTML格式的行传文件转换为第一格式的行传文件;读取家谱数据信息,采用吊线图生成调度算法,结合吊线图的HTML模板,获得HTML格式的吊线图文件,并将HTML格式的吊线图文件转换为第一格式的吊线图文件;最后将第一格式的行传文件与第一格式的吊线图文件进行合并,得到第一格式的家谱书文件。采用的系统与方法对应,包括数据读取模块、数据格式化模块、HTML文件生成模块、第一格式文件生成模块。本发明可以将已经保存到数据库的家谱数据(即家谱数据信息)以传统的纸质家谱书的样式进行自动生成,兼具了方便直观的展示能力和高效准确的生成能力。本发明借助HTML来作为模板以及生成的中间文件,使得最终生成的家谱书为矢量化的,阅读体验比较好,且可以选择具体的最终转换格式。
附图说明
为了更清楚地说明本实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种矢量化家谱书生成方法的整体流程图;
图2为本发明实施例1提供的一种矢量化家谱书生成方法中行传生成调度算法的流程图;
图3为本发明实施例1提供的一种矢量化家谱书生成方法中吊线图生成调度算法的流程图;
图4(a)、4(b)为本发明实施例1提供的一种矢量化家谱书生成方法中家谱书生成的样式图;
图5为本发明实施例2提供的一种矢量化家谱书生成系统的框架图。
具体实施方式
本发明提供一种矢量化家谱书生成方法,包括以下步骤:
步骤1、设计家谱书的HTML模板,所述家谱书的HTML模板包括行传的HTML模板、吊线图的HTML模板。
步骤2、读取家谱数据信息,采用行传生成调度算法,结合所述行传的HTML模板,获得HTML格式的行传文件,并将所述HTML格式的行传文件转换为第一格式的行传文件。
步骤3、读取家谱数据信息,采用吊线图生成调度算法,结合所述吊线图的HTML模板,获得HTML格式的吊线图文件,并将所述HTML格式的吊线图文件转换为第一格式的吊线图文件。
步骤4、将所述第一格式的行传文件与所述第一格式的吊线图文件进行合并,得到第一格式的家谱书文件。
其中,所述行传的HTML模板中的基本元素包括:家谱名称、分支名称、世代信息、人物信息表格;所述吊线图的HTML模板中的基本元素包括:家谱名称、分支名称、人物世系信息结构图。所述行传的HTML模板、所述吊线图的HTML模板均预设有每行所能容纳的最大字数和每页所能容纳的最大行数。
所述家谱数据信息包括家谱基本信息,有家谱名称以及分支名;也包括家谱世系人物数据。家谱基本信息应用在行传的“家谱名称、分支名”这两个元素上,世系人物数据最终应用在“世代信息、人物信息表格”中。
家谱数据信息应用在吊线图时,家谱数据信息中的世系人物数据最终应用在“人物世系信息结构图”中。
所述第一格式为PDF格式或图片格式。所述行传生成调度算法为:按照层次遍历的方式读取家谱数据信息中的世系人物数据,在遍历的过程中完成对世系人物数据的格式化以及对行传的HTML模板的填充,并以页为单位进行行传的生成。
所述吊线图生成调度算法为:按照限制最大深度的深度优先遍历的方式读取家谱数据信息中的世系人物数据,在遍历的过程中完成对世系人物数据的格式化以及对吊线图的HTML模板的填充,并以页为单位进行吊线图的生成。
另一方面,本发明提供一种矢量化家谱书生成系统,包括:依次连接的数据读取模块、数据格式化模块、HTML文件生成模块、第一格式文件生成模块。
所述数据读取模块用于将家谱数据信息读取至内存中。所述数据格式化模块用于将读取的家谱数据信息分别格式化为行传模板中各个元素所需格式的数据、吊线图模板中各个元素所需格式的数据(格式化的过程就是将原始数据转换为HTML模板中各个元素所对应的HTML代码。所需格式例如为每个单元格对应一个人物的基本信息,每个人物的基本信息包括该人物的谱名、该人物在行传中的页码)。所述HTML文件生成模块用于HTML模板文件的初始化,将格式化后的数据填充至HTML模板文件中。所述第一格式文件生成模块用于将生成的完整的HTML文件转换成第一格式文件,合并第一格式的行传文件与所述第一格式的吊线图文件,得到第一格式的家谱书文件。
所述矢量化家谱书生成系统用于实现上述的矢量化家谱书生成方法中的步骤。为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
实施例1:
实施例1以最终生成PDF格式的家谱书文件为例,对矢量化家谱书生成方法进行说明。
参看图1,实施例1提供一种矢量化家谱书生成方法,包括以下步骤:
步骤S1、设计家谱书各个部分的HTML模板,包括行传的模板以及吊线图的模板。
具体的,所述行传的模板包含的基本元素有:家谱名称、分支名称、世代信息、人物详细信息表格,其中表格的每一行对应一个人物的详细信息,包括该人物的父亲谱名、该人物的谱名以及该人物简介信息三列。
所述吊线图的模板包含的基本元素有:家谱名称、分支名称、人物世系信息结构图,其中人物世系信息结构图为一个表格,每个单元格对应一个人物的基本信息,包括该人物的谱名以及在行传中的页码。
同时,每种模板都预设了每行所能容纳的最大字数和每页所能容纳的最大行数。
步骤S2、运用行传生成调度算法对家谱书的行传部分进行生成,具体包括:从数据库读取家谱的描述信息和人物数据信息;格式化成行传模板所需格式数据;向行传模板文件中填充数据得到完整的HTML格式行传文件;将HTML格式行传文件转换为PDF格式文件。
具体的,从数据库中读取的家谱描述信息包括:家谱名称、堂号、分支名;人物数据信息包括:字、号、名、性别、世代数、排行、出生日期、卒世日期、生平简介、卒世简介、职称职位、教育程度、其他描述。
在一种实施方式中,所述行传生成调度算法的流程图如图2所示,总体思路是按照层次遍历的方式访问整个家谱的世系人物数据,在遍历的过程中完成对世系人物数据的格式化以及行传模板文件的填充,并以页为单位进行行传的生成,具体步骤包括:
步骤S21、根据要生成的家谱ID从数据库中得到该家谱始祖人物ID,将始祖人物ID保存到用于迭代操作的人物ID集合中,同时,初始化一页HTML行传模板,至当前页数为1。进入步骤S22。
步骤S22、从用于迭代操作的人物ID集合中取出一个人物ID,根据此人物ID从数据库查找其自身、子女及配偶的人物信息,将这三个部分的信息格式化得到该人物的人物简介信息,将该信息填充到HTML行传模板中;同时根据该人物简介信息的行数计算并更新当前页数,并将该人物及所在页数信息保存到哈希表中,key为“人物ID-谱名”,value为“该人物所在页数”。最后将该人物的儿子的ID加入到用于迭代操作的人物ID集合中。进入步骤S23。
步骤S23、若当前HTML模板达到了所能容纳的最大行数,则将本页HTML格式的行传转换成PDF格式的行传,并初始化新的HTML行传模板。最后,进入步骤S24。
步骤S24、若用于迭代操作的人物ID集合不为空(每迭代一次就从人物ID集合中删除已处理过的人物ID),进入步骤S22;否则,进入步骤S25。
步骤S25、将最后页的HTML行传转换为PDF格式的行传,并将所有得到的以页为单位的PDF行传合并成完整的行传文件,算法结束。
行传采用特别设计的行传生成调度算法,即层次遍历的方式读取家谱世系人物数据。人物数据的读取顺序即为在行传中排版的顺序,所以没有单独的位置计算过程,在读取数据并格式化数据后,直接填充到HTML模板文件中即可。此外,数据的读取方式为按需读取,可以避免一下全部将整个家谱的数据全部读取到内存中,一页HTML行传模板所能包含的人物数量是有限的,所以在内存中一次存储的数据量也是有限的,对最大内存容量要求比较低。(一页HTML行传模板达到最大容量时,会转化为PDF,并初始化新的HTML模板)。
针对生成行传所设计的算法,可以避免一下全部将整个家谱的数据全部读取到内存。数据读取方式为按需读取,对内存的容量要求比较小。
本发明中哈希表存储的是该人物在行传中所在的页码,目的是将此页码值加入到吊线图对应人物中,方便从吊线图中直接跳到该人物所在行传的位置。
步骤S3、运用吊线图生成调度算法对家谱书的吊线图部分进行生成,具体包括:从数据库读取家谱的描述信息和人物数据信息;格式化成吊线图模板所需格式数据;向吊线图模板文件中填充数据得到完整的HTML格式吊线图文件;将HTML格式吊线图文件转换为PDF格式文件。
在一种实施方式中,所述吊线图生成调度算法的流程图如图3所示,总体思路是按照限制最大深度的深度优先遍历的方式访问整个家谱的世系人物数据,在遍历的过程中完成对世系人物数据的格式化以及吊线图模板文件的填充,并以页为单位进行吊线图的生成,具体步骤包括:
步骤S31、根据要生成的家谱ID从数据库中得到该家谱始祖人物的ID,将始祖人物ID保存到用于迭代操作的人物ID集合中,同时,初始化一页HTML吊线图模板,置遍历路径集合为空,进入步骤S32。
步骤S32、从用于迭代操作的人物ID集合中取出一个人物ID,从该人物开始进行限制最大深度的深度优先遍历,在遍历的过程中,会为每个人物结点计算一个长度为3的标识符列表,分别标识该人物是否是第一个孩子,是否是最后一个孩子,是否有儿子。同时记录遍历路径,保存的内容为当前人物的“ID-谱名”以及对应标识符列表。当到达预设最大深度或者当前人物没有儿子时,进入步骤S33。
步骤S33、将当前遍历路径保存到遍历路径集合中,其中路径集合中的每条路径对应HTML吊线图模板中人物世系信息结构图元素的一行,路径上的每个结点对应每行的一个单元格。若当前人物有儿子,则将其人物ID保存到用于迭代操作的人物ID集合中;否则,继续执行。若路径集合数据量达到了吊线图模板所能容纳的最大行数,进入步骤S34;否则,进入步骤S35。
步骤S34、顺序遍历路径集合,对于集合中的每条路径,根据其前后路径相同位置的路径结点做消除重复操作。为剩下的每个结点,根据其标识符列表为该人物所在单元格选择合适的背景图;同时根据其“人物ID-谱名”从页码哈希表中查找该人物所在行传的页码,这样就得到了吊线图模板每个单元格所需格式的数据,填充到HTML吊线图模板中,遍历结束后将本页HTML格式的吊线图文件转换成PDF格式的行传,并初始化新的HTML吊线图模板。进入步骤S35。
步骤S35、若用于迭代操作的人物ID集合不为空,进入步骤S32;否则进入步骤S36。
步骤S36、将最后的HTML吊线图转换为PDF格式的吊线图,并将所有得到的以页为单位的PDF吊线图合并成完整的吊线图文件,算法结束。
其中,所述吊线图生成调度算法中,深度优先遍历的过程限制了最大深度。最大深度,即家谱书吊线图中每栏显示的世代数,可以由如下公式得到:
其中,depth_max是最大深度;width_max是用户指定的用于绘制吊线图的最大宽度;width_unit是用户指定的吊线图中每个单元格的宽度,即每个世代的宽度;num_column为用户设置的页面分栏数量;表示向下取整。
吊线图采用特别设计的吊线图生成算法,即限制最大深度的深度优先遍历的方式访问整个家谱的世系人物数据。同样,人物数据的读取顺序即为在吊线图中排版的顺序,也没有单独的位置计算过程,在读取数据并格式化数据后,会加入到路径集合中,HTML模板达到最大容量后,进一步处理直接填充到HTML模板文件中即可。此外,通过限制遍历的最大深度也可以显示按需读取的效果,也可以避免一下全部将整个家谱的数据全部读取到内存中。
同时,通过限制遍历的最大深度,一方面,可以使得算法具有优秀的性能。本发明在遍历的过程中,会用栈来保存当前遍历路径,深度越大,递归的层数越多,那么路径的长度就会越长,其中的计算消耗和冗余数据也会越来越多。通过设置遍历的最大深度,就可以减少这些消耗和冗余。另一方面,限制的最大深度是由用户自定的几个生成参数计算得到的,让用户指定模板的部分参数可以使界面更加符合用户的审美。用户可以自定义生成的样式,充分按照自己喜欢的方式进行打印。其他现有的生成系统有的也可以让用户自己配置生成选项,但一般是让用户选择生成的样式,具体的样式是固定的,比如让用户选择欧式、苏式、新苏式等,用户不能更改样式,但本发明可以让用户通过自定义参数来设计生成的样式,用户拥有更多的选择权利。
步骤S4、将生成的PDF格式的行传与吊线图文件进行合并,得到完整的PDF格式的家谱书文件。
在一种实施方式中,步骤S4中将在步骤S2和S3中分别生成的完整的PDF格式的行传和吊线图文件进行合并,得到完整的家谱书文件,此家谱书为矢量化的PDF格式。例如,家谱书生成的样式图如图4(a)或4(b)所示。
本发明借助HTML来设计模板,并作为转换为PDF的中间文件,可以使得最终生成的PDF为矢量化的。此外,由于是先得到了HTML格式的文件,由于HTML语言的灵活性,这里同时可以转换为其他格式文件进行保存,比如图片,这样最终的家谱书就为图片格式的家谱书。
本发明生成行传时,采用特有的算法(行传生成调度算法)来读取数据,处理数据;生成吊线图时,采用特有的算法(吊线图生成调度算法)来读取数据,处理数据;行传的生成和吊线图的生成分别是一个独立的过程,可以针对不同的需求而采取合适的算法进行读取和处理。
基于同样的发明构思,与实施例1提供的矢量化家谱书生成方法对应,提供一种矢量化家谱书生成系统。
实施例2以最终生成PDF格式的家谱书文件为例,对矢量化家谱书生成系统进行说明。
实施例2:
实施例2提供一种矢量化家谱书生成系统,系统框架结构参见附图5,包括:数据读取模块、数据格式化模块、HTML文件生成模块、PDF文件生成模块,系统各模块之间依次连接。
数据读取模块,用于从数据库中将家谱书数据,包括:家谱的描述信息以及人物数据信息读取到内存中。
数据格式化模块,用于将读取的数据库原始数据分别格式化为行传模板和吊线图模板所需格式的数据。
HTML文件生成模块,用于HTML模板文件的初始化以及将格式化后的数据填充进HTML模板文件中。
PDF文件生成模块,用于将生成的完整的HTML文件转换成PDF格式文件,以及PDF格式文件之间的合并。
综上,通过本发明提供的一种矢量化家谱书生成方法及系统,可以将已经保存到数据库的家谱数据以传统的纸质家谱书的样式进行自动生成,兼具了方便直观的展示能力和高效准确的生成能力。本发明一方面解决了现有家谱数据管理平台数据展示功能的不足,另一方面解决了人工编撰家谱书的效率低、容易出错的问题。并且,如果家族中人物成员发生了变化,家谱需要重新修订,该发明可以立即生成得到新的家谱书,无需任何额外成本。
本发明实施例提供的一种矢量化家谱书生成方法及系统至少包括如下技术效果:
(1)数据读取方式方面,相比于需要一次性读取整个家谱的全部数据的方法,本发明在行传生成以及吊线图生成时均为按需读取,不需要将整个家谱的全部数据读取到内存中,对内存要求低。
(2)人物位置计算方法方面,本发明中行传以及吊线图均采用专门设计的生成调度算法,在调度的过程中,人物的读取顺序即为在对应文件中的排版顺序,无需单独的计算过程。
(3)生成结果方面,本发明借助HTML来作为模板以及生成的中间文件,使得最终生成的PDF为矢量化的,阅读体验比较好。另外,使用HTML作为中间文件,还可以选择转换为其他格式。
最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (9)

1.一种矢量化家谱书生成方法,其特征在于,包括以下步骤:
步骤1、设计家谱书的HTML模板,所述家谱书的HTML模板包括行传的HTML模板、吊线图的HTML模板;
步骤2、读取家谱数据信息,采用行传生成调度算法,结合所述行传的HTML模板,获得HTML格式的行传文件,并将所述HTML格式的行传文件转换为第一格式的行传文件;
步骤3、读取家谱数据信息,采用吊线图生成调度算法,结合所述吊线图的HTML模板,获得HTML格式的吊线图文件,并将所述HTML格式的吊线图文件转换为第一格式的吊线图文件;
步骤S31、根据要生成的家谱ID读取家谱始祖人物的ID,将始祖人物ID保存到用于迭代操作的人物ID集合中,初始化一页HTML吊线图模板,置遍历路径集合为空,进入步骤S32;
步骤S32、从用于迭代操作的人物ID集合中取出一个人物ID,从该人物开始进行限制最大深度的深度优先遍历;在遍历的过程中,为每个人物结点计算一个长度为3的标识符列表,分别标识该人物是否为第一个孩子,是否为最后一个孩子,是否有儿子;同时记录遍历路径,保存的内容为当前人物的“ID-谱名”以及对应标识符列表;当到达预设最大深度或者当前人物没有儿子时,进入步骤S33;
步骤S33、将当前遍历路径保存到遍历路径集合中,所述遍历路径集合中的每条路径对应HTML吊线图模板中人物世系信息结构图元素的一行,路径上的每个结点对应每行的一个单元格;若当前人物有儿子,则将该人物ID保存到用于迭代操作的人物ID集合中;否则,继续执行;
若路径集合数据量达到了吊线图模板所能容纳的最大行数,进入步骤S34;否则,进入步骤S35;
步骤S34、顺序遍历路径集合,对于集合中的每条路径,根据其前后路径相同位置的路径结点做消除重复操作;为剩下的每个结点,根据其标识符列表为该人物所在单元格选择合适的背景图;同时根据“人物ID-谱名”从页码哈希表中查找该人物所在行传的页码,得到吊线图模板每个单元格所需格式的数据,并填充到HTML吊线图模板中,遍历结束后将本页HTML格式的吊线图文件转换成第一格式的行传,并初始化新的HTML吊线图模板,进入步骤S35;
步骤S35、若用于迭代操作的人物ID集合不为空,进入步骤S32;否则,进入步骤S36;
步骤S36、将最后页的HTML吊线图转换为第一格式的吊线图,并将所有得到的以页为单位的第一吊线图合并成完整的吊线图文件,得到第一格式的吊线图文件;
步骤4、将所述第一格式的行传文件与所述第一格式的吊线图文件进行合并,得到第一格式的家谱书文件。
2.根据权利要求1所述的矢量化家谱书生成方法,其特征在于,所述步骤1中,所述行传的HTML模板中的基本元素包括:家谱名称、分支名称、世代信息、人物信息表格;所述人物信息表格的每一行对应一个人物的相关信息;每个人物的相关信息包括该人物的父亲谱名、该人物的谱名、该人物简介信息三列;
所述吊线图的HTML模板中的基本元素包括:家谱名称、分支名称、人物世系信息结构图;所述人物世系信息结构图为一个表格,每个单元格对应一个人物的基本信息;每个人物的基本信息包括该人物的谱名、该人物在行传中的页码。
3.根据权利要求1所述的矢量化家谱书生成方法,其特征在于,所述步骤1中,所述行传的HTML模板、所述吊线图的HTML模板均预设有每行所能容纳的最大字数和每页所能容纳的最大行数。
4.根据权利要求1所述的矢量化家谱书生成方法,其特征在于,所述第一格式为PDF格式或图片格式。
5.根据权利要求1所述的矢量化家谱书生成方法,其特征在于,所述步骤2中,所述行传生成调度算法为:按照层次遍历的方式读取家谱数据信息中的世系人物数据,在遍历的过程中完成对世系人物数据的格式化以及对行传的HTML模板的填充,并以页为单位进行行传的生成。
6.根据权利要求5所述的矢量化家谱书生成方法,其特征在于,所述步骤2包括以下子步骤:
步骤S21、根据要生成的家谱ID读取家谱始祖人物ID,将始祖人物ID保存到用于迭代操作的人物ID集合中,初始化一页HTML行传模板,至当前页数为1,进入步骤S22;
步骤S22、从用于迭代操作的人物ID集合中取出一个人物ID,根据此人物ID从所述家谱数据信息中查找其自身、子女及配偶的人物信息,将这三个部分的信息格式化,得到该人物的人物简介信息,并填充到行传的HTML模板中;根据该人物的人物简介信息的行数计算并更新当前页数,并将该人物及该人物所在页数信息保存到哈希表中,key为“人物ID-谱名”,value为“人物所在页数”;将该人物的儿子的ID加入到用于迭代操作的人物ID集合中,进入步骤S23;
步骤S23、若当前HTML模板达到了所能容纳的最大行数,则将本页HTML格式的行传转换成第一格式的行传,并初始化新的HTML行传模板,进入步骤S24;
步骤S24、若用于迭代操作的人物ID集合不为空,进入步骤S22;否则,进入步骤S25;
步骤S25、将最后页HTML格式的行传转换为第一格式的行传,并将所有得到的以页为单位的第一格式的行传合并成完整的行传文件,得到所述第一格式的行传文件。
7.根据权利要求1所述的矢量化家谱书生成方法,其特征在于,所述步骤3中,所述吊线图生成调度算法为:按照限制最大深度的深度优先遍历的方式读取家谱数据信息中的世系人物数据,在遍历的过程中完成对世系人物数据的格式化以及对吊线图的HTML模板的填充,并以页为单位进行吊线图的生成。
8.根据权利要求7所述的矢量化家谱书生成方法,其特征在于,所述最大深度通过如下公式获得:
其中,depth_max为最大深度;width_max为用户指定的用于绘制吊线图的最大宽度;width_unit为用户指定的吊线图中每个单元格的宽度,表示每个世代的宽度;num_column为用户设置的页面分栏数量;表示向下取整。
9.一种矢量化家谱书生成系统,其特征在于,包括:依次连接的数据读取模块、数据格式化模块、HTML文件生成模块、第一格式文件生成模块;
所述数据读取模块用于将家谱数据信息读取至内存中;
所述数据格式化模块用于将读取的家谱数据信息分别格式化为行传模板中各个元素所需格式的数据、吊线图模板中各个元素所需格式的数据;
所述HTML文件生成模块用于HTML模板文件的初始化,将格式化后的数据填充至HTML模板文件中;
所述第一格式文件生成模块用于将生成的完整的HTML文件转换成第一格式文件,合并第一格式的行传文件与所述第一格式的吊线图文件,得到第一格式的家谱书文件;
所述矢量化家谱书生成系统用于实现如权利要求1-8中任一所述的矢量化家谱书生成方法中的步骤。
CN202010545725.4A 2020-06-16 2020-06-16 一种矢量化家谱书生成方法及系统 Active CN111797056B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010545725.4A CN111797056B (zh) 2020-06-16 2020-06-16 一种矢量化家谱书生成方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010545725.4A CN111797056B (zh) 2020-06-16 2020-06-16 一种矢量化家谱书生成方法及系统

Publications (2)

Publication Number Publication Date
CN111797056A CN111797056A (zh) 2020-10-20
CN111797056B true CN111797056B (zh) 2024-04-19

Family

ID=72804330

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010545725.4A Active CN111797056B (zh) 2020-06-16 2020-06-16 一种矢量化家谱书生成方法及系统

Country Status (1)

Country Link
CN (1) CN111797056B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107480279A (zh) * 2017-08-22 2017-12-15 北京九亲文化股份有限公司重庆分公司 一种网络家谱体例的生成方法
CN110110270A (zh) * 2019-04-25 2019-08-09 武汉大学 一种并行处理的大型族谱世系图的生成方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107480279A (zh) * 2017-08-22 2017-12-15 北京九亲文化股份有限公司重庆分公司 一种网络家谱体例的生成方法
CN110110270A (zh) * 2019-04-25 2019-08-09 武汉大学 一种并行处理的大型族谱世系图的生成方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于图数据库的在线族谱编录系统;姜洋;彭智勇;彭煜玮;;计算机应用;20150110(第01期);第125-130页 *

Also Published As

Publication number Publication date
CN111797056A (zh) 2020-10-20

Similar Documents

Publication Publication Date Title
CN111753499B (zh) 电子表单与ofd版式文件合并展现及目录生成的方法
US9747710B2 (en) Method, system, and computer-readable medium for creating and laying out a graphic within an application program
US7673235B2 (en) Method and apparatus for utilizing an object model to manage document parts for use in an electronic document
CN100429655C (zh) 将文档的元素与数据库中相应的字段、查询和/或过程相链接
CN104123269B (zh) 一种基于模板的出版物半自动生成方法及系统
JP2009510650A (ja) 動的に集約された文書のための調和構成を備えたマルチフォームデザイン
CN111309313A (zh) 一种快速生成html以及存储表单数据的方法
CN102651055A (zh) 一种基于医学影像的文件生成方法及系统
JP4094777B2 (ja) 画像通信システム
CN103778172A (zh) 一种试卷信息保存方法及一种试卷编辑方法和系统
CN106648608A (zh) 一种灵活方便的流程图构建方法
CN111797056B (zh) 一种矢量化家谱书生成方法及系统
JPH0798708A (ja) 文書処理システムおよびその方法
JP3788956B2 (ja) 構造化文書表示方法、構造化文書表示装置及びプログラム
JPH09282218A (ja) Html文書本型整形方法及びその装置
JP2004348341A (ja) 構造化文書処理システム、構造化文書処理方法及びプログラム
JP2009098829A (ja) 漫画のコマ検索装置
JPH04278634A (ja) 木生成システム及び方法
JP4184155B2 (ja) データ処理装置、データ処理方法、データ処理プログラム、およびデータ処理プログラムを記録したコンピュータ読取可能な記録媒体
CN112131432A (zh) 数据网络设备的命令行多叉树获取方法及装置
US20040267550A1 (en) Automated method for authoring and delivering product catalogs
JP2004038496A (ja) Xml文書作成システム
CN114281920A (zh) 一种基于文档集的主题内容结构化管理方法及系统
CN115964989A (zh) 电子表格的信息显示方法、装置及存储介质
MacDonald WordML and SpreadsheetML

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant