c'est une vieille question ... mais si quelqu'un rentre ici ma solution était cette ... je l'ai fait dur codé pour deux pages en une seule page c'est donc les bases d'abord j'ai fait pivoter les deux fichiers PDF après que je les fusionner ensemble
pour faire pivoter les deux pages utilisent ceci:
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; // 90 degrees clockwise from what it is now
iTextSharp.text.pdf.PdfNumber rotation = pageDict.GetAsNumber(iTextSharp.text.pdf.PdfName.ROTATE);
if (rotation != null)
{
desiredRot += rotation.IntValue;
desiredRot %= 360; // must be 0, 90, 180, or 270
}
pageDict.Put(iTextSharp.text.pdf.PdfName.ROTATE, new iTextSharp.text.pdf.PdfNumber(desiredRot));
stamper.Close();
}
}
maintenant vous pouvez les fusionner:
public static void MergeTwoPdfsToSingle(string inputFile1, string inputFile2, string outputFile)
{
//Step 1: Create a Docuement-Object
Document document = new Document();
try
{
//Step 2: we create a writer that listens to the document
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(outputFile, FileMode.Create));
//Step 3: Open the document
document.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage page1;
PdfImportedPage page2;
// we create a reader for the document
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);
//play around to find the exact location for the next pdf
cb.AddTemplate(page2, 0, 300);
}
catch (Exception e) { throw e; }
finally { document.Close(); }
}
hasard vous kno Quelque chose à éviter pour éviter de perdre des données comme des formulaires/contrôles Adobe Acrobat DC? J'ai testé votre code et cela fonctionne très bien pour les graphiques et les textes des fichiers PDF, mais je perds les contrôles comme les zones de texte, les listes déroulantes et d'autres contrôles Adobe Acrobat DC modifiables. –
@PaulWeiland - D'après ce que j'ai lu sur d'autres threads si vous souhaitez conserver les contrôles lors de la copie dans un nouveau PDF, vous devez utiliser la classe PDFCopy. – jaredbaszler
@ jaredbaszler thx, va vérifier cela –