使用模板和数据表创建图像

使用模板和数据表创建图像

如何从模板和数据表创建多幅图像?

例如,CSV 文件中的多张名片包含姓名、职位和联系方式?

我知道可以通过编写脚本来实现这一点,比如使用svgwriterPython 或 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($_)} 
       }
    }
}

相关内容