Интернет-протокол печати (IPP) для nodejs
Я пытаюсь распечатать PDF-файл в моем локальном с помощью принтера. Это код, который пытался напечатать.
fs.readFile('documents/AccountStatement.pdf', function(err, data) {
if (err)
throw err;
var printer = ipp.Printer("http://hostname:631/ipp/printer");
var msg = {
"operation-attributes-tag": {
"requesting-user-name": "KUMA1936",
"job-name": "My Test Job",
"document-format": "application/pdf"
},
data: data
};
printer.execute("Print-Job", msg, function(err, res){
console.log(res);
console.log(err);
});
});
В приведенном выше коде, что делает метод printer.execute() и параметр "Print-Job". И что здесь 631. Когда я печатаю Res, его шоу
{версия: '1.1', statusCode: 'сервер-ошибка-операция-не поддерживается', id: 442076, 'операция-атрибут-тег': { 'attribute-charset': 'utf-8', 'attribute-natural-language': 'en-us' } } ошибка равна нулю.
3 ответа
Вы можете проверить API документы. Первый параметр (строка) является операцией, определенной IPP. Описание о Print-Job
операция дается здесь
3.2.1 Print-Job Operation This REQUIRED operation allows a client to submit a print job with only one document and supply the document data (rather than just a reference to the data). See Section 15 for the suggested steps for processing create operations and their Operation and Job Template attributes.
Вы можете увидеть другие поддерживаемые IPP операции здесь. 631 - это принятый порт, используемый для IPP, который использует TCP.
Вы можете проверить больше об ошибке здесь, которая показывает:
13.1.5.2 server-error-operation-not-supported (0x0501) The IPP object does not support the functionality required to fulfill the request. This is the appropriate response when the IPP object does not recognize an operation or is not capable of supporting it. See sections 3.1.6.1 and 3.1.7.
Это означает, что в вашем коде нет ошибок. Скорее всего, ваш принтер не настроен или не поддерживает IPP. Последнее, но не менее важное, IPP.Printer
должен быть указан IP принтера. Поэтому убедитесь, что IP-адрес, который вы даете, действителен (ваш код показывает, что вы дали имя хоста). Со страницы проекта дается:
To find out if your printer supports IPP: - Google your printer's specs - Try: telnet YOUR_PRINTER 631. If it connects, that's a good sign. - Use the '/examples/findPrinters.js' script.
В моем случае я просто делюсь принтером: (как и другим)
Так что URL будет (вы найдете findPrinters.js)
http://My-Computer-Name.local.:631/printers/my_printer_name
Это должно помочь, если ваш принтер не подключен (например, USB) к компьютеру. Но подключайтесь через локальную сеть.
- Похоже, вы получаете ответ IPP-Version-1.1-Response при отправке IPP-2.0.
- Попробуйте понизить до 1.1 с помощью опции версии