Php 合并/合并1000个SVG以创建可打印的PDF

Php 合并/合并1000个SVG以创建可打印的PDF,php,pdf,svg,mailmerge,Php,Pdf,Svg,Mailmerge,我每个季度需要产生大约100000张账单。目前,我有一个模板SVG文件,我在其中查找并替换PHP中的文本以生成一个新文件。这给了我想要的结果,但我必须发送这些文件打印太,在PDF格式。因此,在转换为SVG之后,我必须再次将所有文件转换为PDF&然后使用pdftk将它们合并到每个有1000页的PDF中 理想的情况是直接在一个模板pdf文件中通过文本搜索和替换生成pdf(以避免从头创建每个文件的开销),但我不知道如何做到这一点,因为pdf中的文本是编码的&我也找不到一种不嵌入字体就创建pdf的方法,

我每个季度需要产生大约100000张账单。目前,我有一个模板SVG文件,我在其中查找并替换PHP中的文本以生成一个新文件。这给了我想要的结果,但我必须发送这些文件打印太,在PDF格式。因此,在转换为SVG之后,我必须再次将所有文件转换为PDF&然后使用pdftk将它们合并到每个有1000页的PDF中

理想的情况是直接在一个模板pdf文件中通过文本搜索和替换生成pdf(以避免从头创建每个文件的开销),但我不知道如何做到这一点,因为pdf中的文本是编码的&我也找不到一种不嵌入字体就创建pdf的方法,这会不必要地增加文件大小

或者,如果我可以直接将SVG连接到一个大的PDF文件(1000个SVG的组合),而不首先将每个SVG转换为PDF,那也行

请记住,所有文本字段均根据其在账单格式上的各自位置对齐。因此,所有转换/合并都应精确&文本不应移动

所有操作都在无头linux服务器中进行,因此请CLI


请提供帮助。

SVG是一种单页文档格式。因此,无法创建可以转换为多页PDF的多页SVG。如果这就是你的意思


您正在尝试的操作通常被称为“邮件合并”。如果你在谷歌上搜索“邮件合并PDF”,你会得到很多可能的解决方案。最适合您的版本取决于您的操作系统和数据库。

基于此卷所需的确切功能(我假设每个季度一次完成100000个卷),我建议使用报表编写器工具。这可以使用开发环境中提供的工具(如Oracle Developer)或其他工具来完成

我最常使用的是JasperReports/iReports,这是一款免费产品,每次访问量超过10K页。在Servlet引擎上运行,或使用命令行中的“java”将其分离。在Word中生成10K或更多页面太麻烦了,即使有额外的加载项。作为一个页面描述工具,位置不会移动,您也可以在特殊字体中包含条形码或付款说明。我们在项目管理软件中使用了iReports的LGPL版本,例如,请参阅报表,然后单击管理->审核以获取报表。在我们的软件中,我们添加了一些类以使其更好地运行,还需要添加一个调度器以重复生成输出,例如发票并分发它们。它本身不包括调度程序

它还支持其他输出格式,如Excel、PowerPoint、XML、OpenOffice等。您可以自己添加更多渲染选项。它可以从大多数关系数据源以及各种面向对象的格式提供

运行时间各不相同,但如果设计正确,每秒10-100页是可行的


在PDF中替换是一个糟糕的计划;PDF的设计没有考虑到编辑。即使这是可能的。当您想以打印格式替换时,您也可以考虑使用PASScript和脚本替换占位符。

我搜索到,找不到任何CLI友好、批量可操作和轻量级的解决方案。然而,我发现了一些东西,比如FDF和交互式PDF&mail通过OpenOffice与PHP合并。上面指定的Guido解决方案也太重,无法实现。此外,我同意这些是替代解决方案,但并不比创建SVG更好。由于它是轻量级的,易于实现&SVGs也可以用于在浏览器中在线查看账单,而无需任何额外的编码。所以,我想我现在的问题是,如何打印包含100000 SVG的目录?您使用的是哪个操作系统?这是一个Linux解决方案和一些关于Windows的想法,这两个页面都是通过谷歌搜索“batch print SVG”找到的。您好,谢谢搜索。我使用的是Ubuntu linux 10.04服务器。在上面提到的页面上,最好的解决方案是使用inkscape CLI将SVG转换为PDF,我已经在做了。首先,我创建SVG,然后将每个SVG转换为PDF,然后将PDF合并成1000组,以便发送打印。我正在搜索绕过转换为PDF的部分。因此,在生成SVG之后,我可以将1000个SVG放入某种打印友好的容器中。