Mover Páginas de PDF programaticamente C++

Movendo uma Página de um Documento PDF para Outro

Mover páginas de PDF em um documento é uma tarefa muito interessante e popular. Este tópico explica como mover uma página de um documento PDF para o final de outro documento usando C++. Para mover uma página devemos:

  1. Criar um objeto da classe Document com o arquivo PDF de origem.
  2. Obter a Página da coleção do PageCollection.
  3. Adicionar a página ao documento de destino.
  4. Salvar o PDF de saída usando o método Save.
  5. Delete página no documento de origem.
  6. Salve o PDF de origem usando o método Save.

O trecho de código a seguir mostra como mover uma página.

void MovePage()
{
    // Abrir documento
    String _dataDir("C:\\Samples\\");
    String srcFileName("<enter file name>");
    String dstFileName("<enter file name>");

    auto srcDocument = MakeObject<Document>(_dataDir + srcFileName);
    auto dstDocument = MakeObject<Document>();

    auto page = srcDocument->get_Pages()->idx_get(2);
    dstDocument->get_Pages()->Add(page);
    // Salvar arquivo de saída
    dstDocument->Save(srcFileName);
    srcDocument->get_Pages()->Delete(2);
    srcDocument->Save(dstFileName);
}

Movendo um conjunto de Páginas de um Documento PDF para Outro

  1. Crie um objeto da classe Document com o arquivo PDF de origem.
  2. Defina um array com números de páginas a serem movidas.
  3. Execute o loop através do array:
  4. Obtenha a Página da coleção do PageCollection.
  5. Adicione a página ao documento de destino.
  6. Salve o PDF de saída usando o método Save.
  7. Exclua a página no documento de origem.
  8. Salve o PDF de origem usando o método Save.

O trecho de código a seguir mostra como inserir uma página vazia no final de um arquivo PDF.

void MoveBunchPages()
{
    // Abrir documento
    String _dataDir("C:\\Samples\\");
    String srcFileName("<enter file name>");
    String dstFileName("<enter file name>");

    auto srcDocument = MakeObject<Document>(_dataDir + srcFileName);
    auto dstDocument = MakeObject<Document>();


    auto pages = MakeArray<int>({ 1,3 });

    for (auto pageIndex : pages)
    {
        auto page = srcDocument->get_Pages()->idx_get(pageIndex);
        dstDocument->get_Pages()->Add(page);
    }
    // Salvar arquivos de saída
    dstDocument->Save(srcFileName);
    srcDocument->get_Pages()->Delete();
    srcDocument->Save(dstFileName);
}

Movendo uma Página para um novo local no documento PDF atual

  1. Crie um objeto da classe Document com o arquivo PDF de origem.
  2. Obtenha a Página da coleção PageCollection.
  3. Adicione a página para o novo local (por exemplo, para o final).
  4. Exclua a página na localização anterior.
  5. Salve o PDF de saída usando o método Save.
void MovePagesInOnePDF()
{
    // Abrir documento
    String _dataDir("C:\\Samples\\");
    String srcFileName("<enter file name>");
    String dstFileName("<enter file name>");

    auto srcDocument = MakeObject<Document>(_dataDir + srcFileName);
    auto dstDocument = MakeObject<Document>();

    auto page = srcDocument->get_Pages()->idx_get(2);
    srcDocument->get_Pages()->Add(page);
    srcDocument->get_Pages()->Delete(2);

    // Salvar arquivo de saída
    srcDocument->Save(dstFileName);
}