I have code that takes a list of documents (PDFs, image files, Word Docs, etc) and appends each into one single PDF.
It has been pointed out to me that when an image that is larger than the page is appended, the aspect ratio is not preserved and the image looks undesirable.
I have looked for more examples without much luck.
I have extracted the code out into a simple Widows Forms application that is attached.
Can you advise me how I can accomplish this? I tried zipping my project, but the 29 MB file could not be attached. I have attached a sample image and here is the code:
string docName = @"14-8158_DSC_850120140721092109.jpg";
Aspose.Pdf.Document masterDoc = new Aspose.Pdf.Document();
Document pdfDoc = new Aspose.Pdf.Document();
Page page = pdfDoc.Pages.Add();
FileStream imageStream = new FileStream(docName, FileMode.Open);
Bitmap tempimage = new Bitmap(imageStream);
double urx = tempimage.Width;
double ury = tempimage.Height;
//page.Rect.URX = urx;
//page.Rect.URY = ury;
page.Resources.Images.Add(imageStream);
page.Contents.Add(new Operator.GSave());
Aspose.Pdf.Rectangle pagerect = page.Rect;
if (tempimage.Width > pagerect.URX)
urx = pagerect.URX;
if (tempimage.Height > pagerect.URY)
ury = pagerect.URY;
Aspose.Pdf.Rectangle rectangle = new Aspose.Pdf.Rectangle(0, 0, urx, ury);
//Matrix matrix = new Matrix(new double[] { rectangle.URX - rectangle.LLX, 0, 0, rectangle.URY - rectangle.LLY, rectangle.LLX, rectangle.LLY });
Matrix matrix = new Matrix(new double[] { rectangle.URX - rectangle.LLX, 0, 0, rectangle.URY - rectangle.LLY, rectangle.LLX, rectangle.LLY });
page.Contents.Add(new Operator.ConcatenateMatrix(matrix));
XImage ximage = page.Resources.Images[page.Resources.Images.Count];
page.Contents.Add(new Operator.Do(ximage.Name));
page.Contents.Add(new Operator.GRestore());
masterDoc.Pages.Add(pdfDoc.Pages);
imageStream.Close();
imageStream.Dispose();
masterDoc.Save("TestPdfImage.pdf");
System.Diagnostics.Process.Start("TestPdfImage.pdf");