J'utilise MigraDoc pour générer un fichier PDF dans C# à partir de certaines tables de base de données.Empêcher la division de paragraphe dans MigraDoc
Mon problème majeur est pour certains des paragraphes ajouter, ils ne peuvent pas être installés dans la page en cours, sont donc diviser la page suivante, comment peut-il être évité? Je veux qu'ils soient sur une page (page actuelle ou page suivante).
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);