[英]Opening a PDF file from within a WPF application
我有一個 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,或其他)文件,以便它加載並在我的應用程序窗口中顯示該文檔?
類似的問題在這里。 Wpf 沒有為此提供基類,如果您想解決它,您可以使用 System.open 在它自己的應用程序中打開 pdf。 Diagnostics.Process.Start (@"filename.pdf");
您還可以訪問其他選項的鏈接。
GemBox 庫可以將文件轉換為XpsDocument
對象,您可以將其分配給DocumentViewer
控件。
例如,以下是使用 GemBox.Pdf 對 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();
}
}
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
將不再工作。
我建議為 c# 使用免費的 PDF 庫。
http://www.e-iceblue.com/Introduce/free-pdf-component.html#.V0RVLfmlRpg就是一個很好的例子!
在 WPF 中查看 PDF 將單頁轉換為圖像並顯示這是一個很好的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.