需要.NET库将TIFF文件转换为PDF
有谁知道一个好的.NET库可以将TIFF文件(可能是多页文件)转换为PDF文件 TIFF文件存储在文件共享中,PDF文件需要存储在与TIFF文件相同的位置 该工具应该用于转换大量的TIFF文件。Sam Leffler提供了各种命令行实用程序。其中之一,需要.NET库将TIFF文件转换为PDF,.net,pdf,tiff,.net,Pdf,Tiff,有谁知道一个好的.NET库可以将TIFF文件(可能是多页文件)转换为PDF文件 TIFF文件存储在文件共享中,PDF文件需要存储在与TIFF文件相同的位置 该工具应该用于转换大量的TIFF文件。Sam Leffler提供了各种命令行实用程序。其中之一,tiff2pdf.exe将TIFF(包括多页TIFF)转换为PDF 这不是一个选项吗?您可以为此尝试我们的库。它是免费的、开源的(BSD许可证),附带tiff2pdf实用程序,可能完全满足您的需要。我使用免费的iTextSharp库创建了一个PDF
tiff2pdf.exe
将TIFF(包括多页TIFF)转换为PDF
这不是一个选项吗?您可以为此尝试我们的库。它是免费的、开源的(BSD许可证),附带tiff2pdf实用程序,可能完全满足您的需要。我使用免费的iTextSharp库创建了一个PDF,并将标准System.Drawing.Image对象插入到PDF中,每页一个。
CreateCompressedImageStream
只需获取System.Drawing.Image并将其保存为黑白PNG以减小文件大小
public byte[]CreatePDF(IEnumerable图像)
{
如果(!images.Any())
{
抛出新ArgumentException(“您没有指定任何图像”);
}
var stream=newmemoryStream();
使用(var doc=new Document())
{
GetInstance(文档,流);
doc.Open();
int i=0;
foreach(图像中的var图像)
{
i++;
var docImage=iTextSharp.text.Image.GetInstance(this.CreateCompressedImageStream(Image));
docImage.ScaleToFit(doc.PageSize.Width、doc.PageSize.Height);
文档添加(docImage);
如果(i+1i.MimeType.ToLower()==“image/png”);
EncoderParameter ColorDepth参数=新的EncoderParameter(Encoder.ColorDepth,1L);
var参数=新编码器参数(1);
parameters.Param[0]=colorDepthParameter;
保存(图像流、信息、参数);
imageStream.Position=0;
返回图像流;
}
下面是一个使用
System.Drawing.Imaging.Bitmap类允许您打开多页TIFF并提取每个帧。然后,您需要确定每个帧中图像的大小,创建该大小的PDF页面,然后在这些页面上绘制位图 我在一篇题为“2011年出版”的文章中为我们的产品Gnostice PDFOne.NET做了这件事 .NET提供图像提取功能。任何PDF创建库都可以完成其余工作
免责声明:我为Gnostice工作。链接不起作用。正确的链接似乎是,但无论如何它看起来很好:-)这很奇怪。刚刚检查-两个链接对我都很好。
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;
}
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");
}
}
}