2 votes

Ajouter un document MigraDoc multi-pages à un document PDFSharp

Dans la page des échantillons de Migradoc et PDFSharp, il y en a un qui dessine un document Migradoc dans un document PDFSharp : http://www.pdfsharp.net/wiki/MixMigraDocAndPdfSharp-sample.ashx

Mais qu'en est-il si le document Migradoc que je veux rendre comporte plus d'une page ? Dans Migradoc, vous ne manipulez pas les pages cela se fait automatiquement.

EDIT : TROUVÉ MON CHEMIN

Eh bien, une fois que vous avez "Prepare()" le document ... vous avez la méthode FormattedDocument(), et là vous pouvez voir combien de pages il finit par avoir. J'ai ajouté ma propre réponse à cela ci-dessous.

3voto

Romias Points 5668

Une fois que vous Prepare() le document Migradoc, vous avez la mise en page de votre document, et le nombre de pages. Il suffit donc de boucler sur chaque page du document MigraDoc, et pour chacune d'entre elles, de créer une page dans le document Pdf :

private void SampleMultiplePage(ref PdfDocument document, Document migraDocument)
        {
            var pdfRenderer = new DocumentRenderer(migraDocument);

            pdfRenderer.PrepareDocument();

            int pages = pdfRenderer.FormattedDocument.PageCount;
            for (int i = 1; i <= pages; ++i)
            {
                var page = document.AddPage();

                PageInfo pageInfo = pdfRenderer.FormattedDocument.GetPageInfo(i);
                page.Width = pageInfo.Width;
                page.Height = pageInfo.Height;
                page.Orientation = pageInfo.Orientation;

                using (XGraphics gfx = XGraphics.FromPdfPage(page))
                {
                    // HACK²
                    gfx.MUH = PdfFontEncoding.Unicode;
                    gfx.MFEH = PdfFontEmbedding.Default;

                    pdfRenderer.RenderPage(gfx, i);
                }
            }
        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X