iText(夏普) - 用第一行文字保留章节标题会导致令人不快的书签

时间:2016-02-23 17:28:40

标签: c# itextsharp itext

我正在使用Chapter和Section对象创建一个PDF文档,所以我得到了漂亮的树形结构书签,这很棒,但我也想在章节和章节标题中应用“keep with next”,以便后面的第一段标题不会被推到标题的单独页面。

我这样做是通过使用我挂起的段落定义每个部分:

void AddSection(Section parentSection, string newSectionTitle)
{
   m_heading = new Paragraph(new Chunk(newSectionTitle));
   m_section = parentSection.AddSection(indentation, m_heading);
}

然后当我将第一个块添加到该部分时,我将其添加到该标题:

void AddTextToSection(string text)
{
   if (m_heading != null)
   {
      m_heading.Add(new Chunk("\n"));
      m_heading.Add(new Chunk(text));
      m_heading = null;
   }
   else
   {
      m_section.Add(new Chunk(text));
   }
}

除非书签包含第一段标题PLUS,否则效果很好。

有没有办法告诉章节或章节它应该在文档正文中显示文本X,但是使用文本Y定义书签?

1 个答案:

答案 0 :(得分:0)

结果Section有一个名为BookmarkTitle的属性,如果设置,则指定将用于书签标题的文本。

所以在我创建Section之后,在开始向它添加文本之前(通过我的AddTextToSection()函数),我从m_section.Title.Chunks中提取文本并将其设置为m_section.BookmarkTitle。