Adobe · Arazzo Workflow

Adobe Export PDF To Another Format

Version 1.0.0

Upload a PDF, export it to DOCX/PPTX/XLSX/RTF/image, poll the job, and fetch the result.

1 workflow 1 source API 1 provider
View Spec View on GitHub AnalyticsCreative CloudDigital Asset ManagementDocument ServicesE-CommerceE-SignaturesExperience CloudGenerative AIMarketingPDFWork ManagementArazzoWorkflows

Provider

adobe

Workflows

export-pdf
Convert an uploaded PDF into a target document or image format.
Requests an upload slot for the source PDF, submits an exportPDF job to the chosen target format, polls job status until conversion finishes, and retrieves the download URI for the exported file.
4 steps inputs: accessToken, jobID, ocrLanguage, targetFormat outputs: downloadUri, outputAssetID, sourceAssetID
1
requestUpload
uploadAsset
Request a pre-signed upload URI and asset ID for the source PDF, which is then PUT to the returned uploadUri out of band.
2
submitExport
exportPDF
Submit an asynchronous exportPDF job that converts the uploaded PDF into the requested target format. Returns 201 with an in-progress job status.
3
pollStatus
getJobStatus
Poll the exportPDF job until it is no longer in progress, looping back while the status remains "in progress".
4
getOutput
getAsset
Resolve a pre-signed download URI for the exported output asset.

Source API Descriptions

Arazzo Workflow Specification

adobe-export-pdf-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Adobe Export PDF To Another Format
  summary: Upload a PDF, export it to DOCX/PPTX/XLSX/RTF/image, poll the job, and fetch the result.
  description: >-
    Drives the Adobe PDF Services asynchronous export pipeline that converts a
    PDF into another format such as DOCX, PPTX, XLSX, RTF, JPEG, or PNG. The
    workflow registers the source PDF by requesting a pre-signed upload URI and
    asset ID, submits an exportPDF job targeting the desired format, polls the
    job until it reports done, and resolves a download URI for the converted
    output. Each step spells out its request inline. The polling job identifier
    is supplied as a workflow input because the submit response exposes only an
    opaque Location header.
  version: 1.0.0
sourceDescriptions:
- name: pdfServicesApi
  url: ../openapi/adobe-pdf-services-api-openapi.yml
  type: openapi
workflows:
- workflowId: export-pdf
  summary: Convert an uploaded PDF into a target document or image format.
  description: >-
    Requests an upload slot for the source PDF, submits an exportPDF job to the
    chosen target format, polls job status until conversion finishes, and
    retrieves the download URI for the exported file.
  inputs:
    type: object
    required:
    - accessToken
    - targetFormat
    - jobID
    properties:
      accessToken:
        type: string
        description: OAuth 2.0 bearer access token from Adobe IMS.
      targetFormat:
        type: string
        description: Desired output format (docx, doc, pptx, xlsx, rtf, jpeg, or png).
      ocrLanguage:
        type: string
        description: Language for OCR processing during export (e.g. en-US).
        default: en-US
      jobID:
        type: string
        description: The job identifier taken from the exportPDF response Location header, used to poll status.
  steps:
  - stepId: requestUpload
    description: >-
      Request a pre-signed upload URI and asset ID for the source PDF, which is
      then PUT to the returned uploadUri out of band.
    operationId: uploadAsset
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    requestBody:
      contentType: application/json
      payload:
        mediaType: application/pdf
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      assetID: $response.body#/assetID
      uploadUri: $response.body#/uploadUri
  - stepId: submitExport
    description: >-
      Submit an asynchronous exportPDF job that converts the uploaded PDF into
      the requested target format. Returns 201 with an in-progress job status.
    operationId: exportPDF
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    requestBody:
      contentType: application/json
      payload:
        assetID: $steps.requestUpload.outputs.assetID
        targetFormat: $inputs.targetFormat
        ocrLanguage: $inputs.ocrLanguage
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      status: $response.body#/status
  - stepId: pollStatus
    description: >-
      Poll the exportPDF job until it is no longer in progress, looping back
      while the status remains "in progress".
    operationId: getJobStatus
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    - name: operationType
      in: path
      value: exportpdf
    - name: jobID
      in: path
      value: $inputs.jobID
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/status
      outputAssetID: $response.body#/asset/assetID
    onSuccess:
    - name: stillRunning
      type: goto
      stepId: pollStatus
      criteria:
      - context: $response.body
        condition: $.status == "in progress"
        type: jsonpath
    - name: finished
      type: goto
      stepId: getOutput
      criteria:
      - context: $response.body
        condition: $.status == "done"
        type: jsonpath
  - stepId: getOutput
    description: >-
      Resolve a pre-signed download URI for the exported output asset.
    operationId: getAsset
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    - name: assetID
      in: path
      value: $steps.pollStatus.outputs.outputAssetID
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      downloadUri: $response.body#/downloadUri
  outputs:
    sourceAssetID: $steps.requestUpload.outputs.assetID
    outputAssetID: $steps.pollStatus.outputs.outputAssetID
    downloadUri: $steps.getOutput.outputs.downloadUri