Создайте сеанс отправки, который позволяет приложению итеративно передавать диапазоны двоичного файла, связанного с документом печати.
В рамках ответа это действие возвращает 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 major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphprint "github.com/microsoftgraph/msgraph-sdk-go/print"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphprint.NewCreateUploadSessionPostRequestBody()
properties := graphmodels.NewPrintDocumentUploadProperties()
documentName := "TestFile.pdf"
properties.SetDocumentName(&documentName)
contentType := "application/pdf"
properties.SetContentType(&contentType)
size := int64(4533322)
properties.SetSize(&size)
requestBody.SetProperties(properties)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
createUploadSession, err := graphClient.Print().Printers().ByPrinterId("printer-id").Jobs().ByPrintJobId("printJob-id").Documents().ByPrintDocumentId("printDocument-id").CreateUploadSession().Post(context.Background(), requestBody, nil)
// 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\Print\Printers\Item\Jobs\Item\Documents\Item\CreateUploadSession\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();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.print.printers.item.jobs.item.documents.item.create_upload_session.create_upload_session_post_request_body import CreateUploadSessionPostRequestBody
from msgraph.generated.models.print_document_upload_properties import PrintDocumentUploadProperties
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = CreateUploadSessionPostRequestBody(
properties = PrintDocumentUploadProperties(
document_name = "TestFile.pdf",
content_type = "application/pdf",
size = 4533322,
),
)
result = await graph_client.print.printers.by_printer_id('printer-id').jobs.by_print_job_id('printJob-id').documents.by_print_document_id('printDocument-id').create_upload_session.post(request_body)