IPP Printing возвращает несанкционированный - PullRequest
0 голосов
/ 06 июня 2018

Я хочу распечатать этикетки из своего веб-приложения и для этого использую эти пакеты.(https://github.com/smalot/cups-ipp). Я использую пример кода, предоставленного пакетом, и когда я отправляю файл PDF для печати, я получаю следующую ошибку:

Http \ Client \ Common \ Exception \ ClientErrorException (401) Unauthorized

Когда я просматриваю очередь своих принтеров, я вижу, что статус отменен, а размер файла равен 0 КБ. Я уверен, что файл найден правильно, потому что когда я выполняю некоторую отладку, я вижу, что поток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);
}

1 Ответ

0 голосов
/ 06 июня 2018

Пришлось инициализировать нового клиента с учетными данными.Работает сейчас.

...