2012-02-09 104 views
6

¿Hay algún control WPF nativo para mostrar archivos PDF? Estoy escribiendo un programa que cargará un archivo PDF y luego mostrará anotaciones adicionales en la parte superior.Ver un PDF en WPF sin utilizar WindowsFormsHost

El uso de WindowsFormsHost (http://hugeonion.com/2009/04/06/displaying-a-pdf-file-within-a-wpf-application/) no funcionará porque siempre se muestra un control de WindowsFormsHost en la parte superior de todos los demás controles de WPF en una ventana. Esto no permitirá que mis notaciones se vean en el PDF.

Convertir el PDF en una imagen de trama con el nivel de detalle del zoom que necesito crearía un archivo que es demasiado grande.

El control WebBrowser no permite que las páginas se cambien o se amplíen mediante programación. Tampoco puedo eliminar las barras de herramientas de Adobe.

Todas las bibliotecas de terceros que utilice deberían ser gratuitas (como en la cerveza).

Respuesta

1

Lamentablemente, aún no tengo la suficiente reputación para hacer un comentario, así que lo pondré como respuesta. Recientemente he tenido un problema muy similar con Flash y terminé usando WindowsFormsHost y Overlays/Adorners. Solo mis 2cents.

Aquí se XAML crear una superposición como una ventana emergente:

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

Para el motivo de la simplicidad reduje mi superpuesta a una elipse. El navegador web está alojado en WindowsFormsHost. Aquí es la colocación de código y mostrarlo:

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

Bastante simple, sin embargo, no dude en preguntar si algo no está aún clara.

+0

Voy a ver esto hoy, gracias. –

+0

¿Te importaría compartir tu ejemplo? Tengo problemas para que la muestra en su enlace funcione correctamente. –

+0

Intenté usar un Adorner siguiendo los pasos de esta guía: http://marlongrech.wordpress.com/2008/02/28/wpf-overlays-or-better-adorner/ pero WindowsFormsHost todavía se dibujó en la parte superior. ¿Alguna sugerencia? –

6

Siempre que tenga algún plug-in visor de PDF (como Acrobat Reader) para IE en su máquina ...

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

funciona bien ...

+0

Intenté esto, pero no puedo controlar el WebBrowser lo suficiente para mis propósitos. Ver la actualización a mi pregunta original para más detalles. –

+0

@Eric K, ¿Qué es lo que quieres controlar? WebBrowser se puede controlar ... ¡proporciona su interfaz HTMLHost que puede hacer maravillas! –

+0

Necesito eliminar todas las barras de herramientas visibles del complemento PDF ActiveX. También necesito poder ampliar el PDF. Y, por último, necesito poder navegar a páginas específicas. Sé que WebBrowser tiene un poco de navegación de página, pero es específico para las URL y su historial de visualización. No le permite especificar, por ejemplo, la página 3 de un PDF específico. –

0

no he encontrado ninguna buena controles WPF de terceros libres de derechos que funcionan bien. Telerik tiene un visor de PDF, pero no hace todos los tipos y no me va a hacer documentos grandes. Probé Syncfusion también y eso también fue un error. Terminé usando WindowsFormsHost con otro visor de formularios de Windows de una imagen GD de un tercero. Sin embargo, dicen que están haciendo una versión de WPF.

Ahora hay otros que tiene que pagar por cada instalación de servidor que podría ser bueno, pero no puedo trabajar con eso.

Cuestiones relacionadas