创建PDF发票 - 是否有任何模板解决方案?

时间:2008-11-06 23:05:05

标签: linux pdf open-source templating invoice

我们公司正在寻求将发票整合到我们正在开发的新系统中。

我们需要一个解决方案来创建发票布局,然后转换为pdf。

我们考虑过在html / css中布置发票然后转换为pdf。 我们还考虑过使用SVG-> PDf转换。

这两个解决方案都很好地集成到我们用于Web应用程序的现有模板语言中。

从历史上看,我们一直是基于Microsoft的业务,并使用Crystal Reports执行此类任务,但我们正在为此项目寻找开源Linux解决方案。

是否有人对我们可以用于此类任务的方法或技术有任何建议?

22 个答案:

答案 0 :(得分:10)

正常的方法是安装(La)TeX(可能已经在Linux机器上)并运行pdflatex来获取pdf。如果您更喜欢xslt和xsl-fo。

,也可以使用Apache FOP

如果要创建的发票数量很少,您可能希望使用开放式办公室(直接或作为工具包)。

如果您想要高精度定位和低级别访问,低级pdf库(我不知道iTextSharp是否与单声道一起工作)可能就是您想要的。

我会首先尝试使用LaTeX,因为它可以让您以最少的努力获得结果。

答案 1 :(得分:9)

尝试此操作...使用Word(或任何您想要的内容)创建空白发票并将其另存为PDF。

然后使用PDF库修改PDF(在特定坐标处插入文本)。我们在微软世界中这样做,这非常容易。

最大的好处是我们可以使用自己的工具来创建和修改模板。如果我们想添加一些静态文本,我们只需打开Word,进行更改并将其保存为PDF文件(用作模板)。

对于Microsoft,我们使用iTextSharp,它实际上是原始Java version of iText

的C#端口

此外...

您可以使用Adobe Acrobat在PDF中插入字段(地址,电话,发票编号,第1行,第2行等),然后使用iText / iTextSharp在运行时填充这些字段。

更详细地说,这是我们做的......而且非常容易。

答案 2 :(得分:6)

我们在Python中使用Reportlab。如果您环顾四周,那里有大量现成的表格/发票等等。

答案 3 :(得分:5)

我之前通过模板化PostScript文件,然后使用Ghostscript的ps2pdf将这些文件转换为PDF来制作发票。

答案 4 :(得分:3)

有几个OSS报告引擎(Jasper ReportsPentahoBIRT来命名三个),您可以使用它们与历史上使用Crystal Reports的方式大致相同。其中一个海报提到了ReportLab,如果您使用的是Python,或者可以在您的应用程序中嵌入Python运行时,这是一个选项。

答案 5 :(得分:2)

最灵活的解决方案可能是使用发票数据创建XML,然后使用XSLT将其转换为PDF,HTMls,等等......

答案 6 :(得分:2)

这取决于您的环境。如果您有权访问Java,您可以查看iText(http://www.lowagie.com/iText/),这是一个允许您动态生成PDF文件的库。

答案 7 :(得分:2)

如果我理解正确,有两个步骤:
1)创建带有占位符的PDF模板,以编程方式填充数据 2)在运行时以编程方式填充PDF模板

对于#1,OpenOffice允许创建PDF模板,然后可以通过编程方式填充。创建简单的发票并不太可能涉及datagrid / table类的东西。

对于#2,你已经有了答案 - iText,iTextSharp。

希望这有帮助!

答案 8 :(得分:1)

不确定你的目标是什么,但是有一个名为fpdf的开源php库,它还有一个扩展,用于将预制的pdf作为布局,然后用更多内容填充它,生成一个新的PDF资讯

但是,我会寻求一个解决方案,你可以很好地融入你正在构建的平台,但我不会进入HTML-> PDF解决方案,因为你不会有任何关于什么适合的线索在一张关于那种环境中的大小的纸上,这意味着你不知道何时应该将内容分成两个单独的模板。

答案 9 :(得分:1)

答案 10 :(得分:1)

您也可以尝试使用XSL:FO。 XSL:FO是用于描述页面布局的文档化标准:http://www.w3.org/TR/xsl/#fo-section

