J'essaie de faire quelque chose que je pensais être assez simple, mais ce n'est pas si simple et google n'a pas aidé. J'utilise iTextSharp pour fusionner des documents PDF (lettres) ensemble afin qu'ils puissent tous être imprimés en même temps. Si une lettre a un nombre impair de pages, j'ai besoin d'ajouter une page vierge, afin que nous puissions imprimer les lettres recto-verso.Comment ajouter une page blanche à un pdf en utilisant iTextSharp?
Voici le code de base que j'ai au moment de la fusion de toutes les lettres:
// initiaise
MemoryStream pdfStreamOut = new MemoryStream();
Document document = null;
MemoryStream pdfStreamIn = null;
PdfReader reader = null;
int numPages = 0;
PdfWriter writer = null;
for int(i = 0;i < letterList.Count; i++)
{
byte[] myLetterData = ...;
pdfStreamIn = new MemoryStream(myLetterData);
reader = new PdfReader(pdfStreamIn);
numPages = reader.NumberOfPages;
// open the streams to use for the iteration
if (i == 0)
{
document = new Document(reader.GetPageSizeWithRotation(1));
writer = PdfWriter.GetInstance(document, pdfStreamOut);
document.Open();
}
PdfContentByte cb = writer.DirectContent;
PdfImportedPage page;
int importedPageNumber = 0;
while (importedPageNumber < numPages)
{
importedPageNumber++;
document.SetPageSize(reader.GetPageSizeWithRotation(importedPageNumber));
document.NewPage();
page = writer.GetImportedPage(reader, importedPageNumber);
cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
}
}
J'ai essayé d'utiliser:
document.SetPageSize(reader.GetPageSizeWithRotation(1));
document.NewPage();
à la fin de la boucle pour une étrange nombre de pages sans succès.
Peut-être en raison d'une version plus récente de ITextSharp. 'Add (new Chunk()),' travaillé pour moi. – Crispy
Merci pour la mise à jour - c'était il y a un bon moment. :) – Russell
Je peux confirmer que pour une version plus récente, vous devez ajouter un 'Chunk' au lieu d'une table. Travaillé parfaitement! –