Перемещение страниц PDF программно на C++

Перемещение страницы из одного PDF документа в другой

Перемещение страниц PDF в документе — это очень интересная и популярная задача. В этой теме объясняется, как переместить страницу из одного PDF документа в конец другого документа с использованием C++. Чтобы переместить страницу, мы должны:

  1. Создайте объект класса Document с исходным PDF файлом.
  2. Получите страницу из коллекции PageCollection.
  3. Добавьте страницу в целевой документ.
  4. Сохраните выходной PDF, используя метод Save.
  5. Delete страницу в исходном документе.
  6. Сохраните исходный PDF, используя метод Save.

Следующий фрагмент кода показывает, как переместить одну страницу.

void MovePage()
{
    // Открыть документ
    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);
    // Сохранить выходной файл
    dstDocument->Save(srcFileName);
    srcDocument->get_Pages()->Delete(2);
    srcDocument->Save(dstFileName);
}

Перемещение нескольких страниц из одного PDF документа в другой

  1. Создайте объект класса Document с исходным PDF файлом.
  2. Определите массив с номерами страниц для перемещения.
  3. Запустите цикл по массиву:
  4. Получите страницу из коллекции PageCollection.
  5. Добавьте страницу в целевой документ.
  6. Сохраните выходной PDF, используя метод Save.
  7. Удалите страницу в исходном документе.
  8. Сохраните исходный PDF, используя метод Save.

Следующий фрагмент кода показывает, как вставить пустую страницу в конец PDF файла.

void MoveBunchPages()
{
    // Открыть документ
    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);
    }
    // Сохранить выходные файлы
    dstDocument->Save(srcFileName);
    srcDocument->get_Pages()->Delete();
    srcDocument->Save(dstFileName);
}

Перемещение страницы в новое место в текущем PDF документе

  1. Создайте объект класса Document с исходным PDF файлом.
  2. Получите страницу из коллекции PageCollection.
  3. Добавьте страницу на новое место (например, в конец).
  4. Удалите страницу в предыдущем месте.
  5. Сохраните выходной PDF, используя метод Save.
void MovePagesInOnePDF()
{
    // Открыть документ
    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);

    // Сохранить выходной файл
    srcDocument->Save(dstFileName);
}