将csv文件转换为卡片的html页面,以便后续打印
gamecards的Python项目详细描述
简介
最近,卡片似乎已经成为桌面角色扮演游戏中的流行配件。它们可以用来提供物品、咒语或其他游戏元素的物理表示。大多数的甲板都是用像gimp或photoshop这样的图像编辑器制作的,如果你有时间、软件和使用技巧的话,这是很好的。
游戏卡试图使这个过程自动化。它接受一个csv文件,其中每一行代表一个项目、拼写或其他游戏元素,行中的每一个字段代表该项目的一个属性或属性,并将其转换为多个html页面。每页都包含一个表格,表格的每个单元格都包含根据模板文件呈现的项目表示。
生成的html文件可以被打印和剪切,以生成卡片本身。
安装
$ pip install --upgrade gamecards
用法
游戏卡脚本只需要四个参数(按此顺序):包含数据的csv文件、模板html文件、css规范(文件名或逗号分隔的文件名列表)和输出的html文件名:
$ python -m gamecards cards.csv cards.tpl cards.css cards.html
或者使用控制台脚本:
$ gamecards cards.csv cards.tpl cards.css cards.html
默认情况下,文件的每个"页面"包含3行3列。这可以使用--rows
和--cols
参数进行更改:
$ gamecards cards.csv cards.tpl cards.css cards.html --rows 2 --cols 4
csv文件
csv文件必须以命名每个字段的标题行开头。这些将在模板文件中使用。如果字段包含逗号,则必须用引号括起来。例如:
ID,Field1,Field2
1,Some text,Some more text
2,Second row,"Text, with a comma"
模板文件
这是一个包含标准python模板字符串的html片段。这些模板字符串应与csv文件中的头字段匹配,并使用python字符串模板功能替换到模板中。例如,以下模板文件:
<div class='card'>
<div class='title'>
<p>${Field1}</p>
</div>
</div>
将对csv文件的每一行重复一次,输出文件中的每一个表单元格重复一次(见下文)。模板文件必须使用语法${field1}
来指定字段名,并且必须精确(因此大小写很重要)。
CSS样式设置
输出html的样式可以通过包含css文件的名称来控制。这将成为输出html的<;head>;
元素中的标准"样式表"链接。例如,在上面的用法示例中,cards.css的样式参数将变为:
<link rel="stylesheet" href="cards.css"/>
在输出文件中。
卡片的最终外观完全取决于你如何安排模板和相应的css!建议每个卡都包含在一个<;div>;
元素中,如上面的示例模板所示。此元素的样式应该指定卡片大小,可能以"mm"为单位,这将取决于打印HTML的页面大小以及行和列的数量。理论上,可以使用任何HTML结构,但要注意在打印时可能会出现的浏览器限制FlexBox和Grid(在浏览器中预览时可能不会出现这些限制)。
输出文件
输出文件符合HTML5规范,由多个<;table>;
元素组成,每个元素包含3行3列(或使用--rows
和--cols
参数指定的任何内容)。输出文档的整个主体(即<;body>;
的(唯一)子元素)是一个id为"gamecards"的<;div>;
元素。此<;div>;
中的每个<;table>;
元素都有"page"类,用于在打印时强制分页-输出文件中自动包含以下样式:
@media print {
.page {
page-break-after: always;
}
}
如果需要,这可以由包含的css文件覆盖。通常假设所有样式都将在每个单元格内完成,即在提供的模板上完成;表结构只是提供了一个框架。
发展nOTS/H2>单元测试
少量测试包含在test_gamecards.py
文件中,可以使用pytest应用程序运行。
包装配送
当准备发布时,使用bumpversion应用程序更新版本号,例如
$ bumpversion major --tag
这将更新源文件和安装配置。然后构建分发版:
$ pip install --upgrade gamecards
0
测试安装
使用Docker可以完成正确安装分发的测试。使用以下命令(如有必要,将下载"python"docker映像,因此第一次运行时可能需要几分钟):
$ pip install --upgrade gamecards
1
这将启动"python"docker映像并执行命令提示符。从这里安装本地"dist"文件夹中的"gamecards"分发(安装在"/mnt"下的docker映像中):
$ pip install --upgrade gamecards
2
上传到testpypi
将发行版上载到testpypi站点:
$ pip install --upgrade gamecards
3
然后运行"python"docker映像并尝试从那里安装:
$ pip install --upgrade gamecards
4
上传到pypi
按如下方式上载到实际包索引(或指定最新分发版):
$ pip install --upgrade gamecards
5