Hi,
We are using Spire.pdf for pdf creation from existing pdf. We are using below code for generating a PDF. But after creating new document we are getting a pdf with blank pages without any data.
public byte[] CreatePDFFromPageNoWithBookmarks(Stream sourceStream, List<KeyValuePair<int, string>> PageNos)
{
byte[] finalDoc = null;
sourceStream.Seek(0, SeekOrigin.Begin);
using (System.IO.MemoryStream PDFDocument = new System.IO.MemoryStream())
{
if (PageNos != null && PageNos.Count > 0)
{
Spire.Pdf.PdfDocument sourcePdf = new Spire.Pdf.PdfDocument(sourceStream);
Spire.Pdf.PdfDocument newDoc = new Spire.Pdf.PdfDocument();
int NewDocPageindex = 0;
foreach (KeyValuePair<int, string> item in PageNos)
{
PdfPageBase page = sourcePdf.Pages[Convert.ToInt16(item.Key) - 1];
SizeF size = page.Size;
Spire.Pdf.Graphics.PdfTemplate template = page.CreateTemplate();
PdfPageBase newPage = newDoc.Pages.Add(size, new PdfMargins(0));
PdfTextLayout loLayout = new PdfTextLayout();
loLayout.Layout = PdfLayoutType.OnePage;
page.CreateTemplate().Draw(newPage, new PointF(0, 0), loLayout);
if (!string.IsNullOrEmpty(item.Value))
{
Spire.Pdf.General.PdfDestination partBookmarkDest = new Spire.Pdf.General.PdfDestination(newPage, new PointF(0, NewDocPageindex));
Spire.Pdf.Bookmarks.PdfBookmark partBookmark = newDoc.Bookmarks.Add(item.Value);
partBookmark.Action = new Spire.Pdf.Actions.PdfGoToAction(partBookmarkDest);
}
NewDocPageindex++;
}
newDoc.SaveToStream(PDFDocument, Spire.Pdf.FileFormat.PDF);
}
finalDoc = PDFDocument.ToArray();
}
return finalDoc;
}
But if we use the below code then there is no issue and pdf is generating with data.
sourcePdf = new Spire.Pdf.PdfDocument(sourceStream);
newDoc = new Spire.Pdf.PdfDocument();
foreach (KeyValuePair<int, string> item in PageNos)
{
newDoc.InsertPage(sourcePdf, Convert.ToInt16(item.Key) - 1);
}
I have attached the sample return. Could you please help us to resolve this issue.
Thanks
Dinesh