2014-10-06 74 views
4

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

最初我以为我会用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的真实线索码。

+0

是的,放弃使用iTextsharp从HTML生成PDF文件的整个想法,它目前只是不起作用。它不支持正确的样式/ CSS样式。 – ken2k 2014-10-06 14:39:30

+1

XML Worker支持XHTML + CSS,所以ken2k发表的评论不正确。但是:HTML从来不是用于定义布局的格式。如果你有一个简单的设计,HTML可以提供帮助,但如果你真的需要复杂的布局,你不会走得太远。 – 2014-10-06 15:35:18

回答

5

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

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

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

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

选项4:使用XML Forms架构定义您的模板。这些模板通常使用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。这种第三方工具的一个例子是由Inventive Designers开发的Scriptura。还有其他工具,但Inventive Designers是iText的客户,我们知道他们正确使用iText,但我们没有其他供应商的这种保证。

0

我确定你可以用iText达到你的目标。但恕我直言,你应该先调查之类的报表生成器:

  • SQL Server报表服务,或
  • 水晶报表,或
  • ...

在相当投入的同时,您将有多种格式:HTML,DOCX,PDF,XLSX ...

当然,根据要生成的文档的性质,答案的相关性可能会有所不同:如果我们正在谈论1000页的文档报告生成器不一定是最好的方式。

+0

我们在这里讨论的是几页,最好的情况是很少会接近10页(对于列表) 但是我也忘了提及这发生在网站上,而不是在本地机器上。我基本上已经准备好了所有的数据和一切。我只是想很好地格式化/设计它,并把它放在PDF – HenrikP 2014-10-06 14:46:50

+0

是的,但是qhat是页面的结构,它们与数据库内容有多大关系...... – tschmit007 2014-10-06 14:48:05

+0

它不会纯粹是数据显示。为了造型,在这里和那里会有很多设计和图像,但是对于实际文本,它主要是标题,标签及其数据 – HenrikP 2014-10-06 14:50:39