2013-03-24 4 views
3

Windows Phone 7 용 앱을 개발 중이며 Phonegap 템플릿을 사용 중입니다. 모든 것이 완벽 해 보이지만 지금은 브라우저에서 PDF 파일을 열려고합니다. 다음을 시도했지만 PDF의 URL이 2048 자 제한 (데이터 URL)을 초과하기 때문에 작동하지 않습니다. 이 코드는 deviceReady 이벤트가 발생한 후 실행됩니다. Windows Phone에서 PDF 파일 열기

var ref = window.open('http://www.google.com', '_blank', 'location=no'); 
ref.addEventListener('loadstart', function() { alert(event.url); }); 

지금, 나는 스토리지에 PDF 파일을 저장하기 위해 노력하고있어 다음 나는 그것이 브라우저에서 열이려고하지만, 브라우저는 아무것도 표시되지 않습니다. cordovalib에서 InAppBrowser.cs 코드를 편집하고 browser.Navigate (loc)를 호출하기 전에 다음 행을 추가했습니다. 로그 :

private void ShowInAppBrowser(string url) 
{ 
    IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication(); 
    FileStream stream = store.OpenFile("test.pdf", FileMode.Create); 
    BinaryWriter writer = new BinaryWriter(stream); 
    var myvar = Base64Decode("the big data url"); 
    writer.Write(myvar); 
    writer.Close(); 

    if (store.FileExists("test.pdf")) // Check if file exists 
    { 
     Uri loc = new Uri("test.pdf", UriKind.Relative); 
     ... 
    } 
} 

이 코드는 다음과 같은 오류 반환 "오류 콜백에서 오류 : InAppBrowser1921408518 = 형식 오류 : 재산 'URL'의 값을 가져올 수 없습니다 : 개체가 null이거나 정의되지 않은"

I ComponentOne을 사용하고 싶지는 않습니다.

도움이 될 것입니다.

답변

3

PDF 파일의 기본 판독기에서 격리 된 저장소에서 PDF 파일을 열 수 없습니다. 파일이 온라인 상태 인 경우. URI가 있기 때문에 WebBrowserTask를 사용하면 Adobe Reader에서 파일을 다운로드하여 열 수 있으므로 WebBrowserTask를 사용하여 열 수 있습니다.

는 윈도우 폰 8에 당신은 실제로 확장에 대한 기본 파일 판독기에 자신의 파일을 열 수 있습니다,하지만 난 당신이 폰갭 및 Windows 전화 7

+0

많은 감사 Toni! 당신의 반응은 제게 많은 도움이되었습니다. –

+0

그러면 WP8에서 PDF 또는 워드 문서를 열 수 없다는 뜻입니까? 나도 같은 문제가있어, 나는 localStorage에서 pdf 파일을 다운로드했다. 그리고 다운로드하자마자 나는 그것을 사용자에게 보여주고 싶다. – Debhere

+0

@Debhere 자세한 내용은 http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206987(v=vs.105).aspx를 참조하십시오. –

1

토니가 올바른지 대상으로하기 때문에 그 당신을 도울 방법을 모르겠습니다. 당신은 가서 자신의 뷰어를 만들려고 시도 할 수 있습니다 (C1 사용과 동일한 것이지만 더 많은 시간이 소요됨). 나는 WP7 용 iTextSharp 및 PDFSharp 포트에서 작업했지만 어느 쪽도 PDF 뷰어가 아닙니다. PDF를 작성하고 파싱 할 때 유용합니다 (그러나 더 많은 작업이 필요합니다). 이것은 내 개인적인 탐구하고있다,하지만 솔직히 내가 입수 한 가장은 PDF에서 일부 이미지를 추출 할 수있다 (텍스트의 어느 것도)

+0

많은 감사 Jay! 당신의 반응은 제게 많은 도움이되었습니다. –

0

이 올바르게 작동이

var installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation; 
var assets = await installedLocation.GetFolderAsync("Assets"); 
var pdf = await assets.GetFileAsync("metro.pdf"); 
Windows.System.Launcher.LaunchFileAsync(pdf); 

을 시도하지 내 기기에서

관련 문제