首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >页面未在此作用域中声明- qt创建者- PoDoFo

页面未在此作用域中声明- qt创建者- PoDoFo
EN

Stack Overflow用户
提问于 2017-04-21 13:48:37
回答 1查看 219关注 0票数 1

我在SO: error: ‘Page’ was not declared in this scope发现了类似的问题,但这是一个不同的情况,因为我不是在处理头文件。

从下面的代码中可以看到,我正在使用PoDoFo库尝试将pdf文件内容打印到屏幕上

代码语言:javascript
复制
#include <iostream>
#include <podofo/podofo.h>
using namespace std;
int main()
{
  //load a new document
  //PoDoFo::PdfMemDocument pdf("myDoc.pdf");

  // this load a doc on my disk

  PoDoFo::PdfMemDocument doc;
  doc.Load("myDoc.pdf");

  //iterate over each page"
  for(int pn = 0; pn < doc.GetPageCount(); ++pn){
    PoDoFo::PdfPage* page = doc.GetPage(pn);
  }

  //
  PoDoFo::PdfContentsTokenizer tok(page);
  const char* token = nullptr;
  PoDoFo::PdfVariant var;
  PoDoFo::EPdfContentsType type;
  while (tok.ReadNext(type, token, var)) {
    if (type == PoDoFo::ePdfContentsType_Keyword) {

    }
  }
  if (var.IsArray()) {
    PoDoFo::PdfArray& a = var.GetArray();
    for (size_t i = 0; i < a.GetSize(); ++i)
      if (a[i].IsString()) { }

  }
}

这是错误:

代码语言:javascript
复制
/home/coder/QtProjects/finalProject/main.cpp:19: error: ‘page’ was not declared in this scope
  PoDoFo::PdfContentsTokenizer tok(page);

希望你能帮我解决这个问题。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-04-21 15:08:58

我怀疑你的花括号没有放在正确的位置,根据@Scheff的评论,页面变量的作用域包含在for循环中,并且你试图在循环结束后做更多的操作。我将for循环的}移到了我认为应该在下面的代码中的位置,它应该可以工作,尽管我也怀疑while循环的结束}和最后一个if可能也在错误的位置。

代码语言:javascript
复制
#include <iostream>
#include <podofo/podofo.h>
using namespace std;
int main()
{
  //load a new document
  //PoDoFo::PdfMemDocument pdf("myDoc.pdf");

  // this load a doc on my disk

  PoDoFo::PdfMemDocument doc;
  doc.Load("myDoc.pdf");
  PoDoFo::PdfPage* page 
  //iterate over each page"
  for(int pn = 0; pn < doc.GetPageCount(); ++pn){
    PoDoFo::PdfPage* page = doc.GetPage(pn);


  //
    PoDoFo::PdfContentsTokenizer tok(page);
    const char* token = nullptr;
    PoDoFo::PdfVariant var;
    PoDoFo::EPdfContentsType type;
    while (tok.ReadNext(type, token, var)) {
      if (type == PoDoFo::ePdfContentsType_Keyword) {

      }
    }
    if (var.IsArray()) {
      PoDoFo::PdfArray& a = var.GetArray();
      for (size_t i = 0; i < a.GetSize(); ++i)
        if (a[i].IsString()) { }

    }
 }  
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43534824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档