the codeproject c# pdf jpeg image-conversion

the - codeproject c#



Convertidor de JPG a PDF en C# (7)

Me gustaría convertir de una imagen (como jpg o png) a PDF.

He comprobado ImageMagickNET , pero es demasiado complejo para mis necesidades.

¿Qué otras soluciones o código .NET existen para convertir una imagen a un PDF?


Dicha tarea se puede realizar fácilmente con la ayuda de la biblioteca Docotic.Pdf .

Aquí hay una muestra que crea PDF a partir de imágenes dadas (no solo JPG, en realidad):

public static void imagesToPdf(string[] images, string pdfName) { using (PdfDocument pdf = new PdfDocument()) { for (int i = 0; i < images.Length; i++) { if (i > 0) pdf.AddPage(); PdfPage page = pdf.Pages[i]; string imagePath = images[i]; PdfImage pdfImage = pdf.AddImage(imagePath); page.Width = pdfImage.Width; page.Height = pdfImage.Height; page.Canvas.DrawImage(pdfImage, 0, 0); } pdf.Save(pdfName); } }

Descargo de responsabilidad: trabajo para el vendedor de la biblioteca.


Fácil con iTextSharp :

class Program { static void Main(string[] args) { Document document = new Document(); using (var stream = new FileStream("test.pdf", FileMode.Create, FileAccess.Write, FileShare.None)) { PdfWriter.GetInstance(document, stream); document.Open(); using (var imageStream = new FileStream("test.jpg", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { var image = Image.GetInstance(imageStream); document.Add(image); } document.Close(); } } }


Muchas herramientas diferentes por ahí. Uno que uso es PrimoPDF (GRATUITO) http://www.primopdf.com/ para imprimir el archivo e imprimirlo en formato PDF en su unidad. funciona en Windows


No estoy seguro si está buscando solo soluciones de código abierto o gratuitas, o si está considerando soluciones comerciales. Pero si está incluyendo soluciones comerciales, hay un kit de herramientas llamado EasyPDF SDK que ofrece una API para convertir imágenes (más un número de otros tipos de archivos) a PDF. Es compatible con C # y se puede encontrar aquí:

http://www.pdfonline.com/

El código C # se vería como sigue:

Printer oPrinter = new Printer(); ImagePrintJob oPrintJob = oPrinter.ImagePrintJob; oPrintJob.PrintOut(imageFile, pdfFile);

Para ser completamente transparente, debo rechazar que sí trabaje para los creadores de EasyPDF SDK (de ahí mi controlador), por lo que esta sugerencia no está exenta de sesgos personales :) Pero siéntase libre de revisar la versión eval si está interesado. ¡Aclamaciones!


Otro código de trabajo, pruébalo.

public void ImagesToPdf(string[] imagepaths, string pdfpath) { iTextSharp.text.Rectangle pageSize = null; using (var srcImage = new Bitmap(imagepaths[0].ToString())) { pageSize = new iTextSharp.text.Rectangle(0, 0, srcImage.Width, srcImage.Height); } using (var ms = new MemoryStream()) { var document = new iTextSharp.text.Document(pageSize, 0, 0, 0, 0); iTextSharp.text.pdf.PdfWriter.GetInstance(document, ms).SetFullCompression(); document.Open(); var image = iTextSharp.text.Image.GetInstance(imagepaths[0].ToString()); document.Add(image); document.Close(); File.WriteAllBytes(pdfpath+"cheque.pdf", ms.ToArray()); } }


Una con la que hemos tenido mucha suerte es PDFSharp (la usamos para TIFF y conversión de texto a PDF para cientos de reclamaciones médicas todos los días).

http://pdfsharp.com/PDFsharp/


iTextSharp hace bastante limpio y es de código abierto. Además, tiene un muy buen libro de acompañamiento del autor que recomiendo si terminas haciendo cosas más interesantes como la gestión de formularios. Para un uso normal, hay muchos recursos en listas de correo y grupos de noticias para obtener ejemplos de cómo hacer cosas comunes.

EDITAR: como se alude en el comentario de @ Chirag , la respuesta de @Darin tiene un código que definitivamente compila con las versiones actuales.

Ejemplo de uso:

public static void ImagesToPdf(string[] imagepaths, string pdfpath) { using(var doc = new iTextSharp.text.Document()) { iTextSharp.text.pdf.PdfWriter.GetInstance(doc, new FileStream(pdfpath, FileMode.Create)); doc.Open(); foreach (var item in imagepaths) { iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(item); doc.Add(image); } } }