需要一个将TIFF文件转换为PDF的.NET库

9

有没有人知道一个好的.NET库可以将TIFF文件(可能是多页)转换为PDF文件?

TIFF文件存储在文件共享中,PDF文件需要存储在与TIFF文件相同的位置。

该工具应用于将大量的TIFF文件进行转换。

5个回答

11

这里是使用PDFSharp的示例。

using System;
using System.Collections.Generic;
using System.Text;
using PdfSharp.Drawing;
using PdfSharp.Pdf;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            PdfDocument s_document = new PdfDocument();

            PdfPage page = s_document.AddPage();

            XGraphics gfx = XGraphics.FromPdfPage(page);


            XImage image = XImage.FromFile(@"C:\Image.tif");

            page.Width = image.PointWidth;
            page.Height = image.PointHeight;

            gfx.DrawImage(image, 0, 0);

            s_document.Save(@"C:\Doc.pdf");
        }
    }
}

3
你可以尝试使用我们的LibTiff.Net库。它是免费且开源(BSD许可证),并且带有tiff2pdf实用程序,可能正是您所需的。

链接无法使用。正确的链接似乎是http://www.bitmiracle.com/libtiff/。但还是谢谢,看起来很不错 :-) - Palle Agermark
很奇怪。我刚才检查了 - 这两个链接对我都有效。 - Bobrovsky

2
我使用免费的iTextSharp库创建PDF,并将标准的System.Drawing.Image对象插入到PDF中,每页一个。CreateCompressedImageStream函数简单地将System.Drawing.Image保存为黑白PNG以减小文件大小。 http://www.itextpdf.com/
    public byte[] CreatePDF(IEnumerable<Image> images)
    {
        if (!images.Any())
        {
            throw new ArgumentException("You haven't specified any images.");
        }

        var stream = new MemoryStream();
        using(var doc = new Document())
        {
            PdfWriter.GetInstance(doc, stream);
            doc.Open();

            int i = 0;
            foreach (var image in images)
            {
                i++;
                var docImage = iTextSharp.text.Image.GetInstance(this.CreateCompressedImageStream(image));
                docImage.ScaleToFit(doc.PageSize.Width, doc.PageSize.Height);
                doc.Add(docImage);

                if (i + 1 < images.Count())
                {
                    doc.NewPage();
                }
            }

            doc.Close();
        }

        return stream.ToArray();
    }

    private Stream CreateCompressedImageStream(Image image)
    {
        MemoryStream imageStream = new MemoryStream();

        var info = ImageCodecInfo.GetImageEncoders().FirstOrDefault(i => i.MimeType.ToLower() == "image/png");
        EncoderParameter colorDepthParameter = new EncoderParameter(Encoder.ColorDepth, 1L);
        var parameters = new EncoderParameters(1);
        parameters.Param[0] = colorDepthParameter;

        image.Save(imageStream, info, parameters);

        imageStream.Position = 0;
        return imageStream;
    }

1

Sam Leffler的libtiff附带了各种命令行实用程序。其中之一,tiff2pdf.exe将TIFF(包括多页TIFF)转换为PDF。

这不是一个选项吗?


0

System.Drawing.Imaging.Bitmap类可以让您打开多页TIFF并提取每个帧。然后,您需要确定每个帧中图像的大小,创建该大小的PDF页面,然后在这些页面上绘制位图。

我已经为我们的产品Gnostice PDFOne .NET完成了这件事,在2011年发表了一篇名为“使用PDFOne .NET将多页TIFF转换为PDF”的文章。

.NET提供了图像提取功能。任何PDF创建库都能够完成其余的工作。

免责声明:我为Gnostice工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接