KoDocument* openFile(const QString &filename) { const QString mimetype = KMimeType::findByPath(filename)->name(); QString error; KoPart *part = KMimeTypeTrader::self()->createInstanceFromQuery<KoPart>( mimetype, QLatin1String("Calligra/Part"), 0, QString(), QVariantList(), &error ); if (!error.isEmpty()) { qWarning() << "Error creating document" << mimetype << error; return 0; } KoDocument *document = part->document(); if (0 != document) { KUrl url; url.setPath(filename); document->setCheckAutoSaveFile(false); document->setAutoErrorHandlingEnabled(false); if (document->openUrl(filename)) { document->setReadWrite(false); } else { kWarning(31000)<< "openUrl failed" << filename << mimetype << error; delete document; document = 0; } } return document; }
bool CAPresentationHandler::openDocument (const QString& uri) { QString error; QString mimetype = KMimeType::findByPath (uri)->name(); KoDocumentEntry documentEntry = KoDocumentEntry::queryByMimeType(mimetype); KoPart *part = documentEntry.createKoPart(&error); if (!part) { kDebug() << "Doc can't be openend" << error; return false; } d->document = qobject_cast<KPrDocument*> (part->document()); d->document->openUrl (KUrl (uri)); KoCanvasBase* paCanvas = dynamic_cast<KoCanvasBase*>(part->canvasItem(d->document)); KoPACanvasItem* paCanvasItem = dynamic_cast<KoPACanvasItem*> (paCanvas); if (!paCanvasItem) { kDebug() << "Failed to fetch a canvas item"; return false; } if (paCanvasItem) { d->paView = new CAPAView (documentController()->canvasController(), dynamic_cast<KoPACanvasBase*> (paCanvas), d->document); paCanvasItem->setView (d->paView); documentController()->canvasController()->setZoomHandler (static_cast<KoZoomHandler*> (paCanvasItem->viewConverter())); d->paView->connectToZoomController(); // update the canvas whenever we scroll, the canvas controller must emit this signal on scrolling/panning connect (documentController()->canvasController()->canvasControllerProxyObject(), SIGNAL(moveDocumentOffset(QPoint)), paCanvasItem, SLOT(slotSetDocumentOffset(QPoint))); // whenever the size of the document viewed in the canvas changes, inform the zoom controller connect (paCanvasItem, SIGNAL(documentSize(QSize)), this, SLOT(tellZoomControllerToSetDocumentSize(QSize))); paCanvasItem->update(); } setCanvas (paCanvas); KoToolManager::instance()->addController (documentController()->canvasController()); connect(documentController()->canvasController(), SIGNAL(needsCanvasResize(QSizeF)), SLOT(resizeCanvas(QSizeF))); connect (documentController()->canvasController(), SIGNAL(needCanvasUpdate()), SLOT(updateCanvas())); d->paDocumentModel = new CAPADocumentModel(this, d->document); emit totalNumberOfSlidesChanged(); QTimer::singleShot(0, this, SLOT(nextSlide())); return true; }
bool CASpreadsheetHandler::openDocument (const QString& uri) { QString error; QString mimetype = KMimeType::findByPath (uri)->name(); KoPart *part = KMimeTypeTrader::createInstanceFromQuery<KoPart>(mimetype, QLatin1String("Calligra/Part"), 0, QString(), QVariantList(), &error); if (!part) { kDebug() << "Doc can't be openend" << error; return false; } d->document = static_cast<Calligra::Sheets::Doc*> (part->document()); d->document->openUrl (KUrl (uri)); setCanvas (dynamic_cast<KoCanvasBase*>(part->canvasItem(d->document))); KoToolManager::instance()->addController (documentController()->canvasController()); d->canvasItem = dynamic_cast<Calligra::Sheets::CanvasItem*> (canvas()); if (!d->canvasItem) { kDebug() << "Failed to fetch a canvas item"; return false; } KoZoomHandler* zoomHandler = new KoZoomHandler(); documentController()->canvasController()->setZoomHandler (zoomHandler); KoZoomController* zoomController = documentController()->canvasController()->zoomController(); zoomController->setZoom (KoZoomMode::ZOOM_CONSTANT, 1.0); documentController()->canvasController()->setCanvasMode (KoCanvasController::Spreadsheet); if (d->canvasItem) { // update the canvas whenever we scroll, the canvas controller must emit this signal on scrolling/panning connect (documentController()->canvasController()->canvasControllerProxyObject(), SIGNAL(moveDocumentOffset(QPoint)), d->canvasItem, SLOT(setDocumentOffset(QPoint))); // whenever the size of the document viewed in the canvas changes, inform the zoom controller connect (d->canvasItem, SIGNAL(documentSizeChanged(QSize)), this, SLOT(tellZoomControllerToSetDocumentSize(QSize))); d->canvasItem->update(); } connect (documentController()->canvasController(), SIGNAL(needsCanvasResize(QSizeF)), SLOT(resizeCanvas(QSizeF))); connect (documentController()->canvasController(), SIGNAL(needCanvasUpdate()), SLOT(updateCanvas())); updateCanvas(); documentController()->canvasController()->zoomToFit(); emit sheetCountChanged(); return true; }
bool OkularOdpGenerator::loadDocument( const QString &fileName, QVector<Okular::Page*> &pages ) { KComponentData cd("OkularOdpGenerator", QByteArray(), KComponentData::SkipMainComponentRegistration); const QString mimetype = KMimeType::findByPath(fileName)->name(); QString error; KoPart *part = KMimeTypeTrader::self()->createInstanceFromQuery<KoPart>( mimetype, QLatin1String("Calligra/Part"), 0, QString(), QVariantList(), &error ); if (!error.isEmpty()) { qWarning() << "Error creating document" << mimetype << error; return 0; } KoPADocument* doc = qobject_cast<KoPADocument*>(part->document()); m_doc = doc; KUrl url; url.setPath(fileName); doc->setCheckAutoSaveFile(false); doc->setAutoErrorHandlingEnabled(false); // show error dialogs if (!doc->openUrl(url)) { return false; } doc->setReadWrite(false); doc->setAutoSave(0); int pageCount = m_doc->pageCount(); for(int i = 0; i < pageCount; i++) { KoPAPageBase* kprpage = m_doc->pages().value(i); if (!kprpage) { continue; } QSize size = kprpage->size().toSize(); Okular::Page * page = new Okular::Page( i, size.width(), size.height(), Okular::Rotation0 ); pages.append(page); } return true; }
bool convertPdf(const QUrl &uIn, const QString &inputFormat, const QUrl &uOut, const QString &outputFormat, const QString &orientation, const QString &papersize, const QString &margin) { Q_UNUSED(outputFormat); QString error; KoDocumentEntry documentEntry = KoDocumentEntry::queryByMimeType(inputFormat); KoPart *part = documentEntry.createKoPart(); if (!part) { return false; } KoDocument *doc = part->document(); doc->setCheckAutoSaveFile(false); doc->setAutoErrorHandlingEnabled(false); if (!doc->openUrl(uIn)) { qDebug() << "The document" << uIn.path() << "of format" << inputFormat << "failed to open with the error" << error; doc->deleteLater(); return false; } doc->setReadWrite(false); KoView *view = part->createView(doc); KoPrintJob *printJob = view->createPdfPrintJob(); // We should now have a print job - but check to make sure if (!printJob) { qDebug() << "The document" << uIn.path() << "of format" << inputFormat << "was unable to provide a print job for PDF export"; doc->deleteLater(); return false; } printJob->printer().setOutputFileName(uOut.path()); printJob->printer().setOutputFormat(QPrinter::PdfFormat); printJob->printer().setColorMode(QPrinter::Color); if (orientation == "Portrait") printJob->printer().setOrientation(QPrinter::Portrait); else if (orientation == "Landscape") printJob->printer().setOrientation(QPrinter::Landscape); if (papersize == "A0") printJob->printer().setPaperSize(QPrinter::A0); else if (papersize == "A1") printJob->printer().setPaperSize(QPrinter::A1); else if (papersize == "A2") printJob->printer().setPaperSize(QPrinter::A2); else if (papersize == "A3") printJob->printer().setPaperSize(QPrinter::A3); else if (papersize == "A4") printJob->printer().setPaperSize(QPrinter::A4); else if (papersize == "A5") printJob->printer().setPaperSize(QPrinter::A5); else if (papersize == "A6") printJob->printer().setPaperSize(QPrinter::A6); else if (papersize == "A7") printJob->printer().setPaperSize(QPrinter::A7); else if (papersize == "A8") printJob->printer().setPaperSize(QPrinter::A8); else if (papersize == "A9") printJob->printer().setPaperSize(QPrinter::A9); else if (papersize == "B0") printJob->printer().setPaperSize(QPrinter::B0); else if (papersize == "B1") printJob->printer().setPaperSize(QPrinter::B1); else if (papersize == "B2") printJob->printer().setPaperSize(QPrinter::B2); else if (papersize == "B3") printJob->printer().setPaperSize(QPrinter::B3); else if (papersize == "B4") printJob->printer().setPaperSize(QPrinter::B4); else if (papersize == "B5") printJob->printer().setPaperSize(QPrinter::B5); else if (papersize == "B6") printJob->printer().setPaperSize(QPrinter::B6); else if (papersize == "B7") printJob->printer().setPaperSize(QPrinter::B7); else if (papersize == "B8") printJob->printer().setPaperSize(QPrinter::B8); else if (papersize == "B9") printJob->printer().setPaperSize(QPrinter::B9); else if (papersize == "B10") printJob->printer().setPaperSize(QPrinter::B10); else if (papersize == "C5E") printJob->printer().setPaperSize(QPrinter::C5E); else if (papersize == "Comm10E") printJob->printer().setPaperSize(QPrinter::Comm10E); else if (papersize == "DLE") printJob->printer().setPaperSize(QPrinter::DLE); else if (papersize == "Executive") printJob->printer().setPaperSize(QPrinter::Executive); else if (papersize == "Folio") printJob->printer().setPaperSize(QPrinter::Folio); else if (papersize == "Ledger") printJob->printer().setPaperSize(QPrinter::Ledger); else if (papersize == "Legal") printJob->printer().setPaperSize(QPrinter::Legal); else if (papersize == "Letter") printJob->printer().setPaperSize(QPrinter::Letter); else if (papersize == "Tabloid") printJob->printer().setPaperSize(QPrinter::Tabloid); bool _marginOk; qreal _margin = margin.toDouble(&_marginOk); if (!_marginOk) _margin = 0.2; printJob->printer().setPageMargins(_margin, _margin, _margin, _margin, QPrinter::Point); printJob->startPrinting(); doc->deleteLater(); return true; }