如何确定 PdfPage 对象的空性?
How to determine PdfPage object emptiness?
让我们有以下代码片段:
PoDoFo::PdfMemDocument pdfDoc;
pdfDoc.CreatePage( PoDoFo::PdfPage::CreateStandardPageSize( PoDoFo::ePdfPageSize_A4 ) );
新创建的页面显然是空的。如何确定这样的页面是空的(里面没有 xobjects 等(。我尝试查找任何类型的方法,例如isEmpty()
或实现我自己的解决方案,如下所示,但没有任何运气。
auto page = src.GetPage( nPage );
if( page->GetContents() == page->GetObject() )
{
// Page is empty
}
// Also tried these checks:
// page->GetResources()->GetObjectLength() == 0
// page->GetResources()->GetStream()->GetLength() == 0
// page->GetResources()->HasStream() == false
由于它具有很高的优先级,因此我提出了一些愚蠢的问题,同时深入挖掘PoDoFo库以找到解决方案。有没有人知道我们如何确定页面空?
经过几个小时的痛苦,我设法解决了这个问题(可以做得更聪明,但无论如何(:
/// @param page Page object to be checked for emptiness.
/// @return True in case page is empty, false otherwise.
bool isDocumentPageEmpty( const PoDoFo::PdfPage* page )
{
PoDoFo::PdfContentsTokenizer tokenizer( const_cast<PoDoFo::PdfPage*>( page ) );
PoDoFo::PdfVariant var;
PoDoFo::EPdfContentsType type;
const char* token = nullptr;
while( tokenizer.ReadNext( type, token, var ) )
{
switch( type )
{
case PoDoFo::ePdfContentsType_Keyword:
case PoDoFo::ePdfContentsType_Variant:
{
return false;
}
}
}
return true;
}
相关文章:
- 需要实例化不同类/对象并在启动时确定的硬件插槽的设计模式
- 用于确定 C++ 中对象的类型的语句
- C++ - 确定 const char* 是指向字符串文本对象还是动态对象
- 如何确定 PdfPage 对象的空性?
- 如何确定迭代器在 c++ 模板函数中指向的对象的类型?
- makefile对我的名称空间对象/函数/构造函数的不确定引用
- 是否允许从具有一些不确定值的对象分配
- 如何确定对象是否已分配成员
- 如何确定谁删除堆对象
- 如何确定我跟踪的对象球是否越过我绘制的线
- 将任何数据类型/对象作为参数传递以确定其大小
- 为什么在C 中不确定,为签名类型的对象分配范围的值的结果
- 不确定如何修复;非静态成员参考必须相对于特定对象
- 更改对象并将其在同一表达式中使用它是不确定的行为,但是子表达式由逗号运算符分开
- C ICU库如何确定要缓存的日历对象
- 确定 std::shared_ptr 是否是对对象的唯一引用
- 确定可调用对象是否具有模板参数
- 如何确定对象想要的路线
- 对象文件"Version References"从何而来?
- 确定C 中的对象类型