1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-04 00:20:07 +00:00

view pdf in flash for ie

This commit is contained in:
lins05
2012-09-21 17:16:07 +08:00
parent b080046b5c
commit 797b72e756
3 changed files with 44 additions and 13 deletions

View File

@@ -2,7 +2,11 @@
<script type="text/javascript" src="{{MEDIA_URL}}codemirror/codemirror.js"></script>
{% endif %}
{% if filetype == 'PDF' %}
<script type="text/javascript" src="{{MEDIA_URL}}js/pdf.js"></script>
{% if pdf_use_flash %}
<script type="text/javascript" src="{{MEDIA_URL}}flexpaper/js/flexpaper_flash.js"></script>
{% else %}
<script type="text/javascript" src="{{MEDIA_URL}}js/pdf.js"></script>
{% endif %}
{% endif %}
{% if filetype == 'Document' %}
<script type="text/javascript" src="{{MEDIA_URL}}flexpaper/js/flexpaper_flash.js"></script>

View File

@@ -36,10 +36,8 @@
}
{% endif %}
{% if filetype == 'PDF' %}
if (!$.browser.mozilla && !$.browser.safari) {
$('#file-view').html('<p>在线查看请使用firefox 或 chrome。</p>').addClass('file-view-tip');
} else {
{% if filetype == 'PDF' and not pdf_use_flash %}
// Use pdf.js to view pdf in firefox/chrome
PDFJS.workerSrc = '{{MEDIA_URL}}js/pdf.js';
$('#file-view').html('<div id="pdf"><img src="{{ MEDIA_URL }}pdf_full_view/images/loading-icon.gif" alt="加载中..." id="pdf-loading" style="margin-top:20px;" /><div id="pdf-op-bar" class="vh"><button id="prev">上一页</button><button id="next">下一页</button><span id="pdf-page"><label for="page-number"></label> <input type="number" id="page-number" value="1" min="1"></input> / <span id="page-nums"></span></span><button id="full-screen">全屏</button></div><canvas data="{{ raw_path }}" id="pdf-view" class="vh"></canvas></div>').css({'text-align':'center'});
$('#pdf-op-bar').append($('#file-op').html());
@@ -89,7 +87,6 @@ if (!$.browser.mozilla && !$.browser.safari) {
window.open('{{ SITE_ROOT }}pdf_full_view/?repo_id={{ repo.id }}&obj_id={{obj_id}}&file_name=' + e('{{ file_name }}'));
});
});
}
{% endif %}
{% if filetype == 'Markdown' %}
@@ -108,7 +105,7 @@ if (!$.browser.mozilla && !$.browser.safari) {
$('#file-view').html('<p>该类型文件无法在线查看。</p>').addClass('file-view-tip');
{% endif %}
{% if filetype == 'Document' %}
{% if filetype == 'Document' or filetype == 'PDF' and pdf_use_flash %}
{% if err %}
$('#file-view').html('<p class="error">{{ err }}</p>').addClass('file-view-tip');
{% else %}
@@ -144,7 +141,7 @@ if (!$.browser.mozilla && !$.browser.safari) {
$('#file-view').children('object').prepend('<param name="wmode" value="opaque">'); //allow popup to show on top of the flash
}
{% if document_swf_exists %}
{% if swf_exists %}
load_flexpaper();
{% else %}
function check_status () {
@@ -176,7 +173,7 @@ if (!$.browser.mozilla && !$.browser.safari) {
},
error: function(xhr, ajaxOptions, thrownError) {
var jsonVal = jQuery.parseJSON(xhr.responseText);
$('#file-view').html('<p class="error">' + jsonVal[0]['error'] + '</p>');
$('#file-view').html('<p class="error">' + jsonVal['error'] + '</p>');
}
});
}

View File

@@ -1025,11 +1025,16 @@ def repo_view_file(request, repo_id):
# get file content
err = ''
file_content = ''
document_swf_exists = False
swf_exists = False
pdf_use_flash = False
if filetype == 'Text' or filetype == 'Markdown':
err, file_content, encoding, newline_mode = repo_file_get(raw_path)
elif filetype == 'Document':
err, document_swf_exists = document_prepare(raw_path, obj_id, fileext)
err, swf_exists = flash_prepare(raw_path, obj_id, fileext)
elif filetype == 'PDF':
pdf_use_flash = use_flash_for_pdf(request)
if pdf_use_flash:
err, swf_exists = flash_prepare(raw_path, obj_id, 'pdf')
# file share link
l = FileShare.objects.filter(repo_id=repo_id).filter(\
@@ -1093,7 +1098,8 @@ def repo_view_file(request, repo_id):
'groups': groups,
'comments': comments,
'comment_open':comment_open,
'document_swf_exists': document_swf_exists,
'swf_exists': swf_exists,
'pdf_use_flash': pdf_use_flash,
'DOCUMENT_CONVERTOR_ROOT': DOCUMENT_CONVERTOR_ROOT,
'contributors': contributors,
'latest_contributor': latest_contributor,
@@ -2192,8 +2198,16 @@ def view_shared_file(request, token):
# get file content
err = ''
file_content = ''
swf_exists = False
pdf_use_flash = False
if filetype == 'Text' or filetype == 'Markdown':
err, file_content, encoding, newline_mode = repo_file_get(raw_path)
elif filetype == 'Document':
err, swf_exists = flash_prepare(raw_path, obj_id, fileext)
elif filetype == 'PDF':
pdf_use_flash = use_flash_for_pdf(request)
if pdf_use_flash:
err, swf_exists = flash_prepare(raw_path, obj_id, 'pdf')
# Increase file shared link view_cnt, this operation should be atomic
fileshare = FileShare.objects.get(token=token)
@@ -2213,6 +2227,9 @@ def view_shared_file(request, token):
'username': username,
'err': err,
'file_content': file_content,
'swf_exists': swf_exists,
'pdf_use_flash': pdf_use_flash,
'DOCUMENT_CONVERTOR_ROOT': DOCUMENT_CONVERTOR_ROOT,
}, context_instance=RequestContext(request))
@login_required
@@ -2284,7 +2301,7 @@ def send_shared_link(request):
return HttpResponseBadRequest(json.dumps(form.errors),
content_type=content_type)
def document_prepare(raw_path, obj_id, doctype):
def flash_prepare(raw_path, obj_id, doctype):
curl = DOCUMENT_CONVERTOR_ROOT + 'convert'
data = {'doctype': doctype,
'file_id': obj_id,
@@ -2300,3 +2317,16 @@ def document_prepare(raw_path, obj_id, doctype):
return ret_dict['error'], False
else:
return None, ret_dict['exists']
def use_flash_for_pdf(request):
"""Decide whether to use flash to view pdf file, according to the current
browser type and version.
"""
ua = request.META.get('HTTP_USER_AGENT', '')
if 'MSIE' in ua:
return True
else:
return False