Adicionar um visualizador de PDF a uma aplicação WPF
sou novo no WPF, e estou a tentar adicionar um visualizador de PDF à minha aplicação WPF, mas não consigo perceber como fazê-lo... Eu tentei seguir alguns tutoriais / exemplos que eu encontrei on-line, mas eles não parecem trabalhar para mim por várias razões...
por exemplo, eu tentei seguir o tutorial em: https://documentation.devexpress.com/#WPF/CustomDocument114328 para adicionar um visualizador de PDF no momento do Design-diz a
No entanto, parece que Não tenho um tab na caixa de ferramentas... há uma páginaarraste o PdfViewerControl do DX.15. 2: Página de ferramentas de & Análise de dados e largue-a na janela principal
Data
, mas que só tem itens como ponteiro, gráfico, ListView, etc. Há alguma coisa que eu precise fazer para adicionar/ activar a barra de ferramentas Data & Analytics
no Visual Studio?
tentei seguir o tutorial em: https://documentation.devexpress.com/#WPF/CustomDocument114329 para adicionar um visualizador de PDF através do code-it diz a
Mas quando vou aabra o Solution Explorer, as referências do botão direito e escolha Adicionar Referência... para adicionar a biblioteca de Visualizador de PDF.
Então, localiza a DevExpress.Dado.v15. 2, DevExpress.Documento.v15. 2.Núcleo, DevExpress.Xpf.DocumentViewer.v15. 2.Core, and DevExpress.Xpf.PdfViewer.montagens v15. 2 e activar as caixas de controlo.
Add Reference
, não consigo encontrar as assembleias que menciona em qualquer lugar, e se eu 'procurar' por elas, nenhum item é encontrado...
Estou a sentir falta de um include
, ou preciso de importar algumas bibliotecas de algum lugar ou algo assim para as usar?
Outro que tentei foi: http://www.codeproject.com/Articles/380019/Using-Adobe-Reader-in-a-WPF-app que diz:
Mas parece que não encontro o que ele diz... Pode alguém indicar-me um tutorial mais claro, ou explicar como eu adicionaria um visualizador de PDF ao meu WPF? aplicação? Estou a usar o Visual Studio 2015.Uma vez que este controlo é adicionado ao projecto, o desenhador de formulários do Windows deve ser aberto com uma área de desenho em branco. Terá de abrir a caixa de ferramentas (CTRL + W, X). Como um primeiro passo é uma boa idéia adicionar uma nova página para os controlos personalizados - esta é uma opção do menu de contexto da caixa de ferramentas. Com esta nova página expandida, seleccione "escolher os itens" no menu de contexto. Quando aparecer a janela para escolher os itens da caixa de ferramentas, seleccione a página de componentes COM e seleccione o leitor de Adobe PDF (isto irá adicionar o AcroPDF.DLL para a caixa de ferramentas).
Editar
tentei mostrar o ficheiro PDF dentro da minha janela de Aplicação, Fazendo o seguinte:
adicionar um <Grid>
para mostrar o PDF à interface gráfica no XAML:
<StackPanel>
<Grid x:Name="browserHost" Height="300" Width="525" Margin="0,0,0,0"></Grid>
</StackPanel>
adicionando um WebBrowser
ao <Grid>
no C#, e apontando para a localização do PDF eu quero mostrar:
System.Windows.Controls.WebBrowser browser = new System.Windows.Controls.WebBrowser();
public MainWindow()
{
InitializeComponent();
try
{
//browser.Navigate("C:\\...\\sample.pdf");
browserHost.Children.Add(browser);
//browser.Visible = true;
browser.Navigate("C:\\...\\sample.pdf");
browserHost.Opacity = 200;
}catch(Exception e)
{
Console.WriteLine("browser is visible/ not: " + browserHost.Visibility);
}
}
private void Window_Loaded_1(object sender, RoutedEventArgs e)
{
/*Create the interop host control */
//System.Windows.Forms.Integration.WindowsFormsHost host = new System.Windows.Forms.Integration.WindowFormsHost();
/*Create the MaskedTextBox control */
//browser.Navigate("C:\\...\\sample.pdf");
//host.Child = browser;
browserHost.Children.Add(browser);
}
mas atualmente, quando eu executar a minha aplicação, assim que ela carrega, o browser
que eu adicionei a ele exibe uma página que diz:
A navegação para a página web foi cancelada.
e aparece uma janela a perguntar - me se quero abrir ou gravar o ficheiro (sample.pdf
- o que estou a tentar mostrar no navegador)...
browser
mostre o arquivo em vez de tentar baixá-lo? Ou devo usar algo que não seja um System.Windows.Controls.WebBrowser
aqui?
4 answers
Como já foi sugerido por @NawedNabiZada, uma forma tentada e simples é usar o InternetExplorer incorporado para mostrar Adobe PDF Reader
O controlo ActiveX. Então ele assume que você está rodando no Windows e tem Adobe PDF Reader
instalado.
Depois cria um controlo do utilizador, uma janela, etc. que contém o seguinte controlo:
<WebBrowser x:Name="pdfWebViewer"></WebBrowser>
No construtor navegue até à página em branco:
dfWebViewer.Navigate(new Uri("about:blank"));
Para carregar um documento PDF para esse controlo, use este código simples:
pdfWebViewer.Navigate(fullPathToPDF);
Esta abordagem é usada por muitos Windows software não só aplicativos WPF, incluindo o cliente SAP, mas tem um problema oculto, Veja esta pergunta .
O leitor de Adobe PDF Addon no Internet Explorer deve estar habilitado para que isso funcione. Existem vários problemas com o Acrobat Reader XI, melhor para usar a versão DC. Para activar o Adobe PDF go to IE settings, add-ons e encontrar Adobe PDF Reader e activá-lo (AR XI e acima).
Para mim, esta foi a forma preferida em comparação com o artigo do projeto de código que você ligou.Também é possÃvel pelo navegador Webcefsharp .
Ele inclui módulos embutidos para PDF, então você não precisa Acrobat-Reader,ou qualquer outro ActiveX.
Para qualquer um tropeçando sobre isso, e na necessidade de um pouco mais de controle do que com o WebBrowser: é muito fácil fazer o seu próprio visualizador de PDF com APIs do Windows 10. Eu escrevi um blog sobre como fazê-lo. Você pode facilmente adicionar outras caracterÃsticas a ele, como desenho em cima (assinatura) dele e assim por diante.
O código está disponÃvel em github .
No entanto, para os recursos super avançados, você provavelmente vai precisar de uma dessas bibliotecas caras.Para o visualizador de pdf WPF pode usar http://pdfprinting.net/