2016-03-21 66 views
1

我的任务是创建一个集中的服务器(或者寻求一些已经工作的),这个服务器具有能够返回传递一些数据的PDF文件的API以及模板名称成为一个强大的解决方案,企业就绪。目标如下:PDF创建服务器

  • 一系列用于不同公司事物的模板。 (发票,订单,订单计划等)
  • 从外部软件(网站,ERP等)返回PDF的方法
  • 可以是已经准备好的企业解决方案,但他们正在按自定义的一个。
  • 可以是任何语言,但我们没有任何专用的Java程序员。我们是PHP/.NET,我们中的一些人涉足,但学习曲线可能有点陡峭。

所以,我一直在阅读。我们认为可能的一种方式是安装jasper reports服务器,并在Jaspersoft Studio中创建模板,然后使用API​​返回PDF文件。一个同事代表这个选项,因为它大部分都是完成的,但1º是java和2º,我认为这就像使用锤子来打破坚果。

我们一直在尝试的其他选择是使用C#与iTextSharp创建一个服务器,并创建我们自己的API,以便根据我们需要的数据准确返回PDF。这样做,我们可以获得一些好处,比如使用我们已经完成的数据库连接器,并从数据库中提取大部分数据,而不必传输大量数据,但由于它是光秃秃的,真的有一个模板系统。我们可以用XMLWorker或c#类创建一些东西,但它不像拖放那样“容易”。对于这种情况,我也一直在阅读关于XFA的文章,但iText网站上的文档有误导性,并且不清楚。

我一直也阅读一些其他的替代品,如PrinceXMLPDFBox的FOP等,但概念是相同的iText的,我们不得不自己动手。

我的投票,即使更多的工作是去iText的路线,并使用HTML/CSS的模板,但我的同事声称,模板应该能够每隔一周更改一次(我怀疑它),并且很容易。 HTML/CSS将会工作太多。

所以真正的问题是,其他业务如何处理?我在搜索时留下了什么?有没有更简单的方法来实现这一目标? PS:我不知道SO是否是这个问题的正确位置,但我主要是迷路了,冒着“太广泛的问题”或“脱离主题”标签冒险似乎并不是那么糟糕。

EDIT

  • 输入应具有相同的请求被发送。如果我们决定C#路线,我们可以直接从ERP获得约70%的数据,但无论如何,它应该接受带有一些数据(模板和该模板所需的模板和数据,如发票数据或发票ID,如果我们有权访问ERP)。
  • 输出应该是PDF(对其他格式不感兴趣,只是PDF)。
  • 模板将被更新只有由IT。 (主要是我们,开发团队)。性能方面,我不知道我们需要多少肌肉,但是现在,没有任何增加,我们每天约看500/1000份PDF,大多数是从10到10.30和12到13小时打印的。那么今天剩下的时间可能会多达100次。
  • 当行星对齐时,TOP性能不应该超过每天10000个,并且是销售季节(每年两次)。这应该是我们今后几年的最高限额。
  • 模板有一些要求:

    • 有无重复块(发票行,例如)。
    • 将图像作为背景,作为水印和块。
    • 必须是多语言(可翻译,具有相同的数据)。
    • 有一些只显示条件的块。
    • 块取决于在页面上(PDF页眉/页的页眉/页脚/ PDF页脚)
    • 模板将也许有过一些数据做计算,我不认为我们会永远需要这个,但公司可能会提出这个问题。
  • PDF不需要存储,因为我们有一个文档管理系统,也许将来我们可以链接它们。

额外的数据:现在我们使用的是“快速报告V2 VCL

+0

* iText网站上的文档有误导性和不明确* - 没有引用的索赔不是很公平。 – mkl

+0

对不起,我没有解释我自己,我不是说文档不清楚,我会编辑它,我的意思是我去了http://developers.itextpdf。只能找到参考文献和实例,而不是文档*本身*,我无法真正评估该产品是否符合我的需求,不容易理解XFA,模板功能或什么是或不是。我必须从itext站点读取它。我最清楚的是我和我对文档的期望。 – TJSoler

