【问题标题】:Need .NET library fo converting TIFF files to PDF [closed]需要 .NET 库将 TIFF 文件转换为 PDF [关闭]
【发布时间】:2011-04-03 03:00:56
【问题描述】:

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

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

该工具应该用于转换大量 TIFF 文件。

【问题讨论】:

    标签: .net pdf tiff


    【解决方案1】:

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

    这不是一个选项吗?

    【讨论】:

      【解决方案2】:

      您可以为此尝试我们的LibTiff.Net 库。它是免费和开源的(BSD 许可证),并附带 tiff2pdf 实用程序,它可能完全满足您的需求。

      【讨论】:

      • 链接失效。正确的链接似乎是bitmiracle.com/libtiff 但无论如何它看起来不错:-)
      • 这很奇怪。刚刚检查过 - 这两个链接对我来说都很好。
      【解决方案3】:

      我使用免费的 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;
          }
      

      【讨论】:

        【解决方案4】:

        这里是一个使用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");
                }
            }
        }
        

        【讨论】:

          【解决方案5】:

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

          我在 2011 年发表的一篇题​​为“Convert A Multipage TIFF To PDF Using PDFOne .NET”的文章中为我们的产品 G​​nostice PDFOne .NET 做了同样的事情。

          .NET 提供图像提取功能。任何 PDF 创建库都可以完成剩下的工作。

          免责声明:我为 Gnostice 工作。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-09-25
            • 1970-01-01
            • 2010-09-09
            • 2011-03-31
            • 1970-01-01
            • 2011-10-31
            • 2011-07-12
            • 2011-08-29
            相关资源
            最近更新 更多