如何从模板和数据表创建多幅图像?
例如,CSV 文件中的多张名片包含姓名、职位和联系方式?
我知道可以通过编写脚本来实现这一点,比如使用svgwriter
Python 或 Python + LaTeX,但也许已经存在特殊的软件了?
PS:有提到类似问题这里,但我的要求稍微弱一些:任何图像都可以,不仅限于 PDF。我只是想知道这个简单的任务是否有更用户友好的实现。
答案1
正如@techie007所建议的,维基百科关于邮件合并的文章包含一些软件解决方案的链接,这些软件解决方案允许从给定的模板和数据源创建批量打印。OpenOffice能也可以使用专门的软件(例如用于打印名片的软件)来完成这项工作。
答案2
这个问题已经有十年了,但仍然有人寻求使用邮件合并程序将模板与数据源结合起来。
几年前,我编写了一个 powershell 函数,它使用 csv 文件作为数据源,并将该数据插入模板,产生重复扩展。这很像邮件合并。
模板几乎可以是任何类型的代码:SQL、HTML,甚至是参数中包含变量的 PS1 函数调用。模板中的变量看起来像 powershell 变量,并且与 csv 文件中的字段具有相同的名称。
如果您想查看整个软件包(包括演示),请参阅 github.com/dcressey/expand-csv
如果你只是想看看源代码,这里是:
<#
.NOTES
Script: Expand-Csv Rev: 3.2
Author: DGC Date: 2-21-19
.SYNOPSIS
Generates multiple expansions of a template,
driven by data in a CSV file.
.DESCRIPTION
This function is a table driven template tool.
It generates output from a template and
a driver table. The template file contains plain
text and embedded variables. The driver table
(in a csv file) has one column for each variable,
and one row for each expansion to be generated.
#>
function Expand-csv {
[CmdletBinding()]
Param (
[Parameter(Mandatory=$true)] [string] $driver,
[Parameter(Mandatory=$true)] [string] $template
)
Process {
Import-Csv $driver | % {
$_.psobject.properties | % {Set-variable -name $_.name -value $_.value}
Get-Content $template | % {$ExecutionContext.InvokeCommand.ExpandString($_)}
}
}
}