Конвертор JPG в PDF в C # - PullRequest
       39

Конвертор JPG в PDF в C #

18 голосов
/ 29 октября 2009

Я хотел бы конвертировать из изображения (например, JPG или PNG) в PDF.

Я выписал ImageMagickNET , но он слишком сложен для моих нужд.

Какие еще .NET-решения или код существуют для преобразования изображения в PDF?

Ответы [ 7 ]

28 голосов
/ 29 октября 2009

Легко с 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();
        }
    }
}
16 голосов
/ 29 октября 2009

iTextSharp делает это довольно чисто и с открытым исходным кодом. Кроме того, у него есть очень хорошая сопроводительная книга автора , которую я рекомендую, если вы в конечном итоге делаете более интересные вещи, такие как управление формами. Для обычного использования в списках рассылки и новостных лент имеется множество ресурсов для примеров того, как делать обычные вещи.

РЕДАКТИРОВАТЬ: как указано в @ комментарии Чирага , @ ответ Дарина содержит код, который определенно компилируется с текущими версиями.

Пример использования:

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

4 голосов
/ 29 октября 2009

Нам очень повезло, это PDFSharp (мы используем его для преобразования TIFF и Text в PDF для сотен медицинских заявлений каждый день).

http://pdfsharp.com/PDFsharp/

3 голосов
/ 10 октября 2015

Еще один рабочий код, попробуйте

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());
        }
}
2 голосов
/ 29 апреля 2012

Такое задание легко выполнить с помощью библиотеки Docotic.Pdf .

Вот пример, который создает PDF из заданных изображений (на самом деле не только JPG):

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

Отказ от ответственности: я работаю на продавца библиотеки.

0 голосов
/ 02 ноября 2009

не уверен, что вы ищете только бесплатные / открытые решения или рассматриваете коммерческие решения. Но если вы включаете коммерческие решения, есть набор инструментов под названием EasyPDF SDK, который предлагает API для преобразования изображений (плюс ряд других типов файлов) в PDF. Он поддерживает C # и может быть найден здесь:

 http://www.pdfonline.com/

Код C # будет выглядеть следующим образом:

 Printer oPrinter = new Printer();

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

Чтобы быть полностью прозрачным, я должен отрицать, что я работаю на создателей EasyPDF SDK (отсюда и мой дескриптор), так что это предложение не лишено некоторой личной предвзятости :) Но не стесняйтесь проверить eval-версию, если заинтересован. Ура!

0 голосов
/ 29 октября 2009

Многие инструменты различны. Я использую PrimoPDF (БЕСПЛАТНО) http://www.primopdf.com/, вы идете распечатывать файл и печатаете его в формате pdf на свой диск. работает на Windows

...