El siguiente fragmento de código devuelve un documento PDF corrupto; sin embargo, si devuelvo mergedDocument, siempre devuelve un PDF válido. mergedDocument se basa en un archivo PDF que creé usando Word, mientras que el documento completo se genera completamente por programación. El código "funciona" porque no arroja excepciones. ¿Por qué iTextSharp está creando un PDF corrupto?iTextSharp está produciendo un PDF corrupto
byte[] completedDocument = null;
using (MemoryStream streamCompleted = new MemoryStream())
{
using (Document document = new Document())
{
PdfCopy copy = new PdfCopy(document, streamCompleted);
document.Open();
copy.Open();
foreach (var item in eventItems)
{
byte[] mergedDocument = null;
PdfReader reader = new PdfReader(pdfTemplates[item.DataTokens[NotifyTokenType.OrganisationID]]);
using (MemoryStream streamTemplate = new MemoryStream())
{
using (PdfStamper stamper = new PdfStamper(reader, streamTemplate))
{
foreach (var token in item.DataTokens)
{
if (stamper.AcroFields.Fields.Any(fld => fld.Key == token.Key.ToString()))
{
stamper.AcroFields.SetField(token.Key.ToString(), token.Value);
}
}
stamper.FormFlattening = true;
stamper.Writer.CloseStream = false;
}
mergedDocument = new byte[streamTemplate.Length];
streamTemplate.Position = 0;
streamTemplate.Read(mergedDocument, 0, (int)streamTemplate.Length);
}
reader = new PdfReader(mergedDocument);
for (int i = 1; i <= reader.NumberOfPages; i++)
{
document.SetPageSize(PageSize.A4);
copy.AddPage(copy.GetImportedPage(reader, i));
}
}
completedDocument = new byte[streamCompleted.Length];
streamCompleted.Position = 0;
streamCompleted.Read(completedDocument, 0, (int)streamCompleted.Length);
}
}
return completedDocument;
Muchas gracias, que hizo el truco. –
Yo votaría esto 1000 veces si pudiera. Estaba teniendo dificultades para fusionar imágenes y archivos PDF en un único documento pdf, esto ayudó a arrojar algo de luz sobre el proceso correcto. – jtiger
¡Gracias, al poner la secuencia de la memoria en la matriz resolvió mi problema al recuperar un archivo PDF vacío! – Taurib