首页 文章

防止MigraDoc中的段落分裂

提问于
浏览
1

我使用 MigraDoc 从一些数据库表中生成c#中的PDF文件 .

我的主要问题是我添加的一些段落,它们无法安装到当前页面中,因此分成下一页,如何防止它?我希望他们在一个页面(当前页面或下一页) .

Document doc = new Document();
        Section section = doc.AddSection();
        Paragraph paragraph = section.AddParagraph();
        paragraph.AddLineBreak();
        paragraph.AddLineBreak();
        paragraph.AddLineBreak();

        paragraph.Format.TabStops.ClearAll();
        paragraph.Format.TabStops.AddTabStop("16cm", TabAlignment.Right, TabLeader.Lines);
        paragraph.AddTab();

        for (int i = 0; i < 20; i++)
        {

            Paragraph paragraphBody = paragraph.Section.AddParagraph();

            FormattedText ft = paragraphBody.AddFormattedText("This is a title", TextFormat.Bold);
            ft.Italic = true; ft.Font.Size = 11;
            ft.Font.Color = Color.FromRgbColor((byte)255, Color.Parse("0x1E9BC6")); //equal to rgb(30, 155, 196);
            ft.AddLineBreak();

            //--detail:---adding text---------------------------------

            String DetailText = "This is detail. This is detail. This is detail.This is detail.This is detail.This is detail.This is detail.This is detail. This is detail. This is detail. This is detail. This is detail. This is detail. This is detail. This is detail. This is detail. ";

            FormattedText ftdet;
            ftdet = paragraphBody.AddFormattedText(DetailText, TextFormat.NotBold);
            ftdet.Font.Size = 10;
            ftdet.Font.Name = "Arial";
            ftdet.AddLineBreak();
            ftdet.AddLineBreak();

            ftdet.AddText("Event Date: " + DateTime.Now.ToString("MM/dd/yyyy h:mm tt"));
        }

        PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(false, PdfFontEmbedding.Always);
        pdfRenderer.Document = doc;
        pdfRenderer.RenderDocument();

        //Save the PDF to a file:
        string filename = "e:\\Report" +    DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".pdf";
pdfRenderer.PdfDocument.Save(filename);

        Process.Start(filename);

1 回答

  • 1

    段落在 Format 成员中具有 KeepTogether 属性 . 如果为true,则段落的所有行都保留在一页上 .
    还有一个 KeepWithNext 属性 . 如果为true,则段落的最后一行将与下一段的第一行位于同一页面上 .

    如果你有一个段落,只需编写如下代码:

    paragraphBody.Format.KeepTogether = true;
    

    也可以看看:
    http://www.nudoq.org/#!/Packages/PDFsharp-MigraDoc-GDI/MigraDoc.DocumentObjectModel/ParagraphFormat

    表格单元格永远不会跨页面 . 因此,属性 KeepTogetherKeepWithNext 在应用于表格单元格中的段落时无效 .

相关问题