获取和设置页面属性

Aspose.PDF for C++ 允许您在C++应用程序中读取和设置PDF文件中页面的属性。本节展示了如何获取PDF文件中的页数,获取有关PDF页面属性的信息,如颜色和设置页面属性,获取PDF文件的特定页面等。

获取PDF文件中的页数

在处理文档时,您通常想知道它们包含多少页。使用Aspose.PDF,只需两行代码即可完成此操作。

要获取PDF文件中的页数:

  1. 使用Document类打开PDF文件。
  2. 然后使用PageCollection集合的Count属性(来自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 文件的所有页面都包含在 Document 对象的 PageCollection 集合中。

从那里,可以使用索引访问单个 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());
}