Список маркеров MigraDoc (отверстия) - PullRequest
6 голосов
/ 09 марта 2012

В своем решении я использую список маркеров в файлах PDF.

Это выглядит примерно так:

• Solcellepaneler kræver hverken autoriseret service eller tidskrævende vedligehold.
• Solceller er støjfri, forurener ikke og har ingen bevægelige dele, hvilket mindsker
service og vedligehold
• Solceller kan integreres i bygningers arkitektur eller anvendes som
bygningselement i form af tag, facader eller solafskærmning
• Solceller har lang levetid, med en produktionsgaranti på hele 25 år
• 10 kvadrameter solceller sparer ca. ½ ton CO2 om året

Что я хочу:

• Solcellepaneler kræver hverken autoriseret service eller tidskrævende vedligehold.
• Solceller er støjfri, forurener ikke og har ingen bevægelige dele, hvilket mindsker
  service og vedligehold
• Solceller kan integreres i bygningers arkitektur eller anvendes som
  bygningselement i form af tag, facader eller solafskærmning
• Solceller har lang levetid, med en produktionsgaranti på hele 25 år
• 10 kvadrameter solceller sparer ca. ½ ton CO2 om året

Код банкомата:

List<string> items = new List<string>();

            items.Add("Solcellepaneler kræver hverken autoriseret service eller tidskrævende vedligehold.");
            items.Add("Solceller er støjfri, forurener ikke og har ingen bevægelige dele, hvilket mindsker service og vedligehold");
            items.Add("Solceller kan integreres i bygningers arkitektur eller anvendes som bygningselement i form af tag, facader eller solafskærmning");
            items.Add("Solceller har lang levetid, med en produktionsgaranti på hele 25 år ");
            items.Add("10 kvadrameter solceller sparer ca. ½ ton CO2 om året");



        Style style = document.AddStyle("MyBulletList", "Normal");
        style.ParagraphFormat.LeftIndent = "0.5cm";

        for (int idx = 0; idx < items.Count; ++idx)
        {
            ListInfo listinfo = new ListInfo();
            listinfo.ContinuePreviousList = idx > 0;
            listinfo.ListType = ListType.BulletList1;
            SolcellDummyText = HvadErSolceller.AddParagraph(items[idx]);
            SolcellDummyText.Style = "MyBulletList";
            SolcellDummyText.Format.ListInfo = listinfo;
            listinfo.ContinuePreviousList = true;

        }

Есть ли способпоймать событие новой строки?

1 Ответ

17 голосов
/ 09 марта 2012

Просто установите LeftIndent стиля MyBulletList в соответствии с первой точкой табуляции, установите FirstLineIndent в отрицательное значение, чтобы освободить место для маркера - и все.

Для простоты: минимальные требования (при условии, что «параграф» является результатом AddParagraph):

paragraph.Format.LeftIndent = "2.5cm";
paragraph.Format.FirstLineIndent = "-0.5cm";
paragraph.Format.ListInfo.ListType = ListType.BulletList1;

Вот пример кода, который использует стиль (стиль был создан ранее, фрагмент кода только изменяет его):

style = styles["BulletList"];
style.ParagraphFormat.RightIndent = 12;
style.ParagraphFormat.TabStops.ClearAll();
style.ParagraphFormat.TabStops.AddTabStop(Unit.FromCentimeter(2.5), TabAlignment.Left);
style.ParagraphFormat.LeftIndent = "2.5cm";
style.ParagraphFormat.FirstLineIndent = "-0.5cm";
style.ParagraphFormat.SpaceBefore = 0;
style.ParagraphFormat.SpaceAfter = 0;

Как упоминалось ранее: весь «трюк» устанавливает LeftIndent и использует отрицательный FirstLineIndent для позиционирования маркера.

Чтобы добавить стиль, возьмите стили из документа и позвоните:

document.Styles.AddStyle("Bulletlist", "Normal");
...