【发布时间】:2011-10-31 06:36:49
【问题描述】:
我正在寻找一种方法来使用 c#.net 将 Group 3 压缩 TIFF 转换为 png 或最好的 pdf。
【问题讨论】:
-
@Oded - 我不知道,我可以从哪里开始尝试:-(
我正在寻找一种方法来使用 c#.net 将 Group 3 压缩 TIFF 转换为 png 或最好的 pdf。
【问题讨论】:
为此尝试LibTiff.Net 库。
该库附带tiff2pdf utility(您需要自己构建它),这可能正是您所需要的。您甚至可以将实用程序的代码合并到您的应用程序中。
库和实用程序是免费和开源的。许可证(新 BSD 许可证)允许任何修改。您可以在商业应用程序中使用该库和实用程序。
免责声明:我是该库的维护者之一。
【讨论】:
TIFF 转 PNG:
System.Drawing.Image 将允许您打开 Group3 TIFF 并将其保存为 PNG,只需将 TIFF 加载为普通图像(例如 Image.FromFile、Image.FromStream 等),然后使用 Image.Save 保存它带有ImageFormat.Png 参数的方法。由于 TIFF 差异很大,有时我会遇到 System.Drawing 无法打开的晦涩 TIFF,但这是不寻常的。如果发生这种情况,您需要从开源中寻找第三方库(例如,iText 有一个复杂的图像库)或者有商业选项,例如 Lead Tools 或 Atalasoft。
TIFF 转 PDF:
iTextSharp 是一个很好的库。我什至在a google search 上找到了一些关于这个特定主题的文章。 This one 似乎是满足您的需求的好方法。
【讨论】:
(免责声明 - 我为 Atalasoft 工作) 如果您为此使用dotImage,则两种转换都很简单。
对于 tiff 到 pdf:
using (outputStream = new FileStream(pathToPdf, FileMode.Create)) {
PdfEncoder encoder = new PdfEncoder();
encoder.Save(outputStream, new FileSystemImageSource(pathToTiff, true), null); // true = do all pages
}
对于 tiff 到 png:
FileSystemImageSource source = new FileSystemImageSource(pathToTiff, true);
int page = 0;
while (source.HasMoreImages()) {
AtalaImage image = source[page];
using (FileStream stm = new FileStream("output_page_" + page + ".png", FileMode.Create)) {
PngEncoder encoder = new PngEncoder();
encoder.Save(stm, image, null);
}
source.Release(image);
}
【讨论】:
使用 ghostscript,我曾经从 PDF 中提取图像并创建缩略图,该库还可以将图像转换为 PDF,并且它是开源的。
一个人为 ghostscript API 创建了一个包装器: http://www.mattephraim.com/blog/2009/01/06/a-simple-c-wrapper-for-ghostscript/
【讨论】: