TallComponents PDF Rasterizer.NET convertToWPF内存错误

时间:2013-04-16 15:49:51

标签: wpf pdf rendertargetbitmap fixedpage pdf-rasterizer

我正在尝试使用TallComponents PDF Rasterizer光栅化pdf文件

它工作得很好tiff ..虽然我想转换为TwT ..

我直接向他们提出这个问题,虽然没有回复..

所以,我按照他们的示例代码..

        TallComponents.PDF.Rasterizer.Document _document;
        using (FileStream file = new FileStream(pSource, FileMode.Open, FileAccess.Read))
        {
            _document = new TallComponents.PDF.Rasterizer.Document(file);
        }

        TallComponents.PDF.Rasterizer.Configuration.RenderSettings rSettings = new TallComponents.PDF.Rasterizer.Configuration.RenderSettings();
        rSettings.TextSettings.ResolveFont += new TallComponents.PDF.Rasterizer.Fonts.ResolveFontEventHandler(TextSettings_ResolveFont);

        TallComponents.PDF.Rasterizer.ConvertToWpfOptions rOptions = new TallComponents.PDF.Rasterizer.ConvertToWpfOptions();
        TallComponents.PDF.Rasterizer.Diagnostics.Summary summary = new TallComponents.PDF.Rasterizer.Diagnostics.Summary();

        int count = _document.Pages.Count;
        for (int i = 0; i < count; i++)
        {

        using (FileStream outStream = new FileStream(path, FileMode.Create)) 
        { 
             System.Windows.Documents.FixedPage fpage = _document.Pages[i].ConvertToWpf(rSettings, rOptions, summary); 

             double width = fpage.Width * rasterize.rast_dpiX / system.scr_dpiX; 
             double height = fpage.Height * rasterize.rast_dpiY / system.scr_dpiY; 

             RenderTargetBitmap renderTarget = new RenderTargetBitmap( 
             (int)width, 
             (int)height, 
             rasterize.rast_dpiX, 
             rasterize.rast_dpiY, 
             System.Windows.Media.PixelFormats.Default); 

             renderTarget.Render(fpage); 

             PngBitmapEncoder enc = new PngBitmapEncoder(); 
             enc.Frames.Add(BitmapFrame.Create(renderTarget)); 
             enc.Save(outStream); 

        } 

当我使用只有1页的pdf时它可以工作..

当我使用超过1页的pdf时,我的内存错误不足......

当我使用超过1页的pdf并从第2页开始,并跳过它工作的第一页时..虽然所有页面都是空白的,但我只能光栅化第一页,因为它是试用版。

我是否因为试用产品而出现内存错误?

1 个答案:

答案 0 :(得分:1)

很可能你在第一页上有一个图像(或另一个巨大的PDF对象),在处理之后你就有了一个例外。此异常打破了进一步的渲染,并且您有一个空白的2,3,4 ...页面。