PDFsharp & MigraDoc Foundation https://forum.pdfsharp.net/ |
|
Embedding pages from one PDF in another https://forum.pdfsharp.net/viewtopic.php?f=2&t=3679 |
Page 1 of 1 |
Author: | NickL [ Sat Oct 28, 2017 7:01 pm ] |
Post subject: | Embedding pages from one PDF in another |
Bear with me, this is hard to explain..... I am using MigraDoc to create a PDF, very successfully. I have now identified a requirement to take the pages from a second, existing PDF and effectively embed each page as an image into the PDF that I am creating. I have got this far: Code: private void AddPdf(Cell cell, byte[] pdf) { var stream = new MemoryStream(pdf); var document = PdfReader.Open(stream); var pageCount = 0; foreach (var pdfPage in document.Pages) { pageCount++; cell.AddParagraph("Page " + pageCount); // Need to add the PDF page itself here } } I have a PDF in the byte array, and I think it is being understood because the number of pages found is correct. I have read here that it is possible to create an image from a PDF page. However, I am struggling to get anywhere with the PdfPage object that I have. I suspect I am muddled because the example is based on MigraDoc, but I have a PDFsharp object. I did discover that if I do this, with my PDF byte array in content: Code: var image = "base64:" + Convert.ToBase64String(content); cell.AddImage(image); Then I do appear to get the first page of the PDF embedded as an image in the document that I am creating. That is very close to what I need, but I need to get each page in turn, not just the first. I feel like I am very close and just need a push in the right direction. Thanks, Nick |
Author: | TH-Soft [ Sun Oct 29, 2017 11:57 am ] |
Post subject: | Re: Embedding pages from one PDF in another |
Hi! NickL wrote: I feel like I am very close and just need a push in the right direction. There are two products: PDFsharp and MigraDoc.You are mixing MigraDoc and PDfsharp. One option: save the byte[] to a temporary file and append the desired page number to the filename (giving e.g. "c:\test.pdf#2" for the second page). You can still use PdfReader.Open to query the page count, but apart from that you only use MigraDoc. The other option does not need a temporary file, but is more difficult to explain and to implement. See here: viewtopic.php?p=9293#p9293 http://pdfsharp.net/wiki/MixMigraDocAnd ... ample.ashx The loop from the first link cannot just be used to show progress, it can also be used to draw PDF pages from the byte[] onto PDF pages created by MigraDoc - you just have to figure out where to draw them. |
Page 1 of 1 | All times are UTC |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |