2012-02-09 20 views
6

Esistono controlli WPF nativi per la visualizzazione di PDF? Sto scrivendo un programma che caricherà un file PDF e quindi visualizzerà note aggiuntive su di esso.Visualizza un PDF in WPF senza utilizzare WindowsFormsHost

L'utilizzo di un WindowsFormsHost (http://hugeonion.com/2009/04/06/displaying-a-pdf-file-within-a-wpf-application/) non funziona perché un controllo WindowsFormsHost viene sempre visualizzato su cima a tutti gli altri controlli WPF in una finestra. Ciò non consentirà la visualizzazione delle mie annotazioni sul PDF.

Convertire il PDF in un'immagine raster con il livello di dettaglio dello zoom di cui ho bisogno creerebbe un file troppo grande.

Il controllo WebBrowser non consente di modificare o ingrandire le pagine a livello di codice. Inoltre non riesco a rimuovere le barre degli strumenti di Adobe.

Qualsiasi libreria di terze parti che ho utilizzato avrebbe dovuto essere gratuita (come nella birra).

risposta

1

Purtroppo non ho ancora abbastanza reputazioni per fare un commento, quindi lo metto come risposta. Ho avuto un problema molto simile con Flash di recente e ho finito per utilizzare WindowsFormsHost e Overlays/Adorners. Solo i miei 2cents.

Qui è XAML Creazione di un overlay come una finestra pop-up:

<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> 

Per semplicità ho ridotto il mio sovrapposizione ad un'ellisse. Il browser Web è ospitato in WindowsFormsHost. Ecco il codice collocazione e mostrarlo:

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

Abbastanza semplice, tuttavia, non esitate a chiedere se qualcosa è ancora chiaro.

+0

Ne esaminerò oggi, grazie. –

+0

Ti dispiacerebbe condividere il tuo esempio? Sto avendo un po 'di problemi nel far funzionare correttamente l'esempio nel tuo link. –

+0

Ho provato ad utilizzare un Adorner seguendo i passaggi di questa guida: http://marlongrech.wordpress.com/2008/02/28/wpf-overlays-or-better-adorner/ ma WindowsFormsHost era ancora disegnato sopra. Eventuali suggerimenti? –

6

A condizione che avete un po 'plug-in visualizzatore PDF (come Acrobat Reader) per IE sulla propria macchina ...

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

funziona bene ...

+0

Ho provato questo, ma non riesco a controllare il WebBrowser abbastanza per i miei scopi. Vedere l'aggiornamento alla mia domanda originale per maggiori dettagli. –

+0

@Eric K, cosa vuoi controllare? WebBrowser può essere controllato ... fornisce la sua interfaccia HTMLHost che può fare miracoli! –

+0

Ho bisogno di rimuovere tutte le barre degli strumenti visibili dal plug-in PDF ActiveX. Devo anche essere in grado di ingrandire il PDF. E infine, devo essere in grado di navigare verso pagine specifiche. So che il browser Web ha una navigazione di alcune pagine, ma è specifico per gli URL e la cronologia delle visualizzazioni. Non consente di specificare, ad esempio, la pagina 3 di un PDF specifico. –

0

non ho trovato nulla di buono Controlli WPF di terze parti gratuiti che funzionano bene. Telerik ha un visualizzatore di pdf, ma non fa tutti i tipi e non farà grandi documenti per me. Ho provato anche Syncfusion e anche quello era buggy. Ho finito per usare WindowsFormsHost con un altro visualizzatore di finestre di Windows di GD. Dicono che stanno facendo una versione WPF però.

Ora ci sono altri che devi pagare per ogni installazione del server che potrebbe essere buona, ma non riesco a lavorare con quella.

Problemi correlati