【问题标题】:Is this TOC scenario possible using c# and iTextSharp?这个 TOC 场景是否可以使用 c# 和 iTextSharp?
【发布时间】:2015-07-01 15:32:45
【问题描述】:

我刚刚下载了 iTextSharp,在我投入大量精力之前,我想知道这种情况是否可行。我们有一个客户坚持要求他们的 SSRS 报告 PDF 包含目录,最好带有页码。这些报告的各个组成部分具有高度可变的长度,因此我们无法对实际页码进行硬编码。大家可能都知道,没有直接的方法可以在 SSRS 中创建目录。 (我们甚至就此与 Microsoft 代表进行了一次特别会议。)

我想做的如下:

  • 通过设置目标位置在 SSRS 报告中标记目标位置 DocumentMapLabel 属性。

  • 以通常的方式从报表服务器生成 pdf 或 ReportViewer 控件。 (这将在 c# 中。)

  • 在我的假设代码中打开 pdf。

  • 在前面或附近插入空白页。

  • 扫描 pdf 中的 DocumentMapLabels(理想情况下,检测哪个页面
    他们在。)

  • 用指向各个部分的链接填充空白页面。

这可能吗?

【问题讨论】:

  • 是的,有可能。

标签: c# pdf-generation itextsharp ssrs-2012


【解决方案1】:

我不会使用你的设计。一旦 TOC 需要超过一页,您就有麻烦了。也许您确信今天不会发生这种情况,但如果明天需要呢?

你有不同的选择:

  1. 一次性创建文档。在末尾添加 TOC。在关闭文档之前重新排序页面。
  2. 使用目标的命名目的地创建一个文档(例如在内存中)。创建一个文档(例如,在内存中),其中的 TOC 引用了指定的目的地。将两个文档合并为一个文档,合并命名的目的地。
  3. 创建带有书签的文档(这将在 Adob​​e Reader 的左侧产生一个书签面板)。然后阅读书签以在 PDF 中创建 TOC,并将 PDF 与 TOC 与包含书签的文档合并。

所有这些都记录在案。

The Best iText Questions on StackOverflow,您会找到这些(以及许多其他)问题的答案:

你想做的事情是可能的,但不是你描述的方式。如果您对所选选项有疑问,请阅读本书,选择一个选项并发布一个新问题。只需下载那本书;它是免费的。

注意:iText(Sharp) 是免费软件不是 免费软件。这意味着它只有在您同意的情况下才免费开源许可证(AGPL)。如this video 所述,并非在所有情况下都免费。在开始 iText(Sharp) 项目之前了解这一点也很重要。

【讨论】:

  • 感谢您的及时回复和所有链接!
  • @user2996466 欢迎使用 StackOverflow。如果答案有帮助,请接受和/或投票。只有这样才能将答案用于进一步参考(例如,当有人发布重复问题时)。
猜你喜欢
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多