C# 在Surface 2上呈现Windows PDF API RT错误

C# 在Surface 2上呈现Windows PDF API RT错误,c#,.net,pdf,windows-runtime,winrt-xaml,C#,.net,Pdf,Windows Runtime,Winrt Xaml,在过去的两个月里,我一直在开发一个使用Windows8.1PDF API的应用程序。它在广泛的设备上运行良好,包括: 运行8.1 Pro的我的开发PC 运行Windows 8.1 Pro的笔记本电脑(未启用触摸功能) 运行Windows 8.1 Pro的虚拟机 运行Windows 8.1 Enterprise的虚拟机 运行Windows Embedded 8.1 Industry Pro的虚拟机 运行Windows 8.1 Pro的迷你电脑 运行Windows 8.1 Home的三星平板电脑

在过去的两个月里,我一直在开发一个使用Windows8.1PDF API的应用程序。它在广泛的设备上运行良好,包括:

  • 运行8.1 Pro的我的开发PC
  • 运行Windows 8.1 Pro的笔记本电脑(未启用触摸功能)
  • 运行Windows 8.1 Pro的虚拟机
  • 运行Windows 8.1 Enterprise的虚拟机
  • 运行Windows Embedded 8.1 Industry Pro的虚拟机
  • 运行Windows 8.1 Pro的迷你电脑
  • 运行Windows 8.1 Home的三星平板电脑
然而,我们最近购买了两个Surface 2 RT,用于运行此应用程序,现在我们面临一个奇怪的问题。我已将问题缩小到PDF API。在下面的PNGs中,您将看到渲染过程中出现了一些奇怪的行为,导致结果图像中出现一些空白区域。当我保持接近“原始”大小时,它似乎工作得很好(在PdfPageRenderOptions中没有指定任何值的情况下,我得到的大小,考虑到它从一个设备到另一个设备的变化,这不是真正的“原始”)。但是,如果我尝试从PDF中渲染一个稍大一些的图像,这就是结果

渲染:

表面RT设备

  • DebugOriginal_Surface.png:未缩放时所需的行为。这是我在地面RT设备上得到的
  • DebugZoom\u Surface.png:缩放时的问题行为。这是我在地面RT设备上得到的
  • 另一个zoomlevel_Surface.png:进一步缩放时的另一个问题行为。这就是我在网上看到的
任何其他设备

  • DebugZoomed\u DevMachine.png:缩放时所需的行为。这是我在任何Windows非RT设备上得到的
  • DebugOriginal_DevMachine.png:未缩放时所需的行为。这是我在任何Windows非RT设备上得到的
我精简了我的代码,以确保它不是UI问题或缓存pdf文件的方式等。我的代码现在非常简单,如以下示例所示:

var pdfFile = await StorageFile.GetFileFromPathAsync(NavigationService.Drawing.Path);
_pdfDoc = await PdfDocument.LoadFromFileAsync(pdfFile);

if (_pdfDoc.PageCount > 0)
{
    StorageFolder folder = ApplicationData.Current.TemporaryFolder;
    StorageFile pngFileOriginal = await folder.CreateFileAsync("DebugOriginal_" + Guid.NewGuid().ToString() + ".png", CreationCollisionOption.ReplaceExisting);
    StorageFile pngFileZoomed = await folder.CreateFileAsync("DebugZoomed_" + Guid.NewGuid().ToString() + ".png", CreationCollisionOption.ReplaceExisting);

    using (IRandomAccessStream fileStream = await pngFileOriginal.OpenAsync(FileAccessMode.ReadWrite))
    {
        await _pdfDoc.GetPage(0).RenderToStreamAsync(fileStream);
        await fileStream.FlushAsync();
    }

    using (IRandomAccessStream fileStream = await pngFileZoomed.OpenAsync(FileAccessMode.ReadWrite))
    {
        await _pdfDoc.GetPage(0).RenderToStreamAsync(fileStream, new PdfPageRenderOptions { DestinationWidth = 2000 });
        await fileStream.FlushAsync();
    }
}
这是API的问题还是我的问题

编辑

微软的PDF API示例()在Surface 2 RT设备上也做了同样的事情

编辑2


错误出现在Surface 2 RT上,而不是Surface 1 RT上。这显然是硬件问题。

这是关于设备DPI的API的错误。减少DPI/分辨率可以解决此问题。他们正在进行修复。

此问题的修复程序已发布,Windows可能会更新,可在

上获得。您的意思是包括图像链接吗?这并没有帮助,但乍一看似乎是显示驱动程序问题。显示驱动程序可能会影响PDF渲染API?此外,它是一个全新的表面2完全更新。还没有接触过任何驱动程序,但Microsoft是否会确保在windows更新时推送驱动程序?如果没有,甚至可以更新RT设备上的驱动程序吗?当然,任何渲染,包括缩放,都可能受到显示驱动程序故障的影响。事实上,它只发生在特定的设备上,这让我认为它与显示有关。我不知道你的代码是如何导致的。同样需要注意的是,它是我们尝试应用程序的唯一ARM/RT设备。该错误在Windows 8.1 Update 1中仍处于活动状态,你知道他们是否仍在处理它吗?你知道关于这个问题是否有Microsoft Connect的链接吗?@StrAbZ它已被修复。看看沙鲁·古普塔的回答。这个名字似乎很熟悉。。。但上次我看到它时,它以@microsoft.com结尾;)