2013-08-21 63 views
12

Để làm rõ, công cụ tay là một chức năng cho người dùng nhấp vào pdf và kéo xung quanh, được sử dụng để thay thế thanh cuộn điều hướng.Làm thế nào để thêm một công cụ tay (lấy trang và kéo) chức năng trên trình xem PDF của Chrome và Firefox?

Vấn đề là, theo mặc định trình xem pdf của Chrome và Firefox không có chức năng đó và tôi muốn cho phép người dùng kéo trang.

Cách giải quyết là sử dụng thư viện JavaScript (Grab to Pan https://github.com/Rob--W/grab-to-pan.js trong trường hợp của tôi) với đối tượng nhúng (trình xem PDF). Khi tôi tối đa kích thước của pdf và người dùng kéo đối tượng nhúng.

Vấn đề tôi có cuộc gặp gỡ là

  1. Khi sử dụng Chrome/Firefox, nội dung PDF không phù hợp để trang nhưng tự động thay đổi kích thước theo mặc định ngay cả khi tôi đã thiết lập các tham số mở Adobe PDF, sử dụng iframe.

  2. Mã JavaScript có vẻ xung đột với trình xem PDF của Firefox, mã hoạt động trơn tru trên Chrome nhưng không hoạt động trên Firefox.

Đây là mã nguồn, bạn có thể tải xuống thư viện từ liên kết đề cập ở trên và xem. Đừng quên đặt '1.pdf' cùng với tệp nguồn.

<!DOCTYPE html> 
<head> 
<meta charset="utf-8"> 
<title>Grab-to-pan.js demo</title> 
<link rel="stylesheet" href="grab-to-pan.css" type="text/css"> 
<style> 
* { 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
} 
html, body { 
    width: 100%; 
    height: 100%; 
    margin: 0; 
    padding: 0; 
} 
.scrollable { 
    overflow: auto; 
    width: 100%; 
    height: 100%; 
    background-color: #EEE; 
} 
#zoomPage { 
    overflow:visible; 
    width: 100%; 
    height: 150%; 
} 
</style> 
</head> 
<body> 
<label><input type="checkbox" id="activate-g2p" checked> Activate Grab to Pan</label> 
<div class="scrollable" id="scrollable-container"> 
<object id = 'zoomPage' type='application/pdf' data= '1.pdf#zoom=page-fit'><p>The PDF can not display</p></object> 
</div> 
<script src="grab-to-pan.js"></script> 
<script> 
document.getElementById('activate-g2p').onchange = function() { 
    if (this.checked) g2p.activate(); 
    else g2p.deactivate(); 
}; 

var scrollableContainer = document.getElementById('scrollable-container'); 
var g2p = new GrabToPan({ 
    element: scrollableContainer 
}); 
g2p.activate(); 

</script> 
</body> 
</html> 
+0

Bạn có thể sử dụng các plugin kéo jquery khác để thay thế bản gốc. – user782104

+0

bạn có thể tạo một câu đố cho mô hình làm việc hiện tại không. – MarmiK

+0

bạn muốn nói rằng bạn muốn di chuyển đối tượng có chứa PDF hoặc một trang PDF? – MarmiK

Trả lời

5

Tôi không nghĩ bạn có thể. Pdf được tải như một đối tượng nhúng.
Giả sử bạn đang phát triển một ứng dụng web, bạn có thể sử dụng pdf.js để tải/xem tài liệu pdf bằng JavaScript của riêng bạn hoặc sử dụng trình xem của riêng nó. Bằng cách này, bạn sẽ không phải lo lắng về việc triển khai trình duyệt tải tài liệu pdf và bạn có thể chơi với người xem theo yêu cầu của bạn.

Hy vọng điều này sẽ hữu ích.

+0

Cảm ơn. Nhưng làm thế nào tôi có thể đặt pdf .js làm trình xem mặc định cho tất cả trình duyệt của vistiors? Cho đến nay tôi thử sử dụng PDF.js trên chrome chỉ hoạt động khi plugin mở rộng được cài đặt và nhấp vào liên kết pdf. Cảm ơn – user782104

+0

Như tôi đã nói, bạn không thể. PDF.js không phải là một ứng dụng, nó có sẵn như là một phần mở rộng/plugin cho firefox và chrome. Cộng với thư viện dành cho nhà phát triển. –

2

Nếu bạn muốn cho phép người dùng sử dụng bất kỳ trình xem PDF nào mà họ đã định cấu hình, bạn không thể thêm chức năng cho trình xem đó. Nếu bạn muốn kiểm soát hoạt động của người xem, bạn cần tự mình cung cấp. Đây là một hoặc nhiều tình huống. Cố gắng kết hợp cả hai sẽ không dẫn đến kết quả tốt. Google và Mozilla được tự do thay đổi người xem PDF mà không đưa ra bất kỳ suy nghĩ nào cho trang web của bạn.

Như đã đề cập ở trên, bạn có thể nhúng tệp PDF.js vào trang web của mình theo hướng dẫn tại https://github.com/mozilla/pdf.js/wiki/Setup-pdf.js-in-a-website. Tôi không biết liệu hỗ trợ PDF của người xem này có đủ tốt cho kịch bản của bạn hay không, nhưng bạn chắc chắn có thể thử nghiệm nó. Vì mã PDF.js được lưu trữ trên trang web của bạn và do đó dưới sự kiểm soát của bạn, bạn có thể chỉnh sửa nó khi bạn thấy phù hợp.