我的代码在下面只转换第一页。我无法找到将所有TIFF页面转换为PDF页面的方法(输出将是一个PDF文件,其页面数与TIFF文件相同)
public String ConvertTiffToPdf(String LocalPath){
PdfDocument s_document = new PdfDocument();
int pageCount = 0;
Image Tiff = Image.FromFile(LocalPath);
pageCount = Tiff.GetFrameCount(FrameDimension.Page);
String Filename = Path.GetFileName(LocalPath);
for (int a = 0; a < pageCount; a++)
{
PdfPage pageNew = s_document.AddPage();
Tiff.SelectActiveFrame(FrameDimension.Page,a);
XGraphics gfxTiff = XGraphics.FromPdfPage(pageNew);
//XImage image = XImage.FromStream
XImage image = XImage.FromStream(StreamUtils.ToStream(Tiff, ImageFormat.Tiff));
gfxTiff.DrawImage(image, 0, 0);
}
String SavePath = @"" + LocalPath + ".pdf";
s_document.Save(SavePath);
return SavePath;
}
下面是我的StreamUtils类,用于将活动帧图像转换为流
public static class StreamUtils
{
public static Stream ToStream(this Image image, ImageFormat format)
{
var stream = new System.IO.MemoryStream();
image.Save(stream, format);
stream.Position = 0;
return stream;
}
}
答案 0 :(得分:0)
如果使用PDFsharp的GDI版本,则可以编写XImage image = (XImage)Tiff;
而不是创建临时流(可能包含所有图像,而不仅仅是所选图像)。