Node.js: как добавить задание на печать на принтер

Я разрабатываю веб-приложение, используя node.js, где у меня есть сценарий для печати некоторых файлов PDF, расположенных в моем локальном компьютере.

Ex:

var ipp = require('ipp');
var PDFDocument = require('pdfkit');

//make a PDF document
var doc = new PDFDocument({margin:0});
doc.text(".", 0, 780);

doc.output(function(pdf){
    var printer = ipp.Printer("http://NPI977E4E.local.:631/ipp/printer");
    var msg = {
        "operation-attributes-tag": {
            "requesting-user-name": "William",
            "job-name": "My Test Job",
            "document-format": "application/pdf"
        },
        data: pdf
    };
    printer.execute("Print-Job", msg, function(err, res){
        console.log(res);
    });
});

Я упомянул приведенный выше пример, но в этом PDF-файле создается, но в моем случае я хочу распечатать существующие PDF-файлы.

Какие-либо предложения ???


person R J.    schedule 24.04.2013    source источник


Ответы (2)


Если я вас правильно понял, вы хотите печатать локальные PDF-файлы, и печать уже работает?

Node.js имеет fs API, который вы можете использовать для извлечения PDF-файла. http://nodejs.org/api/fs.html

https://npmjs.org/package/ipp Мне кажется, вам не нужно использовать Объект PDFkit как свойство данных в вашей работе. Вы можете просто использовать данные, которые вы можете прочитать с помощью fs.

person Eric Smekens    schedule 24.04.2013
comment
Попробуйте сначала настроить свой адрес и сетевую конфигурацию, а затем попробуйте просто распечатать встроенный PDF-файл в своем примере. Делайте маленькие шаги. - person Eric Smekens; 24.04.2013

person    schedule
comment
И что говорит err? Кстати, просто вырезать и вставить код примера, очевидно, не получится, если только ваш принтер не расположен на сервере с именем NPI977E4E.local. - person robertklep; 24.04.2013
comment
{ [Ошибка: getaddrinfo ENOENT] код: 'ENOTFOUND', ошибка: 'ENOTFOUND', системный вызов: 'getaddrinfo' } - person R J.; 24.04.2013
comment
Поэтому замените NPI977E4E.local адресом или именем хоста вашего IPP-сервера. - person robertklep; 24.04.2013
comment
я изменил имя хоста принтера и проверил, а затем показал «ноль». - person R J.; 24.04.2013
comment
Когда err равно нулю, это означает, что ошибки не произошло. Что должно быть хорошо. - person robertklep; 24.04.2013
comment
когда я печатаю разрешение, оно показывает. { версия: '1.1', statusCode: 'сервер-ошибка-версия-не-поддерживается', идентификатор: 36143315, 'операция-атрибуты-тег': { 'атрибуты-кодировка': 'utf-8', 'атрибуты-естественные -language': 'en-us' } } - person R J.; 24.04.2013
comment
Ну, я думаю, ваша проблема немного сложнее, чем просто желание печатать локальные файлы вместо сгенерированных. Это может даже потребовать нового (или переформулированного) вопроса, чтобы привлечь людей с большим количеством знаний. - person robertklep; 24.04.2013
comment
Это поздно, но есть вероятность, что все, что вам нужно было сделать, это указать версию, предоставленную в запросе. - person Jim Pedid; 21.04.2015