通过创建定义“PDF”内容的XML模式,我在两个创建文档的项目上取得了成功。然后,我使用XSD工具(来自Microsoft)生成表示此文档的类。然后,我将数据映射到该结构,将填充的类序列化为XML,以及定义如何将数据映射到FO的XSL样式表,并将其传递给FO格式化程序。对于格式化程序,我已成功使用Alt-Soft的Xml2Pdf。还有其他几个。有一些工具可以帮助创建XSL到FO样式表(即stylusstudio和XmlSpy),但我建议学习FO结构,因为这些工具似乎会产生膨胀的样式表。 FO与HTML相当(其中P标签是FO中的BLOCK标签),但可能很棘手。关于FO的一个好处是,某些格式化程序支持转换为其他格式,如Word,HTML等。

其他选择:

  1. iTextSharp(iText的C#端口)。刚开始读到这个。开源和免费。我不认为这有任何“模板”支持,但我可能错了。

  2. SQL Server Reporting Services。假设您的发票数据位于或可以放入报告服务(SQL Server,Web服务等)可以读取的格式,请在SSRS中定义布局,然后发布到报告服务器。使用SSRS Web服务或查询参数执行来执行报告并将其输出为PDF。

答案 11 :(得分:0)

有些人可以使用Dhek模板编辑器为现有PDF定义区域/占位符,而不更改现有文档,然后填充它以生成最终文档(例如,使用表单中的用户值):https://github.com/applicius/dhek

答案 12 :(得分:0)

这个html-2-pdf网站可能是一个有用的起点:http://maarten.lippmann.us/?p=101

我的朋友建立的网站也使用脚本将HTML网页转换为可打印的PDF文件 - http://philambdaupsilon.org。不确定它的具体细节,但他是一个SO用户,我也会把这个问题发给他。

答案 13 :(得分:0)

我在服务器上使用开放式办公室,然后为文档生成XML(只需解压缩文档并将其删除)

答案 14 :(得分:0)

对于Ruby解决方案,请尝试Prawn:http://prawn.majesticseacreature.com/

答案 15 :(得分:0)

我使用TROFF作为我的发票,因为它的文本编码非常简单。逻辑是几行Perl。保持简单。

答案 16 :(得分:0)

好的,Google代码项目的搜索出现了Simple Invoices,这很棒且维护得很好。

答案 17 :(得分:0)

如果您希望浏览器完美HTML转换为PDF,请尝试commandlineprint

您需要在Linux发行版上安装firefox,禁用所有firefox警报,然后通过虚拟显示器运行它。 Check this thread了解更多详情。

运行良好令人愤怒,但确实为您提供了我见过的HTML到PDF转换的最佳结果。

答案 18 :(得分:0)

我现在正在摆弄Black Sheep Invoices,这一开始很棒,但现在我实际上遇到了渲染PDF的问题。很多安装困难 - 在你自己的服务器上可能要容易得多,但我在它的共享主机上。 HTML输出和数据管理部分做得很好,这是你不会只是创建一个postscript模板。我希望找到一个有一个活跃的开发团队的图书馆的参考(黑羊目前没有更新)。

答案 19 :(得分:0)

html2pdf效果很好。您可以使用它来生成来自同一来源的HTML和PDF报告。

答案 20 :(得分:0)

我们之前使用过Jasper Reports。这不是你称之为用户友好的,但它会直接与你的数据库对话。

答案 21 :(得分:0)

不幸的是,市场上最好的系统(目前)正在通过HTML& CSS到ColdFusion服务器并返回渲染的PDF。因此,如果资金不是一个大问题,那么这是部署解决方案最快的结果,可以产生最佳结果。

我已经非常努力地让FPDF,TCPDF,R& OS pdf类,甚至CodeIgniter's recommendation都能正常工作,但除了最基本/最乏味的HTML文件之外的任何东西都没有稳定的输出。

老实说,如果ColdFusion解决方案不可行,我会使用html2ps,然后使用ps2pdf将文件转换为PDF格式。

(这是假设您不想花时间并使用PHP中的原生PDF创建器代码设计每个PDF。这就像SugarCRM使用的系统。虽然它的功能非常稳定,但实际上创建每个PDF生成器文件是一个最痛苦的过程)