Reorder Pages

Reorder the pages of a PDF file to reorganize.

Rest API

See our public API Reference for Reorder Pages

Reorder Pages in PDF

The reorder pages operation moves pages from one location to another in a PDF file.

Please refer the API usage guide to understand how to use our APIs.

data-slots=heading, code
data-repeat=4
data-languages=Java, .NET, Node JS, Rest API

Java

// Get the samples from https://www.adobe.com/go/pdftoolsapi_java_samples
// Run the sample:
// mvn -f pom.xml exec:java -Dexec.mainClass=com.adobe.pdfservices.operation.samples.reorderpages.ReorderPDFPages

 public class ReorderPDFPages {

   // Initialize the logger.
   private static final Logger LOGGER = LoggerFactory.getLogger(ReorderPDFPages.class);

   public static void main(String[] args) {
       try {
           // Initial setup, create credentials instance.
           Credentials credentials = Credentials.servicePrincipalCredentialsBuilder()
                    .withClientId("PDF_SERVICES_CLIENT_ID")
                    .withClientSecret("PDF_SERVICES_CLIENT_SECRET")
                    .build();

           // Create an ExecutionContext using credentials and create a new operation instance.
           ExecutionContext executionContext = ExecutionContext.create(credentials);
           ReorderPagesOperation reorderPagesOperation = ReorderPagesOperation.createNew();

           // Set operation input from a source file, along with specifying the order of the pages for
           // rearranging the pages in a PDF file.
           FileRef source = FileRef.createFromLocalFile("src/main/resources/reorderPagesInput.pdf");
           PageRanges pageRanges = getPageRangeForReorder();
           reorderPagesOperation.setInput(source);
           reorderPagesOperation.setPagesOrder(pageRanges);

           // Execute the operation.
           FileRef result = reorderPagesOperation.execute(executionContext);

           // Save the result to the specified location.
           result.saveAs("output/reorderPagesOutput.pdf");

       } catch (IOException | ServiceApiException | SdkException | ServiceUsageException e) {
           LOGGER.error("Exception encountered while executing operation", e);
       }
   }

   private static PageRanges getPageRangeForReorder() {
       // Specify order of the pages for an output document.
       PageRanges pageRanges = new PageRanges();
       // Add pages 3 to 4.
       pageRanges.addRange(3, 4);

       // Add page 1.
       pageRanges.addSinglePage(1);

       return pageRanges;
   }
 }

.NET

// Get the samples from https://www.adobe.com/go/pdftoolsapi_net_samples
// Run the sample:
// cd ReorderPages/
// dotnet run ReorderPDFPages.csproj

 namespace ReorderPDFPages
 {
   class Program
   {
       private static readonly ILog log = LogManager.GetLogger(typeof(Program));
       static void Main()
       {
           // Configure the logging
           ConfigureLogging();
           try
           {
               // Initial setup, create credentials instance.
               Credentials credentials = Credentials.ServicePrincipalCredentialsBuilder()
                    .WithClientId("PDF_SERVICES_CLIENT_ID")
                    .WithClientSecret("PDF_SERVICES_CLIENT_SECRET")
                    .Build();

               // Create an ExecutionContext using credentials.
               ExecutionContext executionContext = ExecutionContext.Create(credentials);

               // Create a new operation instance
               ReorderPagesOperation reorderPagesOperation = ReorderPagesOperation.CreateNew();

               // Set operation input from a source file, along with specifying the order of the pages for
               // rearranging the pages in a PDF file.
               FileRef sourceFileRef = FileRef.CreateFromLocalFile(@"reorderPagesInput.pdf");
               reorderPagesOperation.SetInput(sourceFileRef);
               PageRanges pageRanges = GetPageRangeForReorder();
               reorderPagesOperation.SetPagesOrder(pageRanges);

               // Execute the operation.
               FileRef result = reorderPagesOperation.Execute(executionContext);

               // Save the result to the specified location.
               result.SaveAs(Directory.GetCurrentDirectory() + "/output/reorderPagesOutput.pdf");
           }
           catch (ServiceUsageException ex)
           {
               log.Error("Exception encountered while executing operation", ex);
           }
           // Catch more errors here . . .
       }

       private static PageRanges GetPageRangeForReorder()
       {
           // Specify order of the pages for an output document.
           PageRanges pageRanges = new PageRanges();
           // Add pages 3 to 4.
           pageRanges.AddRange(3, 4);

           // Add page 1.
           pageRanges.AddSinglePage(1);

           return pageRanges;
       }

       static void ConfigureLogging()
       {
           ILoggerRepository logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());
           XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));
       }
   }
 }

Node JS

// Get the samples from http://www.adobe.com/go/pdftoolsapi_node_sample
// Run the sample:
// node src/reorderpages/reorder-pdf-pages.js

 const PDFServicesSdk = require('@adobe/pdfservices-node-sdk');

 const getPageRangeForReorder = () => {
   // Specify order of the pages for an output document.
   const pageRanges = new PDFServicesSdk.PageRanges();

   // Add pages 3 to 4.
   pageRanges.addPageRange(3, 4);

   // Add page 1.
   pageRanges.addSinglePage(1);

   return pageRanges;
 };
 try {
   // Initial setup, create credentials instance.
     const credentials =  PDFServicesSdk.Credentials
         .servicePrincipalCredentialsBuilder()
         .withClientId("PDF_SERVICES_CLIENT_ID")
         .withClientSecret("PDF_SERVICES_CLIENT_SECRET")
         .build();

   // Create an ExecutionContext using credentials and create a new operation instance.
   const executionContext = PDFServicesSdk.ExecutionContext.create(credentials),
       reorderPagesOperation = PDFServicesSdk.ReorderPages.Operation.createNew();

   // Set operation input from a source file, along with specifying the order of the pages for
   // rearranging the pages in a PDF file.
   const input = PDFServicesSdk.FileRef.createFromLocalFile('resources/reorderPagesInput.pdf');
   const pageRanges = getPageRangeForReorder();
   reorderPagesOperation.setInput(input);
   reorderPagesOperation.setPagesOrder(pageRanges);

   // Execute the operation and Save the result to the specified location.
   reorderPagesOperation.execute(executionContext)
       .then(result => result.saveAsFile('output/reorderPagesOutput.pdf'))
       .catch(err => {
           if(err instanceof PDFServicesSdk.Error.ServiceApiError
               || err instanceof PDFServicesSdk.Error.ServiceUsageError) {
               console.log('Exception encountered while executing operation', err);
           } else {
               console.log('Exception encountered while executing operation', err);
           }
       });
 } catch (err) {
   console.log('Exception encountered while executing operation', err);
 }

Rest API

// Please refer our Rest API docs for more information
// https://developer.adobe.com/document-services/docs/apis/#tag/Combine-PDF

curl --location --request POST 'https://pdf-services.adobe.io/operation/combinepdf' \
--header 'x-api-key: {{Placeholder for client_id}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{Placeholder for token}}' \
--data-raw '{
    "assets": [
        {
            "assetID": "urn:aaid:AS:UE1:23c30ee0-2e4d-46d6-87f2-087832fca718",
            "pageRanges": [
                {
                    "start": 3,
                    "end": 3
                },
                {
                    "start": 1,
                    "end": 1
                },
                {
                    "start": 4,
                    "end": 4
                }
            ]
        }
    ]
}'

// Legacy API can be found here
// https://documentcloud.adobe.com/document-services/index.html#post-combinePDF