DocumentViewerを使う WPF

VB Tips And Sample(HOME)VBプログラマの為のWPF入門

DocumentViewerを使う WPF

DocumentViewerは、誤解・御幣を恐れず、簡単に言うと、MS版PDF=XPSを開いて見て、印刷できるコントロール。
サンプルは、オープンオフィスで出力した、XPSファイルを開いて見ているもの。
因みに、XPSを出力するには、いきなり保存ではなく、印刷―XPS―保存を行う。
ちょっと変ですね。

ついでに、DockPanelを使用して、フォームの大きさに合わせてコントロールも大きくなるようにしてみた。
DockPanelは、要はフォームの四隅のいずれかへ、コントロールを係留させるコントロールと考えればよい。
xpsビューワー

'ReachFrameworkの参照が必要
Imports System.Windows.Xps.Packaging


Public Class DocumentViewer


    Private Sub btn1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles btn1.Click
        'ファイル選択
        Dim openFileDialog1 As New Forms.OpenFileDialog()
        If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
            text1.Text = openFileDialog1.FileName

            If text1.Text <> "" Then
                Dim myxps As XpsDocument
                Try
                    myxps = New XpsDocument(Me.text1.Text, IO.FileAccess.Read)
                    DocumentViewer1.Document = myxps.GetFixedDocumentSequence
                Catch ex As Exception
                    MessageBox.Show(ex.Message.ToString, "エラー", MessageBoxButton.OK, MessageBoxImage.Error)
                End Try
            End If

        End If
    End Sub
End Class


<Window x:Class="DocumentViewer"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="DocumentViewer" Height="300" Width="300" WindowStartupLocation="CenterScreen">
    <Grid>
        <DockPanel>
        
            <Grid DockPanel.Dock="Top">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="30"/>
                </Grid.ColumnDefinitions>
                <TextBox Name="text1" Grid.Column="0"></TextBox>
                <Button Name="btn1" Grid.Column="1" Content="…"/>
            </Grid>
                            
            <DocumentViewer  Name="DocumentViewer1"  DockPanel.Dock="Top" />
        
        </DockPanel>
    </Grid>
</Window>
さて、次回は、XPS=FixedDocumentなるものを、ゴリゴリと書いて作るには、如何にすればよいかである。
また、WPFにはよく似た名前のFlowDocumentがあるのでそちらの作り方も調べよう。

VB Tips And Sample(HOME)VBプログラマの為のWPF入門