MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Вывод pdf документа на страницу(WPF)"
Answer 967721
Windows 10
Можно использовать API UWP (Windows.Data.Pdf). Для его использования необходим добавить ссылки на:
- библиотеку метаданных UWP, путь к которой имеет вид
C:\Program Files (x86)\Windows Kits\10\UnionMetadata\(версия)\Windows.winmd
(для добавления ссылки на нее в диалоговом окне выбора библиотеки необходимо изменить фильтр на "Все файлы");- сборку System.Runtime.WindowsRuntime (
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\System.Runtime.WindowsRuntime.dll
).Тогда код для отображения страницы PDF-документа в WPF будет выглядеть так:
XAML
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="WpfApp1.MainWindow" Title="MainWindow" Height="400" Width="600" > <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" x:Name="grid" > <Button Content="Button" HorizontalAlignment="Left" Height="50" Margin="20,20,0,0" VerticalAlignment="Top" Width="217" Click="Button_Click"/> <Image HorizontalAlignment="Stretch" Margin="40,100,40,40" VerticalAlignment="Stretch" x:Name="img"/> </Grid> </Window>
C#
using System; using System.IO; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Media.Imaging; using System.Windows.Controls; using Windows.Data.Pdf; using Windows.Storage; using Windows.Storage.Streams; namespace WpfApp1 { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private async void Button_Click(object sender, RoutedEventArgs e) { StorageFile file = await StorageFile.GetFileFromPathAsync(@"C:\files\document.pdf"); PdfDocument pdf = await PdfDocument.LoadFromFileAsync(file); PdfPage page = pdf.GetPage(0); BitmapImage image = new BitmapImage(); using (var stream = new InMemoryRandomAccessStream()) { await page.RenderToStreamAsync(stream); image.BeginInit(); image.CacheOption = BitmapCacheOption.OnLoad; image.StreamSource = stream.AsStream(); image.EndInit(); } img.Source = image; } } }
Источник: Lander Verhack. Creating a PDF Viewer in WPF using Windows 10 APIs
Предыдущие версии Windows
Использовать какую-либо стороннюю библиотеку, например:
CefSharp - аналог WebBrowser, который поддерживает также отображение PDF
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.