PDFsharp如何将多个页面TIFF转换为PDF

时间:2017-10-03 12:27:27

标签: c# pdf tiff pdfsharp

我的代码在下面只转换第一页。我无法找到将所有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;
    }

}

1 个答案:

答案 0 :(得分:0)

如果使用PDFsharp的GDI版本,则可以编写XImage image = (XImage)Tiff;而不是创建临时流(可能包含所有图像,而不仅仅是所选图像)。