IPP 打印 returns 未经授权
IPP Printing returns Unauthorized
我想从我的网络应用程序打印标签,为此我正在使用这个包。 (https://github.com/smalot/cups-ipp)。我使用包提供的示例代码,当我发送 PDF 文件进行打印时,我收到以下错误:
Http\Client\Common\Exception\ClientErrorException(401)
未经授权
当我查看我的打印机队列时,我看到状态为中止并且文件大小为 0KB。我确信文件是以正确的方式找到的,因为当我进行一些调试时,我可以看到 PDF 流正在正确进入,但在发送的请求中我无法找到它。请求如下:
Request {#995 ▼
-method: "POST"
-requestTarget: null
-uri: Uri {#996 ▼
-scheme: ""
-userInfo: ""
-host: ""
-port: null
-path: "/"
-query: ""
-fragment: ""
}
-headers: array:1 [▼
"Content-Type" => array:1 [▼
0 => "application/ipp"
]
]
-headerNames: array:1 [▼
"content-type" => "Content-Type"
]
-protocol: "1.1"
-stream: Stream {#998 ▼
-stream: stream resource @14 ▼
wrapper_type: "PHP"
stream_type: "TEMP"
mode: "w+b"
unread_bytes: 0
seekable: true
uri: "php://temp"
options: []
}
-size: 140
-seekable: true
-readable: true
-writable: true
-uri: "php://temp"
-customMetadata: []
}
}
我不知道它是否有价值,但我的应用程序是基于 laravel 5.6。
执行打印作业的代码:
public function testPrinter() {
$client = new Client();
$builder = new Builder();
$responseParser = new ResponseParser();
$printerManager = new PrinterManager($builder, $client, $responseParser);
$printer = $printerManager->findByUri('ipp://localhost:631/printers/OKI_ES7131_D66B77');
$jobManager = new JobManager($builder, $client, $responseParser);
$job = new Job();
$job->setName('job create file');
$job->setUsername('kasper');
$job->setCopies(1);
$job->setPageRanges('1');
$job->addFile('/var/www/justproduce/public/helloworld.pdf', 'test');
$job->addAttribute('media', 'A4');
$job->addAttribute('fit-to-page', true);
$result = $jobManager->send($printer, $job);
}
必须使用凭据初始化新客户端。现在可以使用了。
就我而言(docker 安装在 Synology NAS 上)它仍然需要用户名和密码。
$client = new Client('User', 'password');
我想从我的网络应用程序打印标签,为此我正在使用这个包。 (https://github.com/smalot/cups-ipp)。我使用包提供的示例代码,当我发送 PDF 文件进行打印时,我收到以下错误:
Http\Client\Common\Exception\ClientErrorException(401) 未经授权
当我查看我的打印机队列时,我看到状态为中止并且文件大小为 0KB。我确信文件是以正确的方式找到的,因为当我进行一些调试时,我可以看到 PDF 流正在正确进入,但在发送的请求中我无法找到它。请求如下:
Request {#995 ▼
-method: "POST"
-requestTarget: null
-uri: Uri {#996 ▼
-scheme: ""
-userInfo: ""
-host: ""
-port: null
-path: "/"
-query: ""
-fragment: ""
}
-headers: array:1 [▼
"Content-Type" => array:1 [▼
0 => "application/ipp"
]
]
-headerNames: array:1 [▼
"content-type" => "Content-Type"
]
-protocol: "1.1"
-stream: Stream {#998 ▼
-stream: stream resource @14 ▼
wrapper_type: "PHP"
stream_type: "TEMP"
mode: "w+b"
unread_bytes: 0
seekable: true
uri: "php://temp"
options: []
}
-size: 140
-seekable: true
-readable: true
-writable: true
-uri: "php://temp"
-customMetadata: []
}
}
我不知道它是否有价值,但我的应用程序是基于 laravel 5.6。
执行打印作业的代码:
public function testPrinter() {
$client = new Client();
$builder = new Builder();
$responseParser = new ResponseParser();
$printerManager = new PrinterManager($builder, $client, $responseParser);
$printer = $printerManager->findByUri('ipp://localhost:631/printers/OKI_ES7131_D66B77');
$jobManager = new JobManager($builder, $client, $responseParser);
$job = new Job();
$job->setName('job create file');
$job->setUsername('kasper');
$job->setCopies(1);
$job->setPageRanges('1');
$job->addFile('/var/www/justproduce/public/helloworld.pdf', 'test');
$job->addAttribute('media', 'A4');
$job->addAttribute('fit-to-page', true);
$result = $jobManager->send($printer, $job);
}
必须使用凭据初始化新客户端。现在可以使用了。
就我而言(docker 安装在 Synology NAS 上)它仍然需要用户名和密码。
$client = new Client('User', 'password');