Получение и Установка Свойств Страницы

Aspose.PDF for C++ позволяет читать и устанавливать свойства страниц в PDF файле в ваших приложениях на C++. Этот раздел показывает, как получить количество страниц в PDF файле, получить информацию о свойствах страницы PDF, таких как цвет, установить свойства страницы, получить конкретную страницу PDF файла и т.д.

Получение Количества Страниц в PDF Файле

При работе с документами часто хочется знать, сколько страниц они содержат. С Aspose.PDF это занимает не более двух строк кода.

Чтобы получить количество страниц в PDF файле:

  1. Откройте PDF файл, используя класс Document.
  2. Затем используйте свойство Count коллекции PageCollection (из объекта Document), чтобы получить общее количество страниц в документе.

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

void GetNumberOfPages() {
    // Открыть документ
    String _dataDir("C:\\Samples\\");
    String srcFileName("GetNumberofPages.pdf");

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

    // Получить количество страниц
    std::cout << "Page Count : " << srcDocument->get_Pages()->get_Count() << std::endl;
}

Получить количество страниц без сохранения документа

Иногда мы создаем PDF-файлы на лету и в процессе создания PDF-файла можем столкнуться с необходимостью (создание оглавления и т.д.) получить количество страниц PDF-файла без сохранения файла на системе или потоке. Итак, для удовлетворения этого требования в классе Document был введен метод ProcessParagraphs. Пожалуйста, обратите внимание на следующий фрагмент кода, который показывает шаги для получения количества страниц без сохранения документа.

void GetPageCountWithoutSavingTheDocument() {
    // Создать экземпляр Document
    auto document = MakeObject<Document>();

    // Добавить страницу в коллекцию страниц PDF файла
    auto page = document->get_Pages()->Add();
    // Создать экземпляр цикла
    for (int i = 0; i < 300; i++)
        // Добавить TextFragment в коллекцию параграфов объекта страницы
        page->get_Paragraphs()->Add(MakeObject<TextFragment>(u"Pages count test"));
    // Обработать параграфы в PDF файле для получения точного количества страниц
    document->ProcessParagraphs();
    // Вывести количество страниц в документе
    std::cout << "Number of pages in document = " << document->get_Pages()->get_Count();
}

Получить свойства страницы

Доступ к свойствам страницы

Класс Page предоставляет все свойства, связанные с конкретной страницей PDF. Все страницы PDF-файлов содержатся в коллекции PageCollection объекта Document.

Оттуда можно получить доступ как к отдельным объектам Page, используя их индекс, так и пройтись по коллекции с помощью цикла foreach, чтобы получить все страницы. Как только доступ к отдельной странице получен, мы можем получить ее свойства. Следующий фрагмент кода показывает, как получить свойства страницы.

void AccessingPageProperties() {

    String _dataDir("C:\\Samples\\");
    String pdfDocument("GetProperties.pdf");

    // Открыть документ
    auto document = MakeObject<Document>(_dataDir + pdfDocument);

    // Получить конкретную страницу
    auto pdfPage = document->get_Pages()->idx_get(1);
    // Получить свойства страницы
    Console::WriteLine(u"ArtBox : Height={0},Width={1},LLX={2},LLY={3},URX={4},URY={5}",
        pdfPage->get_ArtBox()->get_Height(), pdfPage->get_ArtBox()->get_Width(),
        pdfPage->get_ArtBox()->get_LLX(), pdfPage->get_ArtBox()->get_LLY(),
        pdfPage->get_ArtBox()->get_URX(), pdfPage->get_ArtBox()->get_URY());

    Console::WriteLine(u"->get_BleedBox() : Height={0},Width={1},LLX={2},LLY={3},URX={4},URY={5}",
        pdfPage->get_BleedBox()->get_Height(), pdfPage->get_BleedBox()->get_Width(),
        pdfPage->get_BleedBox()->get_LLX(), pdfPage->get_BleedBox()->get_LLY(),
        pdfPage->get_BleedBox()->get_URX(), pdfPage->get_BleedBox()->get_URY());

    Console::WriteLine(u"get_CropBox() : Height={0},Width={1},LLX={2},LLY={3},URX={4},URY={5}",
        pdfPage->get_CropBox()->get_Height(), pdfPage->get_CropBox()->get_Width(),
        pdfPage->get_CropBox()->get_LLX(), pdfPage->get_CropBox()->get_LLY(),
        pdfPage->get_CropBox()->get_URX(), pdfPage->get_CropBox()->get_URY());

    Console::WriteLine(u"get_MediaBox() : Height={0},Width={1},LLX={2},LLY={3},URX={4},URY={5}",
        pdfPage->get_MediaBox()->get_Height(), pdfPage->get_MediaBox()->get_Width(),
        pdfPage->get_MediaBox()->get_LLX(), pdfPage->get_MediaBox()->get_LLY(),
        pdfPage->get_MediaBox()->get_URX(), pdfPage->get_MediaBox()->get_URY());

    Console::WriteLine(u"get_TrimBox() : Height={0},Width={1},LLX={2},LLY={3},URX={4},URY={5}",
        pdfPage->get_TrimBox()->get_Height(), pdfPage->get_TrimBox()->get_Width(),
        pdfPage->get_TrimBox()->get_LLX(), pdfPage->get_TrimBox()->get_LLY(),
        pdfPage->get_TrimBox()->get_URX(), pdfPage->get_TrimBox()->get_URY());

    Console::WriteLine(u"Rect : Height={0},Width={1},LLX={2},LLY={3},URX={4},URY={5}",
        pdfPage->get_Rect()->get_Height(), pdfPage->get_Rect()->get_Width(),
        pdfPage->get_Rect()->get_LLX(), pdfPage->get_Rect()->get_LLY(),
        pdfPage->get_Rect()->get_URX(), pdfPage->get_Rect()->get_URY());

    Console::WriteLine(u"Page Number : {0}", pdfPage->get_Number());
    Console::WriteLine(u"Rotate : {0}", pdfPage->get_Rotate());
}