Создайте сеанс отправки, который позволяет приложению итеративно передавать диапазоны двоичного файла, связанного с документом печати.
В рамках ответа это действие возвращает URL-адрес отправки, который можно использовать в последующих последовательных PUT запросах. Заголовки запросов для каждой PUT операции можно использовать для указания точного диапазона передаваемых байтов. Это позволяет возобновить передачу в случае, если сетевое подключение будет прервано во время отправки.
Примечание. Создание сеанса отправки с помощью разрешений приложения будет успешным только в том случае, если в processing связанном задании печати находится параметр printTask, запущенный триггером, созданным запрашивающим приложением. Дополнительные сведения о регистрации триггера задачи см. в разделе Расширение универсальной печати для поддержки печати по запросу.
Выберите разрешение или разрешения, помеченные как наименее привилегированные для этого API. Используйте более привилегированное разрешение или разрешения только в том случае, если это требуется приложению. Дополнительные сведения о делегированных разрешениях и разрешениях приложений см. в разделе Типы разрешений. Дополнительные сведения об этих разрешениях см. в справочнике по разрешениям.
Тип разрешения
Разрешения с наименьшими привилегиями
Более высокие привилегированные разрешения
Делегированные (рабочая или учебная учетная запись)
PrintJob.Create
PrintJob.ReadWrite, PrintJob.ReadWrite.All
Делегированные (личная учетная запись Майкрософт)
Не поддерживается.
Не поддерживается.
Приложение
PrintJob.ReadWrite.All
Недоступно.
HTTP-запрос
Чтобы создать сеанс отправки с помощью принтера, выполните приведенные далее действия.
POST /print/printers/{id}/jobs/{id}/documents/{id}/createUploadSession
Создание сеанса отправки с помощью printerShare (поддерживается только с делегированными разрешениями):
POST /print/shares/{id}/jobs/{id}/documents/{id}/createUploadSession
Представляет свойства передаваемого двоичного файла.
Значение свойства contentType в тексте запроса должно поддерживаться параметром printer/printerShare. Поддерживаемые типы контента можно получить, получив значение printerCapabilities принтера или printerShare.
Для преобразования OXPS в PDF необходимо передать application/oxps в качестве contentType для printer/printerShare, который поддерживает application/pdf.
Универсальная печать преобразует OXPS в PDF при выполнении всех следующих условий:
Общий ресурс принтера или принтера поддерживает application/pdf в printerCapabilities.
Общая папка принтера или принтера НЕ поддерживается application/oxps в printerCapabilities.
Значение свойства contentType в тексте запроса — application/oxps.
Отклик
В случае успешного выполнения этот метод возвращает код отклика 200 OK и новый объект uploadSession в тексте отклика.
Примечание. Свойство uploadUrl , возвращаемое как часть объекта ответа uploadSession , является непрозрачным URL-адресом для последующих PUT запросов к отправке диапазонов байтов файла. Он содержит соответствующий маркер проверки подлинности для последующих PUT запросов, срок действия которых истекает по истечении срока действияDateTime. Не изменяйте этот URL-адрес.
Примеры
В следующем примере показано, как создать сеанс отправки, который можно использовать в последующих операциях отправки файлов в указанный printDocument.
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Print.Printers.Item.Jobs.Item.Documents.Item.CreateUploadSession;
using Microsoft.Graph.Models;
var requestBody = new CreateUploadSessionPostRequestBody
{
Properties = new PrintDocumentUploadProperties
{
DocumentName = "TestFile.pdf",
ContentType = "application/pdf",
Size = 4533322L,
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Print.Printers["{printer-id}"].Jobs["{printJob-id}"].Documents["{printDocument-id}"].CreateUploadSession.PostAsync(requestBody);
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.print.printers.item.jobs.item.documents.item.createuploadsession.CreateUploadSessionPostRequestBody createUploadSessionPostRequestBody = new com.microsoft.graph.print.printers.item.jobs.item.documents.item.createuploadsession.CreateUploadSessionPostRequestBody();
PrintDocumentUploadProperties properties = new PrintDocumentUploadProperties();
properties.setDocumentName("TestFile.pdf");
properties.setContentType("application/pdf");
properties.setSize(4533322L);
createUploadSessionPostRequestBody.setProperties(properties);
var result = graphClient.print().printers().byPrinterId("{printer-id}").jobs().byPrintJobId("{printJob-id}").documents().byPrintDocumentId("{printDocument-id}").createUploadSession().post(createUploadSessionPostRequestBody);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\CreateUploadSessionPostRequestBody;
use Microsoft\Graph\Generated\Models\PrintDocumentUploadProperties;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new CreateUploadSessionPostRequestBody();
$properties = new PrintDocumentUploadProperties();
$properties->setDocumentName('TestFile.pdf');
$properties->setContentType('application/pdf');
$properties->setSize(4533322);
$requestBody->setProperties($properties);
$result = $graphServiceClient->escapedPrint()->printers()->byPrinterId('printer-id')->jobs()->byPrintJobId('printJob-id')->documents()->byPrintDocumentId('printDocument-id')->createUploadSession()->post($requestBody)->wait();
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе https://aka.ms/ContentUserFeedback.