Простое оглавление с itextsharp - PullRequest
0 голосов
/ 27 марта 2019

У меня есть веб-сайт, где я показываю pdf с itextsharp в telerik radwindow. Я преуспел с отображением pdf на всплывающем окне telerik radwindow. Теперь у меня есть имя страницы и их порядок, и мне нужно изменить порядок отображения содержания, как показано ниже, с помощью itextsharp

enter image description here

1 Ответ

0 голосов
/ 27 марта 2019

Вы можете сделать это, создав разделитель чанков (ср. этот ответ ) с tabPosition (чтобы номера страниц были выровнены по левому краю, как показано на изображении).

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 в целом находится в режиме обслуживания, нет необходимости опасаться, что она будет исключена из сборки при дальнейшей разработке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...