char *PDFTextWordInterop::getFontName() { if(_textWord != NULL) { TextWord *word = (TextWord *)_textWord; GString *fontName = word->getFontName(); return fontName->getCString(); } else if(_wordList != NULL) { TextWordList *wordList =(TextWordList *)_wordList; TextWord *word = wordList->get(_currentWord); if(word != NULL) { GString *fontName = word->getFontName(); return fontName->getCString(); } } return NULL; }
static void setGlobalParameter(const char* type, const char* arg1, const char* arg2 = NULL) { GString line; line.append(type); line.append(" "); line.append(arg1); if (arg2 != NULL) { line.append(" "); line.append(arg2); } GString name("BepdfApplication"); globalParams->parseLine(line.getCString(), &name, 0); }
const QString KPDFPage::getText( const NormalizedRect & rect ) const { if ( !m_text ) return QString::null; int left = (int)( rect.left * m_width ), top = (int)( rect.top * m_height ), right = (int)( rect.right * m_width ), bottom = (int)( rect.bottom * m_height ); GString * text = m_text->getText( left, top, right, bottom ); QString result = QString::fromUtf8( text->getCString() ); delete text; return result; }
Font::Font(const GfxState *state, double size) { if ( size<1 ) kdDebug(30516) << "very small font size=" << size << endl; _pointSize = qRound(size); GfxRGB rgb; state->getFillRGB(&rgb); _color = toColor(rgb); GfxFont *font = state->getFont(); GString *gname = (font ? font->getName() : 0); QString name = (gname ? gname->getCString() : 0); // kdDebug(30516) << "font: " << name << endl; name = name.section('+', 1, 1).lower(); if ( name.isEmpty() ) name = "##dummy"; // dummy name init(name); }
QString XPDFRenderer::title() const { if (isValid()) { Object pdfInfo; mDocument->getDocInfo(&pdfInfo); if (pdfInfo.isDict()) { Object title; Dict *infoDict = pdfInfo.getDict(); if (infoDict->lookup((char*)"Title", &title)->isString()) { GString *gstring = title.getString(); return QString(gstring->getCString()); } } } return QString(); }
KPDFLink * KPDFOutputDev::generateLink( LinkAction * a ) // note: this function is called when processing a page, when the MUTEX is already LOCKED { KPDFLink * link = NULL; if ( a ) switch ( a->getKind() ) { case actionGoTo: { LinkGoTo * g = (LinkGoTo *) a; // ceate link: no ext file, namedDest, object pointer link = new KPDFLinkGoto( QString::null, decodeViewport( g->getNamedDest(), g->getDest() ) ); } break; case actionGoToR: { LinkGoToR * g = (LinkGoToR *) a; // copy link file const char * fileName = g->getFileName()->getCString(); // ceate link: fileName, namedDest, object pointer link = new KPDFLinkGoto( (QString)fileName, decodeViewport( g->getNamedDest(), g->getDest() ) ); } break; case actionLaunch: { LinkLaunch * e = (LinkLaunch *)a; GString * p = e->getParams(); link = new KPDFLinkExecute( e->getFileName()->getCString(), p ? p->getCString() : 0 ); } break; case actionNamed: { const char * name = ((LinkNamed *)a)->getName()->getCString(); if ( !strcmp( name, "NextPage" ) ) link = new KPDFLinkAction( KPDFLinkAction::PageNext ); else if ( !strcmp( name, "PrevPage" ) ) link = new KPDFLinkAction( KPDFLinkAction::PagePrev ); else if ( !strcmp( name, "FirstPage" ) ) link = new KPDFLinkAction( KPDFLinkAction::PageFirst ); else if ( !strcmp( name, "LastPage" ) ) link = new KPDFLinkAction( KPDFLinkAction::PageLast ); else if ( !strcmp( name, "GoBack" ) ) link = new KPDFLinkAction( KPDFLinkAction::HistoryBack ); else if ( !strcmp( name, "GoForward" ) ) link = new KPDFLinkAction( KPDFLinkAction::HistoryForward ); else if ( !strcmp( name, "Quit" ) ) link = new KPDFLinkAction( KPDFLinkAction::Quit ); else if ( !strcmp( name, "GoToPage" ) ) link = new KPDFLinkAction( KPDFLinkAction::GoToPage ); else if ( !strcmp( name, "Find" ) ) link = new KPDFLinkAction( KPDFLinkAction::Find ); else if ( !strcmp( name, "Close" ) ) link = new KPDFLinkAction( KPDFLinkAction::Close ); else kdDebug() << "Unknown named action: '" << name << "'" << endl; } break; case actionURI: link = new KPDFLinkBrowse( ((LinkURI *)a)->getURI()->getCString() ); break; case actionMovie: /* { TODO this (Movie link) m_type = Movie; LinkMovie * m = (LinkMovie *) a; // copy Movie parameters (2 IDs and a const char *) Ref * r = m->getAnnotRef(); m_refNum = r->num; m_refGen = r->gen; copyString( m_uri, m->getTitle()->getCString() ); } */ break; case actionUnknown: kdDebug() << "Unknown link." << endl; break; } // link may be zero at that point return link; }
void BepdfApplication::Initialize() { if (!mInitialized) { mInitialized = true; // built in fonts BPath fontDirectory(mAppPath); fontDirectory.Append("fonts"); // built in encodings BPath encodingDirectory(mAppPath); encodingDirectory.Append("encodings"); InitXpdf(NULL, fontDirectory.Path(), encodingDirectory.Path()); // system fonts BPath systemFontsPath; if (find_directory(B_BEOS_FONTS_DIRECTORY, &systemFontsPath) == B_OK) { BDirectory directory(systemFontsPath.Path()); BEntry entry; while (directory.GetNextEntry(&entry) == B_OK) { if (!entry.IsDirectory()) continue; BPath fontDirectory; if (entry.GetPath(&fontDirectory) != B_OK) continue; setGlobalParameter("fontDir", fontDirectory.Path()); } } // CID fonts BMessage msg; mSettings->GetDisplayCIDFonts(msg); DisplayCIDFonts displayNames(msg); // record new names bool foundNewName = false; GList* list = getCIDToUnicodeNames(globalParams); for (int i = 0; i < list->getLength(); i ++) { GString* name = (GString*)list->get(i); if (displayNames.Contains(name->getCString())) { continue; } // record name displayNames.Set(name->getCString()); foundNewName = true; } // store in settings if (foundNewName) { msg.MakeEmpty(); displayNames.Archive(msg); mSettings->SetDisplayCIDFonts(msg); } // set CID fonts for (int i = 0; i < list->getLength(); i ++) { GString* name = (GString*)list->get(i); BString file; DisplayCIDFonts::Type type; displayNames.Get(name->getCString(), file, type); if (type == DisplayCIDFonts::kUnknownType || file.Length() == 0) { continue; } if (type == DisplayCIDFonts::kTrueType) { setGlobalParameter("displayCIDFontTT", name->getCString(), file.String()); } else { setGlobalParameter("displayCIDFontT1", name->getCString(), file.String()); } } deleteGList(list, GString); } }
void AnnotWriter::WriteObject(Object* obj) { ASSERT(mFile != NULL); int i; Object o; GString* s = NULL; switch (obj->getType()) { // simple objects case objBool: fprintf(mFile, "%s", obj->getBool() ? "true" : "false"); break; case objInt: fprintf(mFile, "%d", obj->getInt()); break; case objReal: fprintf(mFile, "%g", obj->getReal()); break; case objString: if (AnnotUtils::InUCS2(obj->getString())) { s = AnnotUtils::EscapeString(obj->getString()); Write("("); Write(s); Write(")"); } else { s = AnnotUtils::EscapeString(obj->getString()); fprintf(mFile, "(%s)", s->getCString()); } break; case objName: s = AnnotUtils::EscapeName(obj->getName()); fprintf(mFile, "/%s", s->getCString()); break; case objNull: Write("null"); break; // complex objects case objArray: Write("["); for (i = 0; i < obj->arrayGetLength(); i ++) { obj->arrayGetNF(i, &o); if (i > 0) InsertWhiteSpace(&o); WriteObject(&o); } Write("]"); break; case objDict: Write("<<"); for (i = 0; i < obj->dictGetLength(); i ++) { if (i > 0) WriteCr(); fprintf(mFile, "/%s", obj->dictGetKey(i)); obj->dictGetValNF(i, &o); InsertWhiteSpace(&o); WriteObject(&o); } Write(">>"); break; case objStream: fflush(mFile); fprintf(stderr, "Error: <!!!stream!!!>\n"); ASSERT(false); break; case objRef: Write(obj->getRef()); Write(" R"); break; default: fflush(mFile); fprintf(stderr, "Error: WriteObj unknown type %d\n", obj->getType()); obj->print(stderr); fprintf(stderr, "\n"); ASSERT(false); } delete s; }