Tôi muốn hiển thị các phần tử HTML riêng lẻ thành PNG bằng cách sử dụng Phantom.JS. Có ai biết nếu điều này là có thể? Ngoài ra, tôi sẽ sử dụng Phantom.js như thế nào để hiển thị một trang mà người dùng đã xem?Làm cách nào để hiển thị một phần của trang bằng PhantomJS?
Trả lời
Để chỉ hiển thị một phần của trang bạn cần đặt thuộc tính clipRect cho trang và sau đó hiển thị nó.
var clipRect = document.querySelector(selector).getBoundingClientRect();
page.clipRect = {
top: clipRect.top,
left: clipRect.left,
width: clipRect.width,
height: clipRect.height
};
page.render('capture.png');
Tôi không hiểu phần thứ hai của câu hỏi của bạn. Phantom.js không có nghĩa là không có hiển thị thực tế mà người dùng đang xem.
Tôi có nhu cầu tương tự, tôi đã cố gắng này và nó đã làm việc tốt cho tôi:
đừng quên các http://www
trong URL
var page = require('webpage').create();
page.open('YourPageURL', function (status) {
if (status !== 'success') {
console.log('Network Problem');
} else {
var p = page.evaluate(function() {
return document.getElementById('yourDivID').innerHTML
});
console.log(p);
}
phantom.exit();
});
Đã bỏ phiếu vì không thực sự lưu ảnh chụp màn hình của "các phần tử HTML riêng lẻ vào PNG" như đã nêu trong câu hỏi. Nó chỉ in HTML bên trong của một số phần tử để điều khiển. –
Bạn có thể sử dụng CasperJS, một dự án khác dựa trên PhantomJS.
casper.start('http://www.weather.com/', function() {
this.captureSelector('weather.png', '#wx-main');
});
casper.run();
Ví dụ làm việc.
var page = require('webpage').create();
page.open('http://google.com', function() {
// being the actual size of the headless browser
page.viewportSize = { width: 1440, height: 900 };
var clipRect = page.evaluate(function(){
return document.querySelector('#hplogo').getBoundingClientRect();
});
page.clipRect = {
top: clipRect.top,
left: clipRect.left,
width: clipRect.width,
height: clipRect.height
};
page.render('google.png');
phantom.exit();
});
Giải pháp dưới đây phù hợp với tôi.
var clipRect = document.querySelector(selector).getBoundingClientRect();
page.clipRect = {
top: clipRect.top,
left: clipRect.left,
width: clipRect.width,
height: clipRect.height
};
page.render('capture.png');
Nhưng tôi nhận thấy điều này chỉ hoạt động nếu chúng tôi hiển thị hình ảnh không phải là pdf. Để wokaround này cho pdf, hãy thử này
page.evaluate(function (element){
$(element).appendTo('body');
$('body > :not(' + element + ')').hide();
}, element);
});
window.setTimeout(function(){
page.render("page.pdf");
},1000);
liên kết này có thể giúp: How to hide all elements except one using jquery?
- 1. Lưu và hiển thị trang web bằng PhantomJS và node.js
- 2. Làm cách nào để in một phần của trang HTML được hiển thị trong JavaScript?
- 3. Làm cách nào để hiển thị trang PDF theo trang bằng cách vuốt ngang trong iphone?
- 4. Bạn làm cách nào để hiển thị một phần của SVG trong Canvas?
- 5. Làm cách nào để kết hợp hai trang PDF hiển thị trên cùng một trang?
- 6. Laravel: cách chỉ hiển thị một phần của mẫu?
- 7. Cách hiển thị biểu mẫu "Chỉnh sửa" một phần trong trang "Hiển thị" của mô hình khác trong Rails
- 8. Làm cách nào để hiển thị Phần trong Chế độ xem một phần trong MVC3?
- 9. Làm thế nào để trích xuất một số phần của một trang web bằng Python
- 10. Làm cách nào để hiển thị trang tính theo tên bằng VSTO 2010 cho Excel
- 11. Python + Selenium + PhantomJS hiển thị lên PDF
- 12. Làm cách nào để hiển thị 2 phần cạnh nhau?
- 13. Làm cách nào để chỉ hiển thị một phần của IList <>?
- 14. Làm cách nào để hiển thị một phần của hình ảnh?
- 15. Làm cách nào để chỉ chọn các phần tử hiển thị bằng XPath?
- 16. Làm cách nào để hiển thị video avi bằng gstreamer?
- 17. Chỉ hiển thị một phần của div
- 18. Làm cách nào để hiển thị ProgressDialog bằng Fragment
- 19. Làm cách nào để trả lại mẫu được hiển thị bằng một phần của phản hồi JSON?
- 20. Hiển thị các biến từ lệnh PhantomJS tới injectJS
- 21. carouFredSel: Hiển thị một phần?
- 22. Hiển thị một phần Chế độ xem bằng ajax
- 23. Làm cách nào để hiển thị * các phần * của tệp svg?
- 24. Làm cách nào để hiển thị cảnh báo sau khi tải lại trang bằng JavaScript?
- 25. Làm cách nào để tùy chọn hiển thị một phần trong ASP.Net MVC 3?
- 26. Làm cách nào để hiển thị một loại tài liệu bằng xml.dom.minidom của Python?
- 27. html2canvas có thể hiển thị svg trong một trang không?
- 28. Hiển thị một phần bên trong trang chỉnh sửa ActiveAdmin
- 29. Làm cách nào để ẩn và hiển thị các phần tử HTML bằng JQuery?
- 30. Làm cách nào để hiển thị bố cục không phải một phần khi chuyển một khối?
Tôi hiểu rằng phantom.js là không đầu. Điều tôi cần đặc biệt là khả năng chụp trang web từ những gì hiển thị trong chế độ xem trình duyệt. Bạn có biết cách để làm điều này không? –
Được rồi, tôi hiểu ý của bạn là gì. Tôi không biết chắc liệu PhantomJS có hoạt động theo cách đó hay không. Tôi không biết nếu Phantom có bất kỳ khái niệm nào về chế độ xem hoặc bất kỳ thứ gì như thế. – jasonlfunk
Tôi hiểu. Tôi đang tìm một số loại khung công tác thực hiện chức năng này hoặc một số chức năng bên trong API tiện ích mở rộng của Chrome cho phép tôi thực hiện việc này. Nếu bạn có bất kỳ con trỏ, tôi rất nhiều sẽ đánh giá cao nó. –