7

PDF を表示するためのネイティブ WPF コントロールはありますか? PDF ファイルをロードし、その上に追加の注釈を表示するプログラムを作成しています。

WindowsFormsHost コントロールは常に他のすべての上に表示されるため、WindowsFormsHost (http://hugeonion.com/2009/04/06/displaying-a-pdf-file-within-a-wpf-application/) を使用しても機能しません。ウィンドウ内の WPF コントロール。これにより、私の注釈が PDF 上に表示されなくなります。

必要なズーム詳細レベルで PDF をラスター イメージに変換すると、大きすぎるファイルが作成されます。

WebBrowser コントロールでは、ページをプログラムで変更またはズームすることはできません。Adobe ツールバーも削除できません。

私が使用したサードパーティのライブラリはすべて無料である必要があります (ビールの場合と同様)。

4

3 に答える 3

7

お使いのマシンに IE 用の PDF ビューアー プラグイン (Acrobat Reader など) があれば...

    <Grid>
            <WebBrowser x:Name="WebBrowser1"
                        Source="C:\Temp\Test.pdf"/>
    </Grid>

うまく動作します...

于 2012-02-10T11:15:09.417 に答える
1

残念ながら、私はまだコメントをするのに十分な評判を持っていないので、答えとして入れておきます. 最近、Flash で非常によく似た問題が発生し、WindowsFormsHost とOverlays/Adornersを使用することになりました。ちょうど私の2セント。

ポップアップ ウィンドウとしてオーバーレイを作成する 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>

簡単にするために、オーバーレイを 1 つの楕円に減らしました。Web ブラウザーは WindowsFormsHost でホストされます。これを配置して表示するコードは次のとおりです。

    public MainWindow()
    {
        InitializeComponent();
        puOverlay.VerticalOffset = -60;
        puOverlay.HorizontalOffset = (wbMain.ActualWidth / 2) - 20;
        puOverlay.IsOpen = true;
        ...
    }

非常に簡単ですが、まだ不明な点がある場合は遠慮なくお尋ねください。

于 2012-02-10T08:14:13.240 に答える