使用itextsharp的简单目录

时间:2019-03-27 09:45:22

标签: c# itext

我有一个网站,该网站在Telerik radwindow中使用itextsharp显示pdf。我成功地在telerik radwindow弹出窗口上显示了pdf。  现在,我有了页面名称及其顺序,需要重新排列以使用itextsharp像下面显示TOC

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以通过创建带有tabPosition大块分隔符(参见this answer)来实现(使图像中显示的页面编号保持对齐)

using (FileStream output = new FileStream(@"simpleToc.pdf", FileMode.Create, FileAccess.Write))
using (Document document = new Document(PageSize.A4))
{
    PdfWriter writer = PdfWriter.GetInstance(document, output);
    document.Open();

    Chunk leader = new Chunk(new DottedLineSeparator(), 400);

    Paragraph p = new Paragraph("Terms and Conditions");
    p.Add(leader);
    p.Add("4");
    document.Add(p);

    p = new Paragraph("Dental");
    p.Add(leader);
    p.Add("6");
    document.Add(p);

    p = new Paragraph("Vision");
    p.Add(leader);
    p.Add("7");
    document.Add(p);

    p = new Paragraph("Neighborhood Pharmacy");
    p.Add(leader);
    p.Add("8");
    document.Add(p);

    p = new Paragraph("Teladoc");
    p.Add(leader);
    p.Add("9");
    document.Add(p);

    p = new Paragraph("Retail Health Clinics");
    p.Add(leader);
    p.Add("11");
    document.Add(p);

    p = new Paragraph("Counseling Services");
    p.Add(leader);
    p.Add("12");
    document.Add(p);

    p = new Paragraph("Medical Bill Saver\u2122");
    p.Add(leader);
    p.Add("13");
    document.Add(p);

    p = new Paragraph("Vitamins");
    p.Add(leader);
    p.Add("14");
    document.Add(p);
}

结果看起来像这样

Screen Shot


当您将库称为“ iTextSharp”并且仅使用[iText]标签时,我假设您使用的是iText 5.x,而不是7.x。上面的代码已经使用当前的5.5.14-SNAPSHOT开发版本进行了测试。


上面使用的Chunk构造函数被标记为已过时

/**
* Creates a tab Chunk.
* Note that separator chunks can't be used in combination with tab chunks!
* @param   separator   the drawInterface to use to draw the tab.
* @param   tabPosition an X coordinate that will be used as start position for the next Chunk.
* @since   2.1.2
*/
[Obsolete]
public Chunk(IDrawInterface separator, float tabPosition) : this(separator, tabPosition, false)

但是,由于旧的iText 5.x总体上处于维护模式,因此无需担心它将在进一步的开发过程中从程序集中删除。