Pergunta

Gostaria de converter de uma imagem (como JPG ou PNG) para PDF.

Eu verifiquei ImageMagickNET , mas é complexo demais para as minhas necessidades.

O que outras soluções .NET ou código estão lá para converter uma imagem em um PDF?

Foi útil?

Solução

iTextSharp faz isso muito limpa e é open source. Além disso, tem um livro muito bom que o acompanha pelo autor que eu recomendo se você acaba fazendo as coisas mais interessantes, como formas de gestão. Para uso normal, há uma abundância de recursos em listas de discussão e grupos de notícias para amostras de como fazer as coisas comuns.

EDIT: como aludido no @ do Chirag comentário , @ resposta de Darin tem código que definitivamente compila com as versões atuais.

Exemplo 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);
        }
    }
}

Outras dicas

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();
        }
    }
}

Um tivemos muita sorte com é PDFSharp (nós usá-lo para TIFF e texto para conversão de PDF para centenas de pedidos médicos todos os dias).

http://pdfsharp.com/PDFsharp/

Outro código de trabalho, experimentá-lo

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());
        }
}

Tal tarefa pode ser feito facilmente com a ajuda de Docotic.Pdf biblioteca .

Aqui está um exemplo que cria PDF a partir de imagens dadas (não só JPGs, na verdade):

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);
    }
}

Disclaimer:. Trabalho I para o fornecedor da biblioteca

não tenho certeza se você está procurando soluções de código apenas livre / aberto ou considerando os comerciais também. Mas se você está incluindo soluções comerciais, há um conjunto de ferramentas chamado easyPDF SDK que oferece uma API para converter imagens (mais um número de outros tipos de arquivo) para PDF. Ele suporta C # e pode ser encontrada aqui:

 http://www.pdfonline.com/

O código C # ficaria da seguinte forma:

 Printer oPrinter = new Printer();

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

Para ser totalmente transparente, eu deveria assumem que eu faço trabalho para os fabricantes de easyPDF SDK (daí o meu punho), de modo que esta sugestão não é sem alguma influência pessoal :) Mas sinta-se livre para verificar a versão eval se você' está interessado. Felicidades!

Muitas ferramentas diff lá fora. Uma que eu uso é PrimoPDF (FREE) http://www.primopdf.com/ você vai para imprimir o arquivo e imprimi-lo para o formato pdf na sua unidade. funciona no Windows

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top