Comment ajouter une page vierge d'un fichier pdf à l'aide iTextSharp?
Je suis en train de faire quelque chose que je pensais serait assez simple, cependant, il n'est pas si simple et google n'a pas aidé.
Je suis en utilisant iTextSharp de fusionner des documents PDF (lettres) afin qu'ils puissent tous être imprimé à la fois. Si une lettre a un nombre impair de pages, j'ai besoin d'ajouter une page vierge, afin que nous puissions imprimer les lettres double face.
Voici le code de base que j'ai à l'instant 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 for pour un nombre impair de pages sans succès.
OriginalL'auteur Russell | 2010-03-24
Vous devez vous connecter pour publier un commentaire.
Eh bien, j'étais presque là. Le document ne sera pas réellement créer la page jusqu'à ce que vous mettez quelque chose sur elle, de sorte que dès que j'ai ajouté une table vide, bam! Il a travaillé!
Voici le code qui va ajouter une page vierge si le document que je suis la fusion a un nombre impair de pages:
Si cela ne fonctionne pas dans les versions plus récentes, essayez plutôt ceci:
Add(new Chunk());
a fonctionné pour moi.Merci pour la mise à jour - c'était il y a si longtemps. 🙂
Je peux confirmer que pour une version plus récente, vous devez ajouter un
Chunk
au lieu d'une table. A parfaitement fonctionné!OriginalL'auteur Russell
Une autre alternative qui fonctionne avec succès.
OriginalL'auteur Vagner