将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结构,但要注意在打印时可能会出现的浏览器限制FlexBoxGrid(在浏览器中预览时可能不会出现这些限制)。

输出文件

输出文件符合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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法启动应用程序:JNLP错误   java根据用户输入在PreparedStatement中使用setTime()或setNull()   java EJB与同步   java以object为键通过hashmap进行搜索   java中的模10^9+7   针对包含其他对象的对象的java OOP最佳实践   如何将字符串作为HTML代码从Java文件读取到JSP页面?   java我的POM怎么了?“解析表达式..检测到递归表达式循环”   用于Hbase的Mapreduce的java NoSuchMethodError   JAVAlang.SecurityException:权限拒绝:启动意图{act=安卓.Intent.action.MAIN cat=[安卓.Intent.category.LAUNCHER]   数组初始化谜语Java   通过arraylist搜索时的java句柄关联