【问题标题】:How do you have a bulletted list in migradoc / pdfsharp你如何在 migradoc / pdfsharp 中有一个项目符号列表
【发布时间】:2010-10-26 15:37:33
【问题描述】:

即使在阅读this forum post 之后,如何使用 migradoc / pdfsharp 创建项目符号列表仍然很令人困惑。我基本上想显示这样的项目列表:

  • 闪避
  • 日产
  • 福特
  • 雪佛兰

【问题讨论】:

    标签: c# pdfsharp migradoc


    【解决方案1】:

    这是一个示例(在 HelloWorld 示例中添加了几行):

    // Add some text to the paragraph
    paragraph.AddFormattedText("Hello, World!", TextFormat.Italic);
    
    // Add Bulletlist begin
    Style style = document.AddStyle("MyBulletList", "Normal");
    style.ParagraphFormat.LeftIndent = "0.5cm";
    string[] items = "Dodge|Nissan|Ford|Chevy".Split('|');
    for (int idx = 0; idx < items.Length; ++idx)
    {
      ListInfo listinfo = new ListInfo();
      listinfo.ContinuePreviousList = idx > 0;
      listinfo.ListType = ListType.BulletList1;
      paragraph = section.AddParagraph(items[idx]);
      paragraph.Style = "MyBulletList";
      paragraph.Format.ListInfo = listinfo;
    }
    // Add Bulletlist end
    
    return document;
    

    我没有使用 AddToList 方法将所有内容集中在一个地方。在实际应用中,我会使用该方法(它是用户定义的方法,代码给出in this thread)。

    【讨论】:

    • 很好,谢谢。我会将这个细节添加到样式中以使其正确对齐:style.ParagraphFormat.LeftIndent = "1cm"; style.ParagraphFormat.FirstLineIndent = "-0.5cm";
    • 我有点困惑。每个项目符号列表是否被视为一个段落?
    • @Sabareesh Kkanan:每个项目符号是一个段落,项目符号列表是一个段落序列。如果条目跨越多行,这允许高级格式(例如第一行缩进)。
    • 谢谢马特!这正是我所需要的。哦,我在“老友记”中爱过你。
    【解决方案2】:

    比上面的回答简洁一点:

    var document = new Document();
    
    var style = document.AddStyle("BulletList", "Normal");
    style.ParagraphFormat.LeftIndent = "0.5cm";
    style.ParagraphFormat.ListInfo = new ListInfo
    {
        ContinuePreviousList = true,
        ListType = ListType.BulletList1
    };
    
    var section = document.AddSection();
    section.AddParagraph("Bullet 1", "BulletList");
    section.AddParagraph("Bullet 2", "BulletList");
    

    样式只创建一次,包括listinfo,并且可以在任何地方重复使用。

    【讨论】:

    • 重复使用ListInfo 不适用于编号列表。我也不会将它用于项目符号列表,至少在生成具有多个项目符号列表的 RTF 文件时不会。
    • @User241.007 我没有意识到这不适用于编号列表或 RTF 文件。然而,对于 PDF 文件,这种方法效果很好,也适用于多个项目符号列表。我会留下这个答案,因为至少对于 pdf,这种方法可以节省大量代码(您只需定义一次 listinfo)。
    • 如果段落不适合 1 行,则下一行没有正确缩进。有这个设置吗?
    • @MIKE style.ParagraphFormat.LeftIndent = "1cm"; style.ParagraphFormat.FirstLineIndent = "-0.5cm";我是这样解决的,不知道有没有更好的选择。
    【解决方案3】:

    使用 PDFsharp,您必须自己绘制项目符号。

    使用 MigraDoc,您可以添加一个段落并为此段落设置 paragraph.Format.ListInfo 以创建项目符号列表。

    链接的线程显示了两个帮助程序: DefineList() 只设置一个成员变量,因此下次将创建一个新列表。 为每个条目调用 AddToList()。

    只需调用 DefineList() 来开始一个新的项目符号列表,然后为每个条目调用 AddToList()。 DefineList() 对编号列表有很大的影响。

    根据您的需要调整帮助程序。

    【讨论】:

    • 你有这方面的示例代码吗? .仍然无法让它工作。 .
    猜你喜欢
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多