This is an old question ... but if someone gets here again, I solved it ... I made it hardcoded for two pages on one page, so this is the basics first I rotated the two PDF files, after which I combined them together
to rotate two pages use this:
public static void RotatePDF(string inputFile, string outputFile)
{
using (FileStream outStream = new FileStream(outputFile, FileMode.Create))
{
iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(inputFile);
iTextSharp.text.pdf.PdfStamper stamper = new iTextSharp.text.pdf.PdfStamper(reader, outStream);
iTextSharp.text.pdf.PdfDictionary pageDict = reader.GetPageN(1);
int desiredRot = 90;
iTextSharp.text.pdf.PdfNumber rotation = pageDict.GetAsNumber(iTextSharp.text.pdf.PdfName.ROTATE);
if (rotation != null)
{
desiredRot += rotation.IntValue;
desiredRot %= 360;
}
pageDict.Put(iTextSharp.text.pdf.PdfName.ROTATE, new iTextSharp.text.pdf.PdfNumber(desiredRot));
stamper.Close();
}
}
Now you can combine them together:
public static void MergeTwoPdfsToSingle(string inputFile1, string inputFile2, string outputFile)
{
Document document = new Document();
try
{
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(outputFile, FileMode.Create));
document.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage page1;
PdfImportedPage page2;
PdfReader reader1 = new PdfReader(inputFile1);
PdfReader reader2 = new PdfReader(inputFile2);
document.SetPageSize(reader1.GetPageSizeWithRotation(1));
document.NewPage();
page1 = writer.GetImportedPage(reader1, 1);
page2 = writer.GetImportedPage(reader2, 1);
cb.AddTemplate(page1, 0, 0);
cb.AddTemplate(page2, 0, 300);
}
catch (Exception e) { throw e; }
finally { document.Close(); }
}
source
share