本文整理汇总了C++中PdfObject::GetNumber方法的典型用法代码示例。如果您正苦于以下问题:C++ PdfObject::GetNumber方法的具体用法?C++ PdfObject::GetNumber怎么用?C++ PdfObject::GetNumber使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PdfObject
的用法示例。
在下文中一共展示了PdfObject::GetNumber方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetRotation
int PdfPage::GetRotation() const
{
int rot = 0;
PdfObject* pObj = GetInheritedKeyFromObject( "Rotate", m_pObject );
if ( pObj && pObj->IsNumber() )
rot = static_cast<int>(pObj->GetNumber());
return rot;
}
示例2: PdfeFont
//**********************************************************//
// PdfeFontType3 //
//**********************************************************//
PdfeFontType3::PdfeFontType3( PoDoFo::PdfObject* pFont, FT_Library ftLibrary ) :
PdfeFont( pFont, ftLibrary )
{
this->init();
// Subtype of the font.
const PdfName& subtype = pFont->GetIndirectKey( PdfName::KeySubtype )->GetName();
if( subtype == PdfName( "Type3" ) ) {
this->setType( PdfeFontType::Type3 );
this->setSubtype( PdfeFontSubType::Type3 );
}
else {
PODOFO_RAISE_ERROR_INFO( ePdfError_InvalidDataType, "The PdfObject is not a Type 3 font." );
}
// Need the following entries in the font dictionary.
PdfObject* pBBox = pFont->GetIndirectKey( "FontBBox" );
PdfObject* pMatrix = pFont->GetIndirectKey( "FontMatrix" );
PdfObject* pFChar = pFont->GetIndirectKey( "FirstChar" );
PdfObject* pLChar = pFont->GetIndirectKey( "LastChar" );
PdfObject* pWidths = pFont->GetIndirectKey( "Widths" );
PdfObject* pEncoding = pFont->GetIndirectKey( "Encoding" );
// If does not exist: raise exception.
if( !( pBBox && pMatrix && pFChar && pLChar && pWidths && pEncoding ) ) {
PODOFO_RAISE_ERROR_INFO( ePdfError_InvalidDataType, "Entries missing in the Type 3 font dictionary." );
}
// Initialize font BBox from array.
m_fontBBox = PdfRect( pBBox->GetArray() );
// Font matrix.
const PdfArray& matrixA = pMatrix->GetArray();
m_fontMatrix(0,0) = matrixA[0].GetReal();
m_fontMatrix(0,1) = matrixA[1].GetReal();
m_fontMatrix(1,0) = matrixA[2].GetReal();
m_fontMatrix(1,1) = matrixA[3].GetReal();
m_fontMatrix(2,0) = matrixA[4].GetReal();
m_fontMatrix(2,1) = matrixA[5].GetReal();
// Read char widths.
m_firstCID = static_cast<pdfe_cid>( pFChar->GetNumber() );
m_lastCID = static_cast<pdfe_cid>( pLChar->GetNumber() );
const PdfArray& widthsA = pWidths->GetArray();
m_advanceCID.resize( widthsA.size(), PdfeVector() );
for( size_t i = 0 ; i < widthsA.size() ; ++i ) {
m_advanceCID[i](0) = widthsA[i].GetReal();
}
// Check the size for coherence.
if( m_advanceCID.size() != static_cast<size_t>( m_lastCID - m_firstCID + 1 ) ) {
m_advanceCID.resize( m_lastCID - m_firstCID + 1, PdfeVector( 1000., 0. ) );
}
// Font descriptor (required in Tagged documents).
PdfObject* pDescriptor = pFont->GetIndirectKey( "FontDescriptor" );
if( pDescriptor ) {
m_fontDescriptor.init( pDescriptor );
}
// Font encoding.
this->initEncoding( pEncoding );
// Unicode CMap.
PdfObject* pUnicodeCMap = pFont->GetIndirectKey( "ToUnicode" );
this->initUnicodeCMap( pUnicodeCMap );
// Space characters vector.
this->initSpaceCharacters( m_firstCID, m_lastCID, true );
// Glyph vectors.
this->initGlyphs( pFont );
// Default space bounding box.
this->initSpaceBBox();
// Log font information.
this->initLogInformation();
}
示例3: inspectExtGStateObj
void PDFAnalyzer::inspectExtGStateObj(PdfObject* extGStateObj, QList<PDFColorSpace> & usedColorSpaces, bool & hasTransparency, QList<PDFFont> & usedFonts, PDFGraphicState & currGS)
{
PdfObject* bmObj = extGStateObj->GetIndirectKey("BM");
if (bmObj && bmObj->IsName())
{
currGS.blendModes.clear();
currGS.blendModes.append(bmObj->GetName().GetEscapedName().c_str());
if (!(bmObj->GetName() == "Normal" || bmObj->GetName() == "Compatible"))
hasTransparency = true;
}
else if (bmObj && bmObj->IsArray())
{
PdfArray arr = bmObj->GetArray();
currGS.blendModes.clear();
for(int i=0; i<arr.GetSize(); ++i)
currGS.blendModes.append(arr[i].GetName().GetEscapedName().c_str());
if (arr[0].IsName() && !(arr[0].GetName() == "Normal" || arr[0].GetName() == "Compatible"))
hasTransparency = true;
}
PdfObject* caObj = extGStateObj->GetIndirectKey("ca");
if (caObj && (caObj->IsReal() || caObj->IsNumber()))
{
currGS.fillAlphaConstant = caObj->GetReal();
if (caObj->GetReal() < 1)
hasTransparency = true;
}
PdfObject* cAObj = extGStateObj->GetIndirectKey("CA");
if (cAObj && (cAObj->IsReal() || cAObj->IsNumber()))
{
if (cAObj->GetReal() < 1)
hasTransparency = true;
}
PdfObject* sMaskObj = extGStateObj->GetIndirectKey("SMask");
if (sMaskObj && !(sMaskObj->IsName() && sMaskObj->GetName() == "None"))
hasTransparency = true;
PdfObject* fontObj = extGStateObj->GetIndirectKey("Font");
if (fontObj && fontObj->IsArray())
{
PdfArray arr = fontObj->GetArray();
if (arr[0].IsReference())
{
PdfReference ref = arr[0].GetReference();
PdfObject* fontObject = m_doc->GetObjects().GetObject(ref);
if (fontObject)
{
PDFFont font = getFontInfo(fontObject);
usedFonts.append(font);
currGS.font.first = font;
currGS.font.second = arr[1].GetReal();
}
}
}
PdfObject* lwObj = extGStateObj->GetIndirectKey("LW");
if (lwObj)
currGS.lineWidth = lwObj->GetReal();
PdfObject* lcObj = extGStateObj->GetIndirectKey("LC");
if (lcObj)
currGS.lineCap = lcObj->GetNumber();
PdfObject* ljObj = extGStateObj->GetIndirectKey("LJ");
if (ljObj)
currGS.lineJoin = ljObj->GetNumber();
PdfObject* mlObj = extGStateObj->GetIndirectKey("ML");
if (mlObj)
currGS.miterLimit = mlObj->GetReal();
PdfObject* dObj = extGStateObj->GetIndirectKey("D");
if (dObj)
{
PdfArray dashArr = dObj->GetArray()[0];
currGS.dashPattern.first.clear();
for (int i=0; i<dashArr.GetSize(); ++i)
currGS.dashPattern.first.append(dashArr[i].GetNumber());
currGS.dashPattern.second = dObj->GetArray()[1].GetNumber();
}
}