MigraDoc Bullet List (holes)
Asked Answered
F

1

6

In my Solution I am using bullet list in PDF files.

It looks something like that:

• 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

What I want :

• 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

Code atm:

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;

        }

Is there any way to catch newline event?

Fasten answered 9/3, 2012 at 11:15 Comment(6)
I used last 5 hours to try get that to work.. so please no sarchasm....Fasten
what is items? you TestTestTest and TestTestTest store in one item? Show how items is filled...Need more info and explanation. Add more effort to create clear question.Multicolored
Updated, Items is just a List of Strings, filled up with HardCoded TextFasten
And now can you change TestTestTest lines to show how your original text looks like? New line in bullet starts because it doesn't fit in page?Multicolored
if text is hard coded adding some spaces doesn't work?Multicolored
Sample code added (to my answer below). Re "spaces": MigraDoc treats multiple spaces like a single space (similar to HTML). You have to use "non-breaking spaces" to use spaces for formatting - works best with Courier font (gives the good old-fashioned typewriter look). For modern applications, use tab stops and indentation, not spaces to format your text ...Mindymine
M
18

Simply set the LeftIndent of the MyBulletList style to match the first tab stop, set the FirstLineIndent to a negative value to make space for the bullet - and that's all.

To keep it simple: the minimum requirements (assuming "paragraph" is the result of AddParagraph):

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

Here is sample code that uses a style (the style was previously created, the code snippet only modifies it):

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;

As mentioned before: the whole "trick" is setting LeftIndent and use a negative FirstLineIndent to position the bullet.

To add a style, get the Styles from the Document and call:

document.Styles.AddStyle("Bulletlist", "Normal");
Mindymine answered 9/3, 2012 at 13:59 Comment(1)
It would help with a sample since im quite new to migradocFasten

© 2022 - 2024 — McMap. All rights reserved.