.net 在WPF中查看PDF而不使用WindowsFormsHost

.net 在WPF中查看PDF而不使用WindowsFormsHost,.net,wpf,pdf,windowsformshost,.net,Wpf,Pdf,Windowsformshost,是否有用于显示PDF的本机WPF控件?我正在编写一个程序,将加载一个PDF文件,然后在上面显示额外的符号 使用WindowsFormsHost(http://hugeonion.com/2009/04/06/displaying-a-pdf-file-within-a-wpf-application/)无法工作,因为WindowsFormsHost控件始终显示在窗口中所有其他WPF控件的顶部。这不允许在PDF上看到我的符号 将PDF转换为具有我需要的缩放细节级别的光栅图像将创建一个太大的文件 W

是否有用于显示PDF的本机WPF控件?我正在编写一个程序,将加载一个PDF文件,然后在上面显示额外的符号

使用WindowsFormsHost(http://hugeonion.com/2009/04/06/displaying-a-pdf-file-within-a-wpf-application/)无法工作,因为WindowsFormsHost控件始终显示在窗口中所有其他WPF控件的顶部。这不允许在PDF上看到我的符号

将PDF转换为具有我需要的缩放细节级别的光栅图像将创建一个太大的文件

WebBrowser控件不允许以编程方式更改或缩放页面。我也无法删除Adobe工具栏


我使用的任何第三方图书馆都必须是免费的(比如啤酒)。

不幸的是,我还没有足够的声誉来发表评论,所以我将把它作为一个答案。 我最近在使用Flash时遇到了一个非常类似的问题,我最终使用了WindowsFormsHost和。就我的20美分

下面是XAML创建一个覆盖作为弹出窗口:

    <Grid>
       <Canvas >
        <WebBrowser  x:Name="wbMain" Width="800" Height="500"></WebBrowser>
        <Popup x:Name="puOverlay" AllowsTransparency="True" Placement="Bottom" PlacementTarget="{Binding ElementName=wbMain}">
                <Ellipse Canvas.Left="0" Canvas.Top="0" Height="50" Name="headEllipse" Stroke="Black" Fill="Orange" Width="50" Canvas.ZIndex="5"/>
        </Popup>
        <Ellipse Canvas.Left="0" Canvas.Top="0" Height="50" Name="headEllipse1" Stroke="Black" Fill="Orange" Width="50" Canvas.ZIndex="5"/>
         </Canvas>
    </Grid>

非常简单,但是,如果还有什么不清楚的地方,请不要犹豫。

前提是您的机器上有一些IE的PDF查看器插件(如Acrobat Reader)

    <Grid>
            <WebBrowser x:Name="WebBrowser1"
                        Source="C:\Temp\Test.pdf"/>
    </Grid>


工作正常…

我还没有找到任何好的免版税第三方WPF控件。Telerik有一个pdf查看器,但它不能处理所有类型的文件,也不能很好地处理大型文档。我也尝试了Syncfusion,那也是一辆马车。最后,我将WindowsFormsHost与另一个第三方GD图片的windows窗体查看器一起使用。他们说他们正在制作WPF版本


现在还有其他一些可能好的服务器安装都需要付费,但我就是不能这样做。

我试过了,但我似乎无法充分控制WebBrowser以达到我的目的。有关更多详细信息,请参阅我原始问题的更新。@Eric K,你想控制什么?网络浏览器可以控制。。。它提供了HTMLHost接口,可以创造奇迹!我需要从PDF ActiveX插件中删除所有可见的工具栏。我还需要能够缩放PDF。最后,我需要能够导航到特定页面。我知道WebBrowser有一些页面导航,但它是特定于URL和您的查看历史的。例如,它不允许您指定特定PDF的第3页。您介意分享您的示例吗?要使链接中的示例正常工作,我遇到了一些问题。我尝试按照本指南中的步骤使用装饰器:但WindowsFormsHost仍然绘制在顶部。有什么建议吗?感谢您提供的示例,但是使用弹出窗口与链接中描述的装饰器技术不同。您是对的,对不起,我忘记了我最终使用弹出窗口是最快和最简单的方法。
    <Grid>
            <WebBrowser x:Name="WebBrowser1"
                        Source="C:\Temp\Test.pdf"/>
    </Grid>