2013-07-08 1 views
1

현재 웹킷 gtk보기에서 html 파일을 실행 중입니다. 그들은 (내가 할 노력하고있어하지만 난 그것을 테스트하고 싶었다 정확히 무엇을하는) 내 컴퓨터에서 파일을 다운로드 할 수 있도록 할 생각Webkit GTK View에서 doc 및 open file을 다운로드하는 방법은 무엇입니까?

let new_settings = new WebKit.WebSettings(); 
    new_settings.enable_universal_access_from_file_uris = true; 
    this._web_view.set_settings(new_settings); 

: 나는 이러한 설정을 설정합니다. 이 작동하지 않았다 :/

책임 HTML은 다음과 같습니다 : 난 할 노력하고있어하면 사용자가 이미지를 클릭 리브레 오피스 내부에 자동으로 열립니다의 resume1.doc에있다

<a href="resume/resume1.doc"><img class="shadow" src="images/design/1.jpg" alt="img01"></a> 

. GTK/HTML로 그렇게하는 법을 너무 확신하지 못합니다.

고마워요! :)

답변

1

페이지가 서버에서 제공되는지 로컬로로드되는지는 분명하지 않습니다.

로컬 파일을 사용하여이 작업을 수행하지는 않았지만 서버가 제공하는 페이지의 경우 MIME 유형 결정을 모니터링하고 웹킷에게 처리 할 수없는 MIME 유형의 MIME 유형을 다운로드해야 함을 나타냅니다 (또는 MIME의 경우에도). 웹 페이지를 다운로드하려는 경우 처리 할 수있는 유형). 아래로 파일 이름을 제공하고 진행 상황을 모니터링합니다. 다운로드가 완료되면 Webkit에서 알려줍니다. 이 작업을 수행 할 수 있도록 신호는

  • 마임 타입 - 정책 결정 요청
  • 다운로드-요청
  • 통지 : 로컬 파일에 대한 상태

, 내가 돈 ' 위의 접근 방식이 효과가 있는지 알 수 없습니다. 그렇지 않으면, 당신이 페이지를 제어하고 있기 때문에 탐색보다는 파일을 열어야한다는 것을 알려주는 링크 속성을 가질 수 있습니다.

두 방법 중 하나에서 파일 경로를 얻은 후에는 xdg-open 명령을 사용하거나 해당 기능을 사용하여 파일을 처리 할 수있는 응용 프로그램에서 파일을 열 수 있습니다.

0

당신은 그 시작이 맞습니다. 마임 유형을 처리하고 Libre Office를 어떻게 열 것인지 결정해야합니다. 다음은 로컬 파일의 예입니다 (uri는 서버에서 로컬로 열려고하는 특정 문서의 경로입니다).

this._web_view.connect('mime-type-policy-decision-requested', 
     (function (webview, frame, request, mimetype, decision) { 
      if (mimetype === 'application/msword' || 
       mimetype === 'application/vnd.oasis.opendocument.spreadsheet') { 
       // Spawn a libreoffice process with this uri. Necessary because 
       // we want to open the files as templates - the `-n` option 
       // requires the user to save-as. 
       GLib.spawn_async(null, /* cwd */ 
           ['libreoffice', '-n', request.get_uri()], 
           null, /* inherit environment */ 
           GLib.SpawnFlags.DO_NOT_REAP_CHILD | GLib.SpawnFlags.SEARCH_PATH, 
           null /* setup function */); 
       decision.ignore(); 
       return true; 

      } else if (mimetype === 'application/pdf') { 
       // if PDF, use the build in viewer (usually evince) 
       Gtk.show_uri(null, request.get_uri(), 0); 
       decision.ignore(); 
       return true; 
      } 
      // default handler 
      return false; 
    }).bind(this)); 
관련 문제