Me gustaría convertir de una imagen (como jpg o png) a PDF.Convertidor de JPG a PDF en C#
He comprobado ImageMagickNET, pero es demasiado complejo para mis necesidades.
¿Qué otras soluciones .NET o código hay para convertir una imagen a PDF?
Me gustaría convertir de una imagen (como jpg o png) a PDF.Convertidor de JPG a PDF en C#
He comprobado ImageMagickNET, pero es demasiado complejo para mis necesidades.
¿Qué otras soluciones .NET o código hay para convertir una imagen a PDF?
iTextSharp lo hace bastante limpio y es de código abierto. Además, tiene a very good accompanying book by the author que recomiendo si terminas haciendo cosas más interesantes como administrar formularios. Para el uso normal, hay muchos recursos en listas de correo y grupos de noticias para ejemplos de cómo hacer cosas comunes.
EDITAR: aludido en @Chirag's comment, @Darin's answer tiene un código que definitivamente se 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);
}
}
}
iTextSharp es de código abierto, pero no es gratuito. Deberá pagar la tarifa de la licencia o crear su propio código de código abierto debido a la licencia de AGPL que está utilizando. Vea usted mismo aquí: http://itextpdf.com/terms-of-use/index.php – asmo
conseguir un error de error \t \t 2 'iTextSharp.text.Document': tipo utilizado en una instrucción using debe ser implícitamente convertible a 'System.IDisposable' – Chirag
@Chirag No recuerdo si realmente compilé el código en ese momento o si la probabilidad es que esté usando otra versión (aquí hay [un ejemplo de código similar] (http://stackoverflow.com/questions/28923080/itextsharp-can-not-convert-all-html-to-pdf) para confirmar que tiene sentido en algún momento). Sin embargo, en general, si no es Desechable, debería ser seguro omitir el "uso". Espera, echa un vistazo a [@ Darin's answer] (http://stackoverflow.com/a/1642301/11635). Gracias por señalar la ropa del Emperador :) –
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();
}
}
}
Bueno, +1 para la limpieza también. Como cuestión de interés (no lo he usado en mucho tiempo), ¿existe una forma más clara de utilizar el documento con IDisposable y/o debería haber un intento/finalmente proteger el cierre? ¿Presumiblemente no si imageStream es el titular/propietario real del recurso? –
Me aparece "PdfWriter no existe en el contexto actual" – Ladessa
¿Cómo agregar ancho y alto de la imagen en pdf? –
Muchas herramientas de diferenciación que hay. Uno que uso es PrimoPDF (GRATIS) http://www.primopdf.com/ para imprimir el archivo y lo imprime en formato pdf en su disco. funciona en Windows
respuesta incorrecta. él quiere hacerlo en una forma de programación (C# en específico). – Raptor
Uno con el que hemos tenido mucha suerte es PDFSharp (lo utilizamos para conversión de TIFF y texto a PDF para cientos de reclamaciones médicas todos los días).
He usado PDFSharp pero el pdf es distorsionado. Por favor, vea mi pregunta http://stackoverflow.com/questions/15437706/pdf-from-bitmap-wrong-size – Ladessa
no está seguro de si usted está buscando soluciones de código abierto sólo Libre/o considerando los comerciales también. Pero si incluye soluciones comerciales, hay un kit de herramientas llamado EasyPDF SDK que ofrece una API para convertir imágenes (más varios 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 de la siguiente manera:
Printer oPrinter = new Printer();
ImagePrintJob oPrintJob = oPrinter.ImagePrintJob;
oPrintJob.PrintOut(imageFile, pdfFile);
para ser totalmente transparente, debería negar que yo trabajo para los fabricantes de easyPDF SDK (de ahí mi manejo), por lo que esta sugerencia no es sin algún sesgo personal :) Pero no dude en consultar la versión de evaluación si está interesado. ¡Aclamaciones!
Tal tarea se puede hacer fácilmente con la ayuda de Docotic.Pdf library.
Aquí es un ejemplo que crea PDF a partir de imágenes dadas (no sólo los archivos 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);
}
}
responsabilidad: Yo trabajo para el proveedor de la biblioteca.
Otro código de trabajo, probarlo
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());
}
}
También hay http://www.graphicsmagick.org/ que es una mejor versión de ImageMagick og (código-wise). No obstante, no sé si encontrará bibliotecas .NET para ello. – csl
¿Es para una aplicación de escritorio/servidor/web? –
Es una aplicación web, sin embargo, eso no hace ninguna diferencia en el tipo de aplicación ya que la codificación será la misma – Coppermill