2017-06-15 7 views
0

Dans les échantillons Migradoc et PdfSharp page, il est celui qui tire un document Migradoc dans un document PdfSharp: http://www.pdfsharp.net/wiki/MixMigraDocAndPdfSharp-sample.ashxAjout d'un document de plusieurs page MigraDoc à un document PdfSharp

Mais qu'en est si le document Migradoc Je veux rendre a plus d'une page? Dans Migradoc vous ne gérez pas les pages .. c'est fait automatiquement.

EDIT: MY WAY TROUVE

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

Répondre

1

Une fois que vous Prepare() le document Migradoc, vous avez la mise en page de votre document et le nombre de pages. Donc, vous avez juste besoin de faire une boucle sur chaque page du document MigraDoc, et pour chacun d'eux vous devez 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); 
       } 
      } 
     }