I receive a pdf as a byte[]
. When I save this binary as pdf, pageSize is too big. I want to change the pageSize in the code.
Currently I am trying it this way, based on what I found in other questions:
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using (MemoryStream stream = new MemoryStream(pdfAsBinary))
{
using (PdfReader reader = new PdfReader(pdfAsBinary))
{
using (Document doc = new Document(PageSize.A4))
{
PdfWriter writer = PdfWriter.GetInstance(doc, stream);
PdfImportedPage page = writer.GetImportedPage(reader, 1);
image = Image.GetInstance(page);
using (var pdfStream = new FileStream(tempPath, FileMode.Create, FileAccess.ReadWrite, FileShare.Read))
{
PdfWriter pdfwriter = PdfWriter.GetInstance(doc, pdfStream);
doc.Open();
doc.SetPageSize(PageSize.A4);
image.ScalePercent(30f);
doc.Add(image);
doc.Close();
}
}
}
File.Copy(tempPath, pathToFile);
}
Or I tried using this method:
private static byte[] resizeToA4(byte[] inputDoc)
{
using (MemoryStream out = new MemoryStream())
{
using (PdfReader reader = new PdfReader(inputDoc))
{
using (Document doc = new Document(PageSize.A4))
{
PdfWriter writer = PdfWriter.GetInstance(doc, out);
}
}
return outPDF.ToArray();
}
None of the above is working and it feels like I'm overcomplicating things. How can I achieve my resizing of the pageSize to A4?