回答

1

你的问题表明你寻求帮助,所以我之前一直在考虑具体问题确定SO会很友善。

当然你在描述中没有详细描述的一件事是更广泛的功能需求。你提到用锤子打破螺母,但我认为你主要关注技术/接口。如果您考虑对需要创建的文档的更广泛的要求,涉及的变量,它可能是您认为的更大的问题。

我建议的方法是建立原型解决方案,假设您有一定的空间可以这样做。从你的研究中,选择最好的3来尝试,其中可能包括你想到的自定义构建。让他们通过一些真实的使用案例,从头到尾 - 尽可能的粗糙但现实。应该在所有解决方案中使用一到两个需要输出的关键文档。确保你覆盖了最重要或最常见的要求:

  1. 输入格式 - 谁可以/应该更新模板。什么是理想的要求和最低要求是什么? 输出要求 - 您要交付给谁以及哪些格式是必需/可取的
  2. 数据要求 - 您的数据来源是什么以及从数据源获取数据到报告的难易程度系统需要的格式?
  3. 模板功能 - 如果您使用的是模板,模板需要哪些功能?这包括输入格式,但我主要考虑引擎的功能,如重复/条件内容,图像插入,表格操作等。即您的发票,订单和计划文档是简单还是复杂的
  4. API要求 - 您是否有更广泛的API要求。您提到您使用PHP,因此PHP库或Web/Web Service可能是一个很好的起点。
  5. 性能 - 您尚未提及任何性能特征,但当然,如果您在规模(企业级)工作,则值得对吞吐量进行粗略测量。

iText和Jasper肯定是您可以信赖的企业级引擎。您可能希望看看Docmosis(请注意我为公司工作),并且可能会对使用模板的PDF库进行一些搜索。

Web服务接口可能是您可能想要查看的关键功能。 REST API很容易从PHP和几乎任何技术堆栈调用。这意味着您可能会有关于如何构建解决方案的选项,并且通常很容易针对其进行原型设计。如果您决定走下原型路径并尝试Docmosis,那么从云服务开始,因为您可以非常快速地进行原型/集成。

我希望有帮助。

+0

谢谢!每当我花一点时间编辑问题时,我会用一些更多的细节来编辑问题,但现在,我们现在使用过时的解决方案(快速报告3,集成在定制的erp中),我们生产大约500 - 1000每天的pdf,大多是在峰值时段,但如果我们将这个系统中的所有内容集中到计划中,今年应该每天打印约5000份(在几个月的销售高峰期约为10000份),并且每年都会增长。我们只有〜10个模板,但相当复杂(重复/条件/ multilang/images/...),模板将由我们(开发团队)编辑。 – TJSoler

0

从我多年的经验与PDF的工作,我认为你应该注意以下几点:

  1. 性能:你可以做基于API的PDF文件生成的对比最快的性能到HTML或XML到PDF的生成(因为涉及一个额外的转换层)。考虑到负载峰值,您可能需要通过添加更多服务器来计算扩展生成的成本(并估算每天额外的pdf文件所需的额外服务器或资源的成本)。

  2. 易于迭代和更改:您需要多久调整一次模板?如果你打算只创建一次模板(有一些迭代),但不需要做任何更改,那么只需使用API​​对它们进行编码即可。否则,您应该强烈考虑使用HTML或XML模板来简化更改并降低模板更改的复杂性;

  3. 搜索和索引:如果您可能需要在创建的文档之间运行搜索,那么您应该考虑存储生成的文档的索引,或者可能将源数据存储在XML中以及生成的PDF文件;
  4. 长时间保存:您应该更好地符合PDF/A子格式,以防您正在为文档寻找长时间的数字保存。请参阅VeraPDF open source initiative,您可以使用它来验证生成和传入的PDF文档是否符合PDF/A要求;
  5. 保留源文件 PDF格式本身并未设计为可编辑(尽管已经有一些PDF编辑器),因此您可能会考虑保留源数据以便能够稍后重新生成PDF文档,并且可能会引入额外的输出格式。