我有一个WPF应用程序,其中GUI向用户显示应用程序的几个不同方面,对应用程序的每个部分使用不同的tab
。我现在正在寻找添加功能来加载和查看其中一个选项卡上的应用程序内的文档。
我在选项卡中添加了DocumentViewer
,并且在运行我的应用程序时可以看到它显示在GUI中,但我不确定如何将DocumentViewer
添加到加载/显示文档,似乎无法找到任何方法调用/标记,使您能够执行此操作。
我用来将DocumentViewer
添加到我的应用程序的XAML标记是:
<TabItem Header="Document Viewer">
<StackPanel>
<DocumentViewer x:Name="docViewer" Height="643" Margin="0,0,-0.4,0"/>
<DocumentViewer x:Name="documentViewer" Height="1" Margin="0,0,-0.4,0" RenderTransformOrigin="0.5,0.5">
<DocumentViewer.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleY="-1"/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</DocumentViewer.RenderTransform>
</DocumentViewer>
</StackPanel>
</TabItem>
如何将此DocumentViewer
指向我的计算机上的PDF(或.doc或其他)文件,以便它将在我的应用程序窗口中加载并显示该文档?< / p>
答案 0 :(得分:0)
类似问题here。 Wpf没有为此提供基类,如果你想解决它,你可以在自己的应用程序中打开pdf 系统。 Diagnostics.Process.Start(@&#34; filename.pdf&#34;);
您还可以访问其他选项的链接。
答案 1 :(得分:0)
GemBox库可以将文件转换为XpsDocument
对象,您可以将其分配给DocumentViewer
控件。
例如,以下是使用GemBox.Pdf进行for PDF的操作:
XpsDocument xpsDocument;
public MainWindow()
{
InitializeComponent();
using (var document = PdfDocument.Load("input.pdf"))
{
this.xpsDocument = document.ConvertToXpsDocument(SaveOptions.Xps);
this.docViewer.Document = this.xpsDocument.GetFixedDocumentSequence();
}
}
还有for DOC和GemBox.Document:
XpsDocument xpsDocument;
public MainWindow()
{
InitializeComponent();
var document = DocumentModel.Load(path);
this.xpsDocument = document.ConvertToXpsDocument(SaveOptions.XpsDefault);
this.docViewer.Document = this.xpsDocument.GetFixedDocumentSequence();
}
请注意,在两种情况下,XpsDocument
对象都必须保持引用状态,以便DocumentViewer
可以访问其资源。否则,GC将收集/处置XpsDocument
,而DocumentViewer
将不再起作用。
答案 2 :(得分:-1)
我建议使用免费的PDF Lib for c#。
http://www.e-iceblue.com/Introduce/free-pdf-component.html#.V0RVLfmLRpg就是一个很好的例子!
要在WPF中查看将单个页面转换为图像的PDF并显示这是一个很好的解决方案。