使用iTextSharp或类似方法生成和设计PDF

tl; dr:基本上我只是想知道设计PDF文档的最佳/最简单方法是什么? 使用带代码的iTextSharp实际设计整个PDF文档是远程合法的(即不加载外部文件)? 我希望最终结果看起来类似于具有各种颜色,边框,图像和所有内容的网页。 或者您是否必须依赖其他文档,如.doc,.html文件来实现良好的设计?

最初我认为我会使用HTML标记来生成PDF,但是看到样式/ CSS的支持看起来有多糟糕,所以我要重新考虑整个情况。

这让我想到,为什么甚至使用HTML标记或.doc(x)文件来创建PDF设计,当我可以在PDF中正确地执行它而不必依赖于没有任何实际用途的各种文件。

我开始查看本指南(它是几个部分) http://www.c-sharpcorner.com/uploadfile/f2e803/basic-pdf-creation-using-itextsharp-part-i/

指南的一部分:

using (MemoryStream ms = new MemoryStream()) { Document document = new Document(PageSize.A4, 25, 25, 30, 30); PdfWriter writer = PdfWriter.GetInstance(document, ms); document.Open(); document.Add(new Paragraph("Hello World")); document.Close(); writer.Close(); Response.ContentType = "pdf/application"; Response.AddHeader("content-disposition", "attachment;filename=First PDF document.pdf"); Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length); } 

并获得了关于生成PDF并设计它们的基本知识。

但是有可能以这种方式生成和设计大型PDF文档,并且有更多适当的指南或类似的所有各种命令来生成文本,图像,边框和所有内容,因为我没有关于使用代码生成PDF的真实线索。

问题太宽泛了,所以我只能给你一个非常广泛的答案。

选项1:使用iText的高级对象创建布局。 有无数的应用程序使用PdfPTable生成复杂的报告。 例如:德国铁路公司的时间表是从头开始通过代码创建的; 比利时电信公司的发票是这样创建的……这种方法的优点是你可以真正微调布局。 缺点是您需要在需要更改布局时立即更改源代码。

选项2:通过创建AcroForm模板来创建布局。 此模板中的每个字段都有一个名称,并在特定页面上的确切位置(由其坐标定义)中可视化。 填写这样一个表单的代码只包含少量几行。 无论何时需要更改布局,都可以更改AcroForm模板。 您无需更改代码。 缺点是AcroForms非常静态。 将其与纸质表格进行比较:您也不能以纸质forms插入行。

选项3:您使用XHTML格式创建数据,并在CSS中创建样式。 负责为客户创建发票的比利时印刷公司将数据流式传输到非常简单的HTML文件中,这些文件涉及一系列表格,这些表格从不会超过少数页面。 然后将这些文件与每个客户不同的CSS一起提供给iText的XML工作者。 这种方法的优点是当新客户加入时不需要额外的编程。 这只是创建一个新CSS的问题。 缺点是您受HTML格式的限制。 基本逻辑还告诉您,您不应该期望URL2PDF:您是否尝试过打印网站? 那么,该打印质量差,应该可以让您了解在尝试将HTML转换为PDF时遇到的问题。 如果您预期它们,您可以获得良好的结果。 如果你不这样做……这是一个可怜的工匠,他责备他的工具……

选项4:使用XML Forms Architecture定义模板。 此类模板通常使用Adobe LiveCycle Designer创建。 将XSD输入LC Designer,结果为空格式,其中PDF格式充当XML流的容器。 然后,您可以使用iText将包含符合XSD的数据的自定义XML注入PDF,并且可以使用XFA Worker来展平此类表单。 XFA Worker仅作为封闭源产品提供(提供者需要设置限制,因为接收者很少这样做)。

选项5:现在XML Worker用于将XHTML + CSS和XFA转换为PDF(普通PDF,PDF / A,PDF / UA)。 您可以使用通用XML Worker引擎来支持您自己的XML格式。 优点是非常强大的引擎,您可以调整以满足您的确切需求。 缺点是这涉及严重的前期开发投资。

选项6:使用第三方工具定义模板和使用iText的第三方服务器根据模板创建PDF。 这种第三方工具的一个例子是由发明设计师开发的Scriptura。 还有其他工具,但创新设计师是iText的客户,我们知道他们正确使用iText,而我们没有其他供应商的这种保证。

我相信你可以用iText实现你的目标。 但是imho,你应该首先研究报告生成器之类的东西:

  • Sql Server Reporting Services,或
  • 水晶报告,或

在同一时间投资,您将有几种格式:HTML,DOCX,PDF,XLSX ……

当然,答案的针对性可能会根据要生成的文档的性质而有所不同:如果我们谈论的是1000页的文档,那么报表生成器不一定是最好的方法。