2014-02-05 4 views
3

여러 다른 파일 형식 (jpg, wmv, pdf 등)을 읽고 표시 할 수있는 Windows 저장소 응용 프로그램 (이전에는 Metro 응용 프로그램이라고 함)을 만들었습니다. 각 파일 유형은 적절한 XAML 컨트롤을 사용하여 표시됩니다 (예 : jpg는 Image, wmv는 MediaElement 사용). 내가 만난 문제는 PDF를 표시하는 것입니다. 그것을 표시 할 이미지로 변환해야 할 것 같습니다. Magick.NET을 사용하여 조사했지만 .NETCore보다는 .NETFramework를 대상으로합니다. 내가 찾은 다른 프레임 워크에는 라이센스가 필요합니다. 내 응용 프로그램 내에 PDF를 표시하는 솔루션이 있습니까?Windows 저장소 앱 - PDF 표시

답변

3

네이트 다이아몬드 (Nate Diamond)가 제공 한 비디오의 첫 10 분을 본 후에 PDF 렌더링은 간단한 작업입니다. PdfDocumentPdfPage 클래스는 새로운 버전이므로 Windows 8.1 용 솔루션입니다. 아래에 StorageFile (.pdf 파일)을 이미지로 렌더링하고 세로로 스크롤하는 스택 패널 (imagePanel)에 넣습니다.

private async void renderPdf(StorageFile file) 
    { 
     imagePanel.Children.Clear(); 

     PdfDocument pdf = await PdfDocument.LoadFromFileAsync(file); 

     for (uint pageNum = 0; pageNum < pdf.PageCount; pageNum++) 
     { 
      PdfPage page = pdf.GetPage(pageNum); 

      InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream(); 
      await page.RenderToStreamAsync(stream); 

      BitmapImage source = new BitmapImage(); 
      source.SetSource(stream); 

      Image pdfPage = new Image(); 

      pdfPage.HorizontalAlignment = HorizontalAlignment.Center; 
      pdfPage.VerticalAlignment = VerticalAlignment.Center; 
      pdfPage.Height = page.Size.Height; 
      pdfPage.Width = page.Size.Width; 
      pdfPage.Margin = new Thickness(0, 0, 0, 5); 
      pdfPage.Source = source; 

      imagePanel.Children.Add(pdfPage); 

     } 
    } 

비동기 방법은 기다리는 것이 바람직하지 않은 경우에도 작업으로 실행될 수 있습니다.

PdfDocument pdf = PdfDocument.LoadFromFileAsync(file).AsTask().Result; 
+0

기본적으로 PDF의 내용으로 이미지를 만든 다음 표시합니다. 이미지가 포함되지 않은 방법이 있는지 궁금합니다. –

3

체크 아웃 this video 빌드 2013에서 렌더링 Windows 응용 프로그램의 PDF 내용을 저장하십시오. 그것을 할 방법이 있다면, 이것이 그 것이다.

관련 문제