【问题标题】:Generate and design PDF with iTextSharp or similar [closed]使用 iTextSharp 或类似工具生成和设计 PDF [关闭]
【发布时间】:2014-11-30 20:14:32
【问题描述】:

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

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

这让我想到,既然我可以直接在 PDF 中进行操作,而不必依赖各种没有实际作用的文件,为什么还要使用 HTML 标记或 .doc(x) 文件来创建 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 没有真正的线索.

【问题讨论】:

  • 是的,放弃使用 iTextsharp 从 HTML 生成 PDF 文件的整个想法,它目前只是行不通。它不正确支持样式/CSS 样式。
  • XML Worker 支持 XHTML + CSS,所以 ken2k 的注释是不正确的。但是:HTML 从来都不是定义布局的格式。如果你有一个简单的设计,HTML 可以提供帮助,但如果你真的需要复杂的布局,你就不会走得太远。

标签: c# .net pdf pdf-generation itextsharp


【解决方案1】:

这个问题太笼统了,所以我只能给你一个很笼统的答案。

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

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

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

选项 4: 使用 XML 表单架构定义您的模板。此类模板通常使用 Adob​​e 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,而我们没有其他供应商提供的保证。

【讨论】:

    【解决方案2】:

    我相信您可以使用 iText 实现您的目标。但是恕我直言,您应该首先调查报告生成器之类的东西:

    • Sql Server 报告服务,或
    • 水晶报告,或
    • ...

    在同一时间投资,您将拥有多种格式:HTML、DOCX、PDF、XLSX...

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

    【讨论】:

    • 我们在这里谈论几页,充其量很少会接近 10 页。(对于列表)但我也忘了提到这是在网站上进行的,而不是在本地计算机上。我基本上已经准备好了所有的数据和一切。我只是想很好地格式化/设计它并将其放入 PDF 中
    • 是的,但是 qhat 是页面的结构,它们与数据库内容有多大关系...
    • 不会是单纯的数据展示。为了样式,这里和那里会有很多设计和图像,但至于实际文本,主要是标题、标签及其数据
    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2022-10-06
    • 2015-11-09
    • 1970-01-01
    相关资源
    最近更新 更多