Автоматическая новая страница на основе текста

Привет, я успешно использовал эту замечательную библиотеку PDF Sharp. Теперь я хотел поиграть с некоторыми динамическими вещами, поэтому люди рекомендовали переключиться на Migradoc, который я сделал, и мне понравилась его функция абзаца. Теперь проблема в том, что когда я добавляю длинный абзац, а затем новую страницу не добавляется, вместо этого отображается неполный текст (неполный в том смысле, что текст переполняется), и я добавил изображение внизу для нижнего колонтитула. как я могу сделать, чтобы я вводил динамический текст (переменная длина), и он просто добавляет необходимое количество страниц.

Мой код до сих пор

 XFont font = new XFont("Times New Roman", 12, XFontStyle.Bold);
            XFont fontReg = new XFont("Times New Roman", 12, XFontStyle.Regular);

            // HACK²
            gfx.MUH = PdfFontEncoding.Unicode;
            gfx.MFEH = PdfFontEmbedding.Default;

            string appPath = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath);
            XImage image = XImage.FromFile(appPath + "/header.png");
            gfx.DrawImage(image, 0, 0);
            //Civil Stamp
            gfx.DrawImage(XImage.FromFile(appPath + "/cStamp.png"), 370, 380);

            gfx.DrawImage(XImage.FromFile(appPath + "/Sp.png"), 230, 380);

            CoverPageHeader();

            Document doc = new Document();
            MigraDoc.DocumentObjectModel.Section sec = doc.AddSection();
            // Add a single paragraph with some text and format information.
            MigraDoc.DocumentObjectModel.Paragraph para = sec.AddParagraph();
            para.Format.Alignment = ParagraphAlignment.Left;
            para.Format.Font.Name = "Times New Roman";
            para.Format.Font.Size = 12;
            para.Format.Font.Color = MigraDoc.DocumentObjectModel.Colors.Black;

            para.AddText("We are pleased to present the attached Document Please review the Agreement and, if acceptable, " +
                "sign one copy and return it to us.  We will sign the copy of the agreement and return one for " +
                "your records.");

            para.AddLineBreak();
            para.AddLineBreak();
            para.AddText(longlongtextString);
            para.AddLineBreak();
            para.AddLineBreak();            
            para.AddText("Sincerely,");

 MigraDoc.Rendering.DocumentRenderer docRenderer = new DocumentRenderer(doc);
            docRenderer.PrepareDocument();

            // Render the paragraph. You can render tables or shapes the same way.
            docRenderer.RenderObject(gfx, XUnit.FromCentimeter(0.7), XUnit.FromCentimeter(9), "18cm", para);

            gfx.DrawString("Kelly Turbin PhD., P.E.-SECB", font, XBrushes.Black, 20, 500);
            gfx.DrawString("Principal", font, XBrushes.Black, 20, 520);
            gfx.DrawString("Project No " + textBoxProjNumber.Text, fontReg, XBrushes.Black, 20,785);

            gfx.DrawImage(XImage.FromFile(appPath + "/AccB.png"), 20, 700);
            gfx.DrawImage(XImage.FromFile(appPath + "/ScreenMagic.png"), 100, 690);
            gfx.DrawImage(XImage.FromFile(appPath + "/Footer.png"), 220, 750);

        }

person Afnan Bashir    schedule 16.03.2011    source источник


Ответы (2)


Не используйте RenderObject, вместо этого используйте RenderDocument, и страницы будут создаваться автоматически по мере необходимости.

Пример кода здесь: http://www.pdfsharp.net/wiki/HelloMigraDoc-sample.ashx

person I liked the old Stack Overflow    schedule 16.03.2011
comment
нет опции для docRenderer.RenderDocument есть два доступных метода только RenderObject и RenderPage - person Afnan Bashir; 16.03.2011
comment
если я изменю последние строки кода, то в pdf ничего не будет видно PdfDocumentRenderer renderer = new PdfDocumentRenderer(true, PdfSharp.Pdf.PdfFontEmbedding.Always); визуализатор.Документ = документ; визуализатор.RenderDocument(); - person Afnan Bashir; 16.03.2011

Невозможно автоматически создавать новые страницы на основе размера текста, если вы используете смесь PDFSharp и MigraDoc, как и в вопросе. Единственное решение — использовать только MigraDoc с его методом RenderDocument.

person Leo Kolezhuk    schedule 04.03.2016