2008-11-06 56 views
17

我们公司正在考虑将发票整合到我们正在开发的新系统中。创建PDF发票 - 是否有任何模板解决方案?

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

我们认为只是摆出的HTML/CSS的发票,然后转换为PDF格式。我们也考虑过使用SVG-> PDf转换。

这两种解决方案的集成以及到用于我们的web应用程序我们现有的模板语言。

从历史上看,我们一直是微软的商业和使用水晶报表这样的任务,但我们正在寻找这个项目的开放源码的Linux解决方案。

任何一个是否有一种方法或技术,我们可以用这样一个任务有什么建议?

回答

9

试试这个......用Word(或任何你想要的)创建一个空白发票并保存为PDF。

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

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

对于微软来说,我们使用iTextSharp这实际上是原来的Java version of iText


另外一个C#端口...

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

这就是,更详细地说,我们所做的事情......这非常简单。

+1

这样的修改PDF的应用程序将是因为这样的PDF文件构成的巨大的痛苦。每个元素都有一个固定的位置,并没有“回流”thingamajari,可以让您在保留布局的同时调整内容。 – 2008-11-06 23:16:17

+0

@Jasper - 如果我们在谈论发票,那并不难。你知道什么坐标可以输入文本,而且通常只需要一行一行。顺便说一句...我更新了另一个想法。 – Jason 2008-11-06 23:20:03

+0

啊是的,可能不太考虑用例。我避免产生这样的PDF文件的原因是因为它不会在合同管理系统,将已经不得不把各种特技来获得美观的文本制定。 – 2008-11-06 23:34:42

5

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

+0

+1 - Postscript不是很难生成。在捏中,您可以查看DTP或绘图程序的输出。 – ConcernedOfTunbridgeWells 2008-11-07 11:57:10

+0

嗯,是的,但我制作的手工;-) – Alnitak 2008-11-07 22:55:27

0

不幸的是,市场上最好的系统(目前)正在将HTML HTML代码传递给ColdFusion服务器,并返回呈现的PDF。因此,如果钱不是一个大问题,那么这是部署解决方案最快的解决方案,可以实现最佳效果。

我已经非常努力地获得FPDF,TCPDF,R & OS pdf类,甚至CodeIgniter's recommendation的工作,但没有稳定的输出,除了最基本/无用的HTML文件之外的任何东西。老实说,如果ColdFusion解决方案不可行,我会使用html2ps,然后ps2pdf将您的文件转换为PDF。 (这一切都假设你不想花费时间和设计每个PDF使用PHP中的原生PDF创建者代码,这是SugarCRM使用的系统,虽然它的功能非常强大且结果稳定,每个PDF生成器文件的实际创建是最痛苦的过程)

6

我们使用Reportlab与Python。如果你环顾四周,有一大堆现成的表格/发票/等等。

+0

所有地雷这不是免费的,但它是全面的,做这项工作很好。 – btk 2013-05-01 23:58:36

+0

还有一个免费的开源版本:http://www.reportlab.com/software/opensource/ – hoju 2013-09-14 00:16:24

1

不确定你的目标是什么,但有一个名为fpdf的开源php库,它也有一个扩展,用于将预先制作的pdf作为布局,然后用更多的内容填充它,生成一个新的PDF该信息。但是,我会寻求一种解决方案,可以很好地集成到您正在构建的plattform中,但是我不会采用HTML-> PDF解决方案,因为您不会有任何线索可以找到适合的解决方案在关于这种环境下尺寸的一张纸上,这意味着你不知道什么时候应该将内容分成两个单独的模板。

2

可能是最灵活的解决方案是使用XSLT文件转换,转换成PDF,HTMLS,无论...

2

这取决于你的环境中创建与发票数据XML,并随后。如果您有权访问Java,则可以查看iText(http://www.lowagie.com/iText/),这是一个允许您即时生成PDF文件的库。

9

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

如果要创建的发票数量很少,您可能需要使用open-office(直接或作为工具包)。

如果你想要高精度定位和低级访问,一个低级别的pdf库(我不知道iTextSharp是否可以和mono一起工作)可能是你想要的。

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

0

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

3

有几个OSS报告引擎(Jasper ReportsPentahoBIRT命名为三个),你可以使用多达你在历史上使用水晶报表一样。其他海报之一提到ReportLab,如果您使用Python或者可以在您的应用程序中嵌入Python运行时,这是一个选项。

0

html2pdf工作得很好。您可以使用它从同一来源生成HTML和PDF报告。

0

我现在摆弄着Black Sheep Invoices,这一开始很好,但现在我实际上难以得到它来呈现PDF。很多安装困难 - 可能在您自己的服务器上更容易一些,但我在共享主机上使用它。尽管如此,HTML输出和数据管理部分都做得很好,这是你不会仅仅创建一个postscript模板而已。我希望找到一个拥有积极开发团队的图书馆(Black Sheep目前没有更新)。

0

如果你想浏览器完美HTML转换为PDF格式,然后尝试commandlineprint

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

这真的很让人满意,但确实为您提供了我见过的HTML到PDF转换的最佳结果。

0

好吧,谷歌代码项目的搜索出现了Simple Invoices,这是很棒的,很好的维护。

1

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

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

其他选项:

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

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

2

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

对于#1 ,OpenOffice允许创建PDF模板,然后以编程方式填充。创建不会涉及datagrid/table类型的简单发票已经足够了。

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

希望这会有所帮助!

0

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

0

我用开放式办公室的服务器上,然后生成文档的XML(只需要解压缩文件,谬以千里)

0

一些可以使用Dhek模板编辑器来定义区域/占位符现有的PDF,不改变现有的文档,然后(与来自形式的用户值EG)填充它来生成最终的文档:https://github.com/applicius/dhek