Skip to content

Instantly share code, notes, and snippets.

@icalderond
Last active January 6, 2023 21:46
Show Gist options
  • Save icalderond/29ec3e1eaaba9b2c776d to your computer and use it in GitHub Desktop.
Save icalderond/29ec3e1eaaba9b2c776d to your computer and use it in GitHub Desktop.
Unir pdf con iTextSharp
/// <summary>
/// Une dos PDF uno detras del otro dependiendo de como los va encontrando
/// </summary>
/// <param name="targetPDF">La ruta completa del archivo .PDF que se va a crear</param>
/// <param name="sourceDir">La ruta del folder que contiene los .PDF a unir</param>
public void CreateMergedPDF(string targetPDF, string sourceDir)
{
using (FileStream stream = new FileStream(targetPDF, FileMode.Create))
{
Document pdfDoc = new Document(PageSize.A4);
PdfCopy pdf = new PdfCopy(pdfDoc, stream);
pdfDoc.Open();
var files = Directory.GetFiles(sourceDir);
foreach (string file in files)
{
if (file.Split('.').Last().ToUpper() == "PDF")
{
pdf.AddDocument(new PdfReader(file));
}
}
if (pdfDoc != null)
pdfDoc.Close();
}
}
Private Sub CreateMergedPDF(targetPDF As String, sourceDir As String)
Dim stream As New FileStream(targetPDF, FileMode.Create)
Dim pdfDoc = New Document(PageSize.A4)
Dim pdf = New PdfCopy(pdfDoc, stream)
pdfDoc.Open()
Dim files = Directory.GetFiles(sourceDir)
For Each file As String In files
Dim list As String()
list = file.Split(".")
If list.Last().ToUpper() = "PDF" Then
pdf.AddDocument(New PdfReader(file))
End If
Next
If pdfDoc IsNot Nothing Then
pdfDoc.Close()
End If
End Sub
@Phamton140
Copy link

Hola, antes que nada te agradezco la publicación de este código, me sirvió muchísimo.

Te hago una consulta, después de crear el archivo PDF, necesito eliminar los archivos de origen que use para crear el unificado y no logro hacerlo. Todos los archivos en la carpeta quedan abiertos y no los puedo eliminar.

Tenes idea que comando debo usar para cerrar esos archivos y que el sistema me permita eliminarlos?

Desde ya muchas gracias!

  1. Debes utilizar una condicional que valide si exite un archivo en "x" ruta. Por ejemplo: if(File.Exist(ruta)){ File.Delete(ruta); }

  2. Utiliza el método Dispose(). Así ya no estarán los archivos en uso. Por lo que podrás manipularlos tanto como quieras.

Espero haberte ayudado!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment