Как преобразовать файл XPS в изображение высокого качества (а не размытое низкое разрешение)?

Я пытаюсь преобразовать XPS с помощью WPF.

Идея заключается в том, что эти изображения можно загрузить с помощью silverlight 4, для этого я использую следующий код:

 // XPS Document
            XpsDocument xpsDoc = new XpsDocument(xpsFileName, System.IO.FileAccess.Read);
            FixedDocumentSequence docSeq = xpsDoc.GetFixedDocumentSequence();

        // The number of pages
        PageCount = docSeq.References[0].GetDocument(false).Pages.Count;

        DocumentPage sizePage = docSeq.DocumentPaginator.GetPage(0);
        PageHeight = sizePage.Size.Height;
        PageWidth = sizePage.Size.Width;
        // Scale dimensions from 96 dpi to 600 dpi.
        double scale = 300/ 96;

        // Convert a XPS page to a PNG file
        for (int pageNum = 0; pageNum < PageCount; pageNum++)
        {
            DocumentPage docPage = docSeq.DocumentPaginator.GetPage(pageNum);
            BitmapImage bitmap = new BitmapImage();
            RenderTargetBitmap renderTarget =
                new RenderTargetBitmap((int)(scale * (docPage.Size.Height + 1)),
                                                               (int)(scale * (docPage.Size.Height + 1)),
                                                               scale * 96,
                                                               scale * 96, PixelFormats.Pbgra32);
            renderTarget.Render(docPage.Visual);


            PngBitmapEncoder encoder = new PngBitmapEncoder();

            encoder.Frames.Add(BitmapFrame.Create(renderTarget));

            FileStream pageOutStream = new FileStream(name + ".Page" + pageNum + ".png", FileMode.Create, FileAccess.Write);
            encoder.Save(pageOutStream);
            pageOutStream.Close();

Этот код взят из http://xpsreader.codeplex.com/ проекта для преобразования документ XPS. прекрасно работает! Но проблема в том, что изображение низкого разрешения и размытое. Я исследовал и обнаружил, что RenderTargetBitmap и нашел на этой странице: http://www.codeproject.com/Questions/213737/Render-target-bitmap-quality-issues

Проблема в том, что у вас есть Это не использует аппаратный рендеринг RenderTargetBitmap.

Одним из решений является используйте DirectX с WPF для этого, но я не нашел ни одного ясного примера, который бы показал мне правильный способ сделать это.

Я ценю предложения. Заранее спасибо.

Обновление: я прикрепил документ XPS, я пытаюсь преобразовать изображение Загрузите test.xps

13
задан Steffen Opel 8 February 2012 в 01:00
поделиться