Tôi đang cố gắng bọc một tập lệnh PhantomJS trong tiến trình node.js. Kịch bản ảo lấy một url từ các đối số được cung cấp trên dòng lệnh và xuất ra một pdf (tương tự như ví dụ rasterize.js đi kèm với cài đặt pahntom).Sử dụng mô-đun Phantom 'trang web' trong node.js
Tập lệnh ảo tôi đã hoạt động tốt, chỉ chủ nhân của tôi muốn tập lệnh nút nếu có thể. Không sao, tôi có thể sử dụng mô-đun nút node-phantom để bọc nó.
Nhưng bây giờ tôi đã trúng một trở ngại, kịch bản phantom của tôi có:
var page = require('webpage').create();
Vì vậy, Node.js đang cố gắng tìm một module gọi là 'trang web', các mô-đun 'trang web' được xây dựng vào ma cài đặt để nút không thể tìm thấy nó. Theo như tôi có thể nói, không có mô-đun npm được gọi là 'trang web'.
'trang web' được sử dụng như thế này:
page.open(address, function (status) {
if (status !== 'success') {
// --- Error opening the webpage ---
console.log('Unable to load the address!');
} else {
// --- Keep Looping Until Render Completes ---
window.setTimeout(function() {
page.render(output);
phantom.exit();
}, 200);
}
});
nơi địa chỉ là url được chỉ định trên dòng lệnh và đầu ra là một đối số, tên và loại của tập tin.
Có ai có thể giúp tôi không? Điều này khá trừu tượng vì vậy tôi không mong đợi nhiều nếu tôi trung thực, đáng thử mặc dù.
Cảm ơn.
EDIT - Khoảng 2 giờ sau
bây giờ tôi có điều này mà ném ra một PDF:
var phanty = require('node-phantom');
var system = require('system');
phanty.create(function(err,phantom) {
//var page = require('webpage').create();
var address;
var output;
var size;
if (system.args.length < 4 || system.args.length > 6) {
// --- Bad Input ---
console.log('Wrong usage, you need to specify the BLAH BLAH BLAH');
phantom.exit(1);
} else {
phantom.createPage(function(err,page){
// --- Set Variables, Web Address, Output ---
address = system.args[2];
output = system.args[3];
page.viewportSize = { width: 600, height: 600 };
// --- Set Variables, Web Address ---
if (system.args.length > 4 && system.args[3].substr(-4) === ".pdf") {
// --- PDF Specific ---
size = system.args[4].split('*');
page.paperSize = size.length === 2 ? { width: size[0], height: size[1], margin: '0px' }
: { format: system.args[4], orientation: 'portrait', margin: '1cm' };
}
// --- Zoom Factor (Should Never Be Set) ---
if (system.args.length > 5) {
page.zoomFactor = system.args[5];
} else {
page.zoomFactor = 1;
}
//----------------------------------------------------
page.open(address ,function(err,status){
if (status !== 'success') {
// --- Error opening the webpage ---
console.log('Unable to load the address!');
} else {
// --- Keep Looping Until Render Completes ---
process.nextTick(function() {
page.render(output);
phantom.exit();
}, 200);
}
});
});
}
});
Nhưng! Nó không đúng kích cỡ! Đối tượng trang tạo ra bằng cách sử dụng ma 'trang web' tạo() chức năng trông như thế này trước khi nó được thông qua URL:
Trong khi tôi trong kịch bản nút của tôi, trông như thế này:
Có thể mã cứng các thuộc tính để đạt được định dạng A4 không? Tôi thiếu gì?
Tôi rất thân thiết!
Bạn nhận được bất kỳ nơi nào với Adam này? Tôi tò mò. –
Thật không may không phải là cuối cùng. Tôi đã thuyết phục nhóm của tôi sử dụng quá trình ảo thay vì làm việc tốt. –
Ngoài sự tò mò, công cụ nào đang được sử dụng trong hai ảnh chụp màn hình cuối cùng? –