Crie uma sessão de upload que permita que um aplicativo carregue iterativamente intervalos de um arquivo binário vinculado ao documento de impressão.
Como parte da resposta, essa ação retorna uma URL de upload que pode ser usada em consultas sequenciais PUT subsequentes. Os cabeçalhos de solicitação para cada PUT operação podem ser usados para especificar o intervalo exato de bytes a serem carregados. Isso permite que a transferência seja retomada, caso a conexão de rede seja descartada durante o upload.
Observação: a criação de uma sessão de upload usando permissões de aplicativo só será bem-sucedida se houver um printTask em um processing estado no trabalho de impressão associado, iniciado por um gatilho que o aplicativo de solicitação criou. Para obter detalhes sobre como registrar um gatilho de tarefa, consulte Estendendo a Impressão Universal para dar suporte à impressão pull.
Escolha a permissão ou as permissões marcadas como menos privilegiadas para essa API. Use uma permissão ou permissões privilegiadas mais altas somente se o aplicativo exigir. Para obter detalhes sobre permissões delegadas e de aplicativo, consulte Tipos de permissão. Para saber mais sobre essas permissões, consulte a referência de permissões.
Tipo de permissão
Permissões menos privilegiadas
Permissões privilegiadas mais altas
Delegado (conta corporativa ou de estudante)
PrintJob.Create
PrintJob.ReadWrite, PrintJob.ReadWrite.All
Delegado (conta pessoal da Microsoft)
Sem suporte.
Sem suporte.
Application
PrintJob.ReadWrite.All
Indisponível.
Solicitação HTTP
Para criar uma sessão de upload usando a impressora:
POST /print/printers/{id}/jobs/{id}/documents/{id}/createUploadSession
Para criar uma sessão de upload usando o printerShare (com suporte apenas com permissões delegadas):
POST /print/shares/{id}/jobs/{id}/documents/{id}/createUploadSession
Representa as propriedades do arquivo binário a ser carregado.
O valor da propriedade contentType no corpo da solicitação deve ser suportado pela impressora/impressoraShare. Você pode obter os tipos de conteúdo com suporte obtendo impressoraCapabilidades da impressora/impressoraShare.
Para conversão de OXPS para PDF , você precisa passar application/oxps como contentType para impressora/printerShare que dá application/pdfsuporte a .
A Impressão Universal converte o OXPS em PDF quando todas as seguintes condições são atendidas:
O compartilhamento de impressora/impressora é application/pdf compatível com impressoraCapabilities.
O compartilhamento de impressora/impressora NÃO dá suporte application/oxps a impressoraCapabilities.
O valor da propriedade contentType no corpo da solicitação é application/oxps.
Resposta
Se for bem-sucedido, esse método retornará um 200 OK código de resposta e um novo objeto uploadSession no corpo da resposta.
Observação: a propriedade uploadUrl retornada como parte do objeto de resposta uploadSession é uma URL opaca para consultas subsequentes PUT para carregar intervalos de bytes do arquivo. Ele contém o token de auth apropriado para consultas subsequentes PUT que expiram por expirationDateTime. Não altere essa URL.
Exemplos
O exemplo a seguir mostra como criar uma sessão de upload que você pode usar em operações de carregamento de arquivo subsequentes para o printDocument especificado.
// 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)