¿Cuál es la forma óptima de combinar 2 archivos PDF con ITextSharp en C#? Estoy usando ASP.NET/.NET3.5.Fusionando archivos PDF con ITextSharp
Respuesta
public static void Merge(List<String> 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();
});
}
}
¿Cómo puedo usar esta función? Supongamos que tiene un pdf generado y lo agrega a un archivo físico en PDF. –
Tenga en cuenta que esta respuesta es incorrecta. Descarta toda la interactividad y puede resultar en archivos inflados si los diferentes archivos PDF contienen recursos idénticos. La única respuesta correcta es una respuesta que usa 'PdfSmartCopy' que es otra clase que está disponible en iTextSharp. –
También echaré un vistazo a esta respuesta: https://stackoverflow.com/questions/38339151/c-sharp-itextsharp-merge-multiple-pdf-via-byte-array –
La última respuesta funciona si no desea eliminar los archivos originales. En mi caso, quiero eliminar y cuando lo intenté recibí una excepción. Mi solución es:
public static bool MergePDFs(List<String> InFiles, String OutFile)
{
bool merged = true;
try
{
List<PdfReader> readerList = new List<PdfReader>();
foreach (string filePath in InFiles)
{
PdfReader pdfReader = new PdfReader(filePath);
readerList.Add(pdfReader);
}
//Define a new output document and its size, type
Document document = new Document(PageSize.A4, 0, 0, 0, 0);
//Create blank output pdf file and get the stream to write on it.
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(OutFile, FileMode.Create));
document.Open();
foreach (PdfReader reader in readerList)
{
PdfReader.unethicalreading = true;
for (int i = 1; i <= reader.NumberOfPages; i++)
{
PdfImportedPage page = writer.GetImportedPage(reader, i);
document.Add(iTextSharp.text.Image.GetInstance(page));
}
}
document.Close();
foreach (PdfReader reader in readerList)
{
reader.Close();
}
}
catch (Exception ex)
{
merged = false;
}
return merged;
}
He copiado el código de Original Code
Leve modificaciones para manejar la rotación de páginas, etc., pero aparte de eso, reemplazó fácilmente el código en mi proyecto que estaba bloqueando archivos .. – Ads
- 1. Fusionando archivos pdf con marcadores
- 2. Compresión PDF con iTextSharp
- 3. iTextSharp para PDF: ¿cómo agregar archivos adjuntos?
- 4. iTextSharp PDF protegido con contraseña
- 5. Convertir páginas de archivos PDF en imágenes con itextsharp
- 6. Fusionando 2 pdf con Zend Framework
- 7. BadPasswordException al completar pdf con iTextSharp
- 8. Creación de dos PDF idénticos con iTextSharp
- 9. ¿Puedo completar un PDF encriptado con iTextSharp?
- 10. iTextSharp + FileStream = Archivo PDF dañado
- 11. Cómo aplanar el formulario PDF ya lleno con iTextSharp
- 12. Fusionando imágenes png en un archivo pdf
- 13. Insertar página en PDF existente usando itextsharp
- 14. Fusionando archivos CSS
- 15. fusionando dos archivos
- 16. Fusionando varios archivos javascript
- 17. itextsharp trimning pdf páginas del documento
- 18. eliminar la primera página del PDF con iTextSharp
- 19. Agregar una página al documento PDF con iTextSharp
- 20. iTextSharp muestra imágenes con mala calidad en PDF
- 21. ¿Cómo se leen los datos en PDF con iTextSharp?
- 22. iTextSharp está produciendo un PDF corrupto
- 23. ITextSharp insertar texto en un pdf existente
- 24. Rotar PDF en C# usando iTextSharp
- 25. Bloquear PDF contra edición usando iTextSharp
- 26. Fusionando archivos de proyecto Xcode
- 27. Fusionando archivos vcproj - SCM infierno
- 28. Generando archivos PDF con PHP
- 29. Mostrar archivos PDF con python3
- 30. Rellenar varios archivos PDF
He usado código basado en el siguiente artículo con éxito: [Simple .NET fusión del pdf] (http://www.codeproject.com /KB/files/SimplePdfMerger.aspx) –