我在SO: error: ‘Page’ was not declared in this scope发现了类似的问题,但这是一个不同的情况,因为我不是在处理头文件。
从下面的代码中可以看到,我正在使用PoDoFo库尝试将pdf文件内容打印到屏幕上
#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()) { }
}
}这是错误:
/home/coder/QtProjects/finalProject/main.cpp:19: error: ‘page’ was not declared in this scope
PoDoFo::PdfContentsTokenizer tok(page);希望你能帮我解决这个问题。
谢谢!
发布于 2017-04-21 15:08:58
我怀疑你的花括号没有放在正确的位置,根据@Scheff的评论,页面变量的作用域包含在for循环中,并且你试图在循环结束后做更多的操作。我将for循环的}移到了我认为应该在下面的代码中的位置,它应该可以工作,尽管我也怀疑while循环的结束}和最后一个if可能也在错误的位置。
#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()) { }
}
}
}https://stackoverflow.com/questions/43534824
复制相似问题