1 #include 
"mupdf-document.h" 
    2 #include "mupdf-document_p.h" 
    4 #include "mupdf-page_p.h" 
    6 #include "mupdf-outline_p.h" 
    8 #include <mupdf/fitz.h> 
   25     DocumentPrivate *documentp;
 
   29     documentp = 
new DocumentPrivate(filePath);
 
   32     else if (!documentp->context || !documentp->document) {
 
   51     DocumentPrivate *documentp;
 
   55     documentp = 
new DocumentPrivate((
unsigned char *)bytes.data(), bytes.length());
 
   58     else if (!documentp->context || !documentp->document) {
 
   68 DocumentPrivate::DocumentPrivate(
const QString &filePath)
 
   69     : context(NULL), document(NULL)
 
   71     , b(-1), g(-1), r(-1), a(-1)
 
   74     context = fz_new_context(NULL, NULL, FZ_STORE_UNLIMITED);
 
   79     fz_register_document_handlers(context);
 
   84         document = fz_open_document(context, filePath.toUtf8().data());
 
   92 DocumentPrivate::DocumentPrivate(
unsigned char *bytes, 
int len)
 
   93     : context(NULL), document(NULL)
 
   95     , b(-1), g(-1), r(-1), a(-1)
 
   98     context = fz_new_context(NULL, NULL, FZ_STORE_UNLIMITED);
 
  103     fz_register_document_handlers(context);
 
  109         fz_stream* stream = fz_open_memory(context, bytes, len);
 
  111         document = fz_open_document_with_stream(context, 
".pdf", stream);
 
  122 Document::~Document()
 
  131 bool Document::needsPassword()
 const 
  133     return fz_needs_password(d->document);
 
  145 bool Document::authPassword(
const QString &password)
 
  147     return fz_authenticate_password(d->document,
 
  148             password.toLocal8Bit().data());
 
  154 int Document::numPages()
 const 
  159         ret = fz_count_pages(d->document);
 
  175 Page * Document::page(
int index)
 const 
  181     pagep = 
new PagePrivate(d, index);
 
  184     else if (!pagep->page) {
 
  190     page = 
new Page(pagep);
 
  206     OutlinePrivate *outlinep;
 
  208     o = fz_load_outline(d->document);
 
  210         outlinep = 
new OutlinePrivate(d, o);
 
  211         d->outlines << outlinep;
 
  221 QString Document::pdfVersion()
 const 
  223     pdf_document *xref = (pdf_document *)d->document;
 
  224     return QString::number(xref->version / 10.0f);
 
  230 QString Document::title()
 const 
  232     return d->info(
"Title");
 
  238 QString Document::author()
 const 
  240     return d->info(
"Author");
 
  246 QString Document::subject()
 const 
  248     return d->info(
"Subject");
 
  254 QString Document::keywords()
 const 
  256     return d->info(
"Keywords");
 
  262 QString Document::creator()
 const 
  264     return d->info(
"Creator");
 
  270 QString Document::producer()
 const 
  272     return d->info(
"Producer");
 
  278 QDateTime Document::creationDate()
 const 
  280     QString str = d->info(
"CreationDate");
 
  285     return QDateTime::fromString(str.left(16),
 
  286             "'D:'yyyyMMddHHmmss");
 
  292 QDateTime Document::modDate()
 const 
  294     QString str = d->info(
"ModDate");
 
  299     return QDateTime::fromString(str.left(16),
 
  300             "'D:'yyyyMMddHHmmss");
 
  310 void Document::setTransparentRendering(
bool enable)
 
  312     d->transparent = enable;
 
  329 void Document::setBackgroundColor(
int r, 
int g, 
int b, 
int a)
 
  337 DocumentPrivate::~DocumentPrivate()
 
  339     foreach (OutlinePrivate *outlinep, outlines) {
 
  340         outlinep->deleteData();
 
  342     foreach (PagePrivate *pagep, pages) {