2012-02-09 3 views
6

PDF를 표시하기위한 기본 WPF 컨트롤이 있습니까? PDF 파일을로드 한 다음 그 위에 추가 표기법을 표시하는 프로그램을 작성 중입니다.WindowsFormsHost를 사용하지 않고 WPF로 PDF보기

WindowsFormsHost 컨트롤이 항상 표시되기 때문에 WindowsFormsHost (http://hugeonion.com/2009/04/06/displaying-pdf-file-within-a-wpf-application/)를 사용하면 작동하지 않습니다. 창에서 다른 모든 WPF 컨트롤의 맨 위. 이렇게하면 내 표기법이 PDF에 표시되지 않습니다.

필요한 확대/축소 세부 수준의 래스터 이미지로 PDF를 변환하면 너무 큰 파일을 만들 수 있습니다.

WebBrowser 컨트롤은 프로그래밍 방식으로 페이지를 변경하거나 확대하는 것을 허용하지 않습니다. Adobe 툴바도 제거 할 수 없습니다.

내가 사용한 타사 라이브러리는 무료 여야합니다 (맥주와 같이).

답변

1

불행히도 저는 아직 코멘트를하기에 충분한 평판이 없으므로 답으로 답변 해 드리겠습니다. 최근에 Flash와 비슷한 문제가 있었으며 WindowsFormsHost 및 Overlays/Adorners을 사용하여 끝났습니다. 그냥 2 센트. 나는 하나 개의 타원에 내 오버레이를 감소 단순 위해서

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

: 여기

는 XAML은 팝업 창으로 오버레이를 만드는 것입니다. 웹 브라우저는 WindowsFormsHost에서 호스팅됩니다.

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

은 매우 간단하지만 여전히 뭔가 불분명 경우 주저하지 않습니다 다음은 코드를 배치하고 그것을 보여주는 것입니다. 당신이 당신의 컴퓨터에 IE에 대한 몇 가지 PDF 뷰어 플러그인 (예 : 아크로뱃 리더)를 가지고 제공

+0

오늘 감사 드리겠습니다. 감사합니다. –

+0

예를 들려 주시겠습니까? 귀하의 링크 샘플을 올바르게 작동시키는 데 약간의 문제가 있습니다. –

+0

이 가이드의 단계에 따라 Adorner를 사용해 보았습니다. http://marlongrech.wordpress.com/2008/02/28/wpf-overlays-or-better-adorner/ WindowsFormsHost가 여전히 위에 그려져 있습니다. 어떤 제안? –

6

... 잘

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

작품 ...

+0

이 시도했지만 내 목적을 위해 WebBrowser를 제어 할 수 없습니다. 자세한 내용은 원래 질문에 대한 업데이트를 참조하십시오. –

+0

@Eric K, 당신이 통제하고자하는 것은 무엇입니까? WebBrowser를 제어 할 수 있습니다 ... 그것은 경이로울 수있는 HTMLHost 인터페이스를 제공합니다! –

+0

PDF ActiveX 플러그인에서 보이는 모든 도구 모음을 제거해야합니다. 또한 PDF를 확대 할 수 있어야합니다. 마지막으로 특정 페이지로 이동할 수 있어야합니다. WebBrowser에는 페이지 탐색 기능이 있지만 URL과보기 기록에만 적용됩니다. 예를 들어 특정 PDF의 3 페이지를 지정할 수는 없습니다. –

0

나는 좋은 발견하지 않았습니다 로열티없는 제 3 자 WPF 컨트롤이 잘 작동합니다. Telerik은 pdf 뷰어를 가지고 있지만 모든 유형을 다루지는 않으며 큰 문서를 잘 처리하지 못합니다. 나는 Syncfusion도 시도했는데 버그도 있었다. WindowsFormsHost를 사용하여 다른 타사 GD 그림의 Windows 양식 뷰어를 사용하게되었습니다. WPF 버전을 만들고 있다고합니다.

이제는 모든 서버 설치에 대해 비용을 지불해야한다는 점도 있지만 그럴 수는 없습니다.