2012-02-09 12 views
6

Czy są dostępne rodzime formanty WPF do wyświetlania plików PDF? Piszę program, który załaduje plik PDF, a następnie wyświetli na nim dodatkowe oznaczenia.Wyświetl plik PDF w WPF bez użycia WindowsFormsHost

Korzystanie z WindowsFormsHost (http://hugeonion.com/2009/04/06/displaying-a-pdf-file-within-a-wpf-application/) nie będzie działać, ponieważ kontrola WindowsFormsHost zawsze wyświetlany na góra wszystkich innych elementów sterujących WPF w oknie. Dzięki temu moje notacje nie będą widoczne w pliku PDF.

Konwertowanie pliku PDF na obraz rastrowy o wymaganym poziomie powiększenia spowoduje utworzenie zbyt dużego pliku.

Formant WebBrowser nie pozwala na programową zmianę lub powiększanie stron. Nie mogę też usunąć pasków narzędzi Adobe.

Wszelkie używane przeze mnie biblioteki będą musiały być darmowe (jak w piwie).

Odpowiedz

1

Niestety nie mam wystarczająco dużo reputacji, aby skomentować, więc przedstawię to jako odpowiedź. Miałem bardzo podobny problem z Flasha niedawno i skończyło się na używaniu WindowsFormsHost i Overlays/Adorners. Tylko moje 2 centy.

Tutaj jest XAML tworząc nakładkę jako okienko:

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

Dla uproszczenia I zmniejszonym mój nakładkę do jednego elipsy. Przeglądarka internetowa jest hostowana w WindowsFormsHost. Oto wprowadzanie kodu i pokazano go:

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

Całkiem proste, więc nie wahaj się zapytać, czy coś jest nadal niejasne.

+0

Zajmę się tym dzisiaj, dzięki. –

+0

Czy mógłbybyś podzielić się swoim przykładem? Mam problem z pobraniem próbki z linku do poprawnego działania. –

+0

Próbowałem użyć Adornera, wykonując kroki opisane w tym przewodniku: http://marlongrech.wordpress.com/2008/02/28/wpf-overlays-or-better-adorner/, ale WindowsFormsHost był nadal wyświetlany na wierzchu. Jakieś sugestie? –

6

Pod warunkiem, że masz jakieś wtyczki przeglądarka plików PDF (takich jak Acrobat Reader) dla IE na komputerze ...

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

działa dobrze ...

+0

Próbowałem tego, ale nie mogę kontrolować WebBrowser wystarczająco do moich celów. Zobacz aktualizację mojego oryginalnego pytania, aby uzyskać więcej szczegółów. –

+0

@Eric K, Czego chcesz kontrolować? WebBrowser może być kontrolowany ... zapewnia interfejs HTMLHost, który potrafi zdziałać cuda! –

+0

Potrzebuję usunąć wszystkie widoczne paski narzędzi z wtyczki ActiveX PDF. Muszę też móc powiększyć plik PDF. I na koniec muszę mieć możliwość nawigowania do konkretnych stron. Wiem, że WebBrowser ma trochę nawigacji po stronie, ale jest specyficzny dla adresów URL i historii oglądania. Nie pozwala określić na przykład strony 3 określonego pliku PDF. –

0

nie znalazłem nic dobrego wolne od opłat kontrolery WPF trzeciej strony, które działają dobrze. Telerik ma przeglądarkę pdf, ale nie wszystkie typy i nie zrobi dla mnie dużych dokumentów. Próbowałem również Syncfusion i to było również błędne. Skończyło się na używaniu WindowsFormsHost z inną przeglądarką formularzy Windows GD innego producenta. Mówią, że robią wersję WPF.

Teraz są inne, które trzeba zapłacić za każdą instalację serwera, która może być dobra, po prostu nie mogę z tym pracować.