是否有用于显示PDF的本机WPF控件?我正在编写一个程序,它将加载一个PDF文件,然后在其上显示额外的符号。
使用WindowsFormsHost(http://hugeonion.com/2009/04/06/displaying-a-pdf-file-within-a-wpf-application/)将无法正常工作,因为WindowsFormsHost控件始终显示在顶部窗口中的所有其他WPF控件。这不允许在PDF上看到我的注释。
使用我需要的缩放细节级别将PDF转换为光栅图像会创建一个太大的文件。
WebBrowser控件不允许以编程方式更改或缩放页面。我也无法删除Adobe工具栏。
我使用的任何第三方库都需要免费(如啤酒)。
答案 0 :(得分:7)
如果您的计算机上有IE的某些PDF查看器插件(例如Acrobat Reader)...
<Grid>
<WebBrowser x:Name="WebBrowser1"
Source="C:\Temp\Test.pdf"/>
</Grid>
工作得很好......
答案 1 :(得分:1)
不幸的是我还没有足够的声誉来发表评论,所以我会把它作为答案。 我最近遇到了与Flash非常相似的问题,最后我使用了WindowsFormsHost和Overlays/Adorners。只是我的2cents。
以下是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>
为简单起见,我将叠加层缩小为一个椭圆。 Web浏览器托管在WindowsFormsHost中。 这是放置并显示它的代码:
public MainWindow()
{
InitializeComponent();
puOverlay.VerticalOffset = -60;
puOverlay.HorizontalOffset = (wbMain.ActualWidth / 2) - 20;
puOverlay.IsOpen = true;
...
}
非常简单,但是不要犹豫,问一下是否仍然不清楚。
答案 2 :(得分:0)
我没有找到任何好的免版税第三方WPF控件,效果很好。 Telerik有一个pdf查看器,但它没有做所有类型,也不会为我做好大文件。我也尝试过Syncfusion,这也是错误的。我最终使用WindowsFormsHost与另一个第三方GD图片的Windows窗体查看器。他们说他们正在制作WPF版本。
现在还有其他人需要为每个可能都很好的服务器安装付费,但我无法解决这个问题。