Nuestro grupo redactor ha estado mucho tiempo investigando la respuesta a tu interrogante, te compartimos la resolución y deseamos resultarte de gran apoyo.
Solución:
Encontré la respuesta:
En lugar del segundo método, agregue más archivos al primero array de archivos de entrada.
public static void CombineMultiplePDFs(string[] fileNames, string outFile)
// step 1: creation of a document-object
Document document = new Document();
//create newFileStream object which will be disposed at the end
using (FileStream newFileStream = new FileStream(outFile, FileMode.Create))
// step 2: we create a writer that listens to the document
PdfCopy writer = new PdfCopy(document, newFileStream );
if (writer == null)
return;
// step 3: we open the document
document.Open();
foreach (string fileName in fileNames)
// we create a reader for a certain document
PdfReader reader = new PdfReader(fileName);
reader.ConsolidateNamedDestinations();
// step 4: we add content
for (int i = 1; i <= reader.NumberOfPages; i++)
PdfImportedPage page = writer.GetImportedPage(reader, i);
writer.AddPage(page);
PRAcroForm form = reader.AcroForm;
if (form != null)
writer.CopyAcroForm(reader);
reader.Close();
// step 5: we close the document and writer
writer.Close();
document.Close();
//disposes the newFileStream object
Encontré una muy buena solución en este sitio: http://weblogs.sqlteam.com/mladenp/archive/2014/01/10/simple-merging-of-pdf-documents-with-itextsharp-5-4-5. aspx
Actualizo el método en este modo:
public static bool MergePDFs(IEnumerable fileNames, string targetPdf)
bool merged = true;
using (FileStream stream = new FileStream(targetPdf, FileMode.Create))
Document document = new Document();
PdfCopy pdf = new PdfCopy(document, stream);
PdfReader reader = null;
try
document.Open();
foreach (string file in fileNames)
reader = new PdfReader(file);
pdf.AddDocument(reader);
reader.Close();
catch (Exception)
merged = false;
if (reader != null)
reader.Close();
finally
if (document != null)
document.Close();
return merged;
Código para fusionar archivos PDF en Itextsharp
public static void Merge(List InFiles, String OutFile)
{
using (FileStream stream = new FileStream(OutFile, FileMode.Create))
using (Document doc = new Document())
using (PdfCopy pdf = new PdfCopy(doc, stream))
doc.Open();
PdfReader reader = null;
PdfImportedPage page = null;
//fixed typo
InFiles.ForEach(file =>
reader = new PdfReader(file);
for (int i = 0; i < reader.NumberOfPages; i++)
page = pdf.GetImportedPage(reader, i + 1);
pdf.AddPage(page);
pdf.FreeReader(reader);
reader.Close();
File.Delete(file);
);
Puedes añadir valor a nuestro contenido informacional participando con tu veteranía en los informes.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)