我们公司正在考虑将发票整合到我们正在开发的新系统中。
我们需要一些解决scheme来创build发票的布局,然后转换为PDF。
我们已经考虑只是在HTML / CSS然后转换为PDF格式的发票。 我们也考虑过使用SVG-> PDf转换。
这两个解决scheme都很好地融入了我们现有的用于Web应用程序的模板语言。
从历史上看,我们一直是基于微软的业务,并且使用Crystal Reports来完成这个任务,但是我们正在为这个项目寻找一个开源的Linux解决scheme。
有没有人对我们可以用于这样的任务的方法或技术有任何build议?
试试这个…用Word(或任何你想要的)创建一个空白的发票,并将其保存为PDF。
然后使用PDF库来修改PDF(在特定坐标处插入文本)。 我们在微软的世界里这样做,这是非常容易的。
最大的好处是我们可以使用我们自己的工具来创建和修改模板。 如果我们想添加一些静态文本,我们只需打开Word,进行更改并将其保存为PDF文件(即用作模板)。
对于Microsoft,我们使用iTextSharp ,它实际上是iText原始Java版本的 C#端口
另外…
您可以使用Adobe Acrobat在PDF中插入字段(地址,电话号码,发票号码,订单项1,订单项2等),然后使用iText / iTextSharp在运行时填充这些字段。
这是更详细的,我们做什么…这是非常容易的。
正常的方法是安装(La)TeX(可能已经在Linux机器上)并运行pdflatex来获取pdf。 如果你喜欢xslt和xsl-fo,你也可以使用Apache FOP。
如果要创建的发票数量很少,则可能需要使用开放式办公室(直接或作为工具包)。
如果你想要高精度定位和低级访问,一个低级别的pdf库(我不知道iTextSharp是否可以和mono一起工作)可能是你想要的。
我会首先尝试使用LaTeX,因为它可以让您以最小的努力获得结果。
我们使用Reportlab和Python。 如果你环顾四周,有一大堆现成的表格/发票/等等。
我以前通过模板化PostScript文件制作发票,然后使用Ghostscript的ps2pdf
将这些发票转换为PDF。
有几个OSS报告引擎( Jasper Reports , Pentaho和BIRT命名为三个),您可以使用与历史上使用Crystal Reports几乎相同的方式。 其他海报之一提到了ReportLab ,如果您使用的是Python,或者可以在您的应用程序中嵌入Python运行库,那么这是一个选项。
可能最灵活的解决方案是使用发票数据创建XML,然后使用XSLT将其转换为PDF,HTMls,无论如何…
这取决于你的环境。 如果您有权访问Java,则可以查看iText( http://www.lowagie.com/iText/ ),它是一个允许您即时生成PDF文件的库。
有两个步骤,如果我理解正确的话:
1)用占位符创建PDF模板以编程方式填充数据
2)在运行期间以编程方式填充PDF模板
对于#1,OpenOffice允许创建PDF模板,然后以编程方式填充。 创建简单的发票不足以涉及datagrid / table类型的东西已经足够了。
对于#2,你已经有了答案 – iText,iTextSharp。
希望这可以帮助!
不知道你的目标是在这里,但有一个名为fpdf的开源PHP库,它也有一个扩展,用于预先制作PDF作为布局,然后用更多的内容填充它,生成一个新的PDF与该信息。
然而,我会寻求一种解决方案,你可以很好地集成到你正在构建的平台,但是我不会去HTML-> PDF解决方案,因为你不会有什么线索可以适合一块关于这种环境下的大小的文件,这意味着你不知道什么时候应该把内容分成两个单独的模板。
您也可以尝试使用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等。
其他选项:
iTextSharp(iText的C#端口)。 刚开始阅读这个。 开源和免费。 我不认为有这样的“模板”支持,但我可能是错的。
SQL server报告服务。 假设您的发票数据处于或可以放入可由报告服务(SQL server,Web Service等)读取的格式,请在SSRS中定义布局,然后发布到报告服务器。 使用SSRS Web服务或查询参数执行来执行报告并将其输出为PDF。
我爱wkhtmltopdf http://code.google.com/p/wkhtmltopdf/
这个html-2-pdf网站可能是一个有用的起点: http : //maarten.lippmann.us/?p = 101
我建立的一个网站使用脚本将HTML页面转换成可打印的PDF文件 – http://philambdaupsilon.org 。 不确定的确切细节,但他是一个SO用户,我也会把这个问题发给他。
不幸的是,目前市场上最好的系统是将HTML和CSS传递给ColdFusion服务器,并返回呈现的PDF。 所以,如果钱不是一个大问题,这是最快的部署解决方案,将会产生最好的结果。
我已经非常努力地获得了FPDF,TCPDF,R&OS pdf类,甚至CodeIgniter的建议 ,但是除了最基本的/无用的HTML文件之外,没有任何东西可以提供稳定的输出。
老实说,如果ColdFusion解决方案不可行,我会使用html2ps,然后ps2pdf将您的文件转换为PDF。
(这一切都假设你不想花费时间和设计每个PDF在PDF中使用原生PDF编码器的代码,这是什么系统像SugarCRM使用。虽然它的功能非常稳定的结果,实际创建每个PDF生成器文件是一个最痛苦的过程)
我们之前使用过Jasper Reports。 这不是你称为用户友好的,但它会直接与你的数据库。
html2pdf工作得很好。 您可以使用它从同一个来源生成HTML和PDF报告。
现在我正在摆弄Black Sheep Invoices ,这个很好,但现在我实际上难以获得PDF。 很多安装困难 – 可能在你自己的服务器上更容易,但是我在共享主机上。 HTML输出和数据管理部分虽然做得很好,但是你不能仅仅创建一个postscript模板。 我希望能找到一个有活跃开发团队的图书馆(黑羊此时没有更新)。
如果你想浏览器完美的HTML转换为PDF,然后尝试commandlineprint
您需要在Linux发行版上安装firefox,禁用所有的Firefox警报,然后通过虚拟显示器运行。 检查这个线程的更多细节。
这真是令人愤慨,得到良好的运行,但给你我所见过的HTML到PDF转换的最佳结果。
好的,Google代码项目的搜索出现了Simple Invoices ,这很棒,维护得很好。
我使用TROFF作为我的发票,因为它的文本编码非常简单。 逻辑是几行Perl。 保持简单。
对于Ruby解决方案,请试试Prawn: http : //prawn.majesticseacreature.com/
我在服务器上使用开放式办公室,然后为文档生成XML(只需解压缩文档并破解)
有些人可以使用Dhek模板编辑器为现有的PDF定义区域/占位符,而不用改变现有的文档,然后填充它来生成最终的文档(例如用表单中的用户值): https : //github.com/applicius/dhek 。