Add support for export to OpenDocument text and HTML

for TextDocumentGenerator-based generators:
 - EPub format
 - Fictionbook format
 - OOO.

This depends on Qt 4.5. Thanks to Qt Software (or wherever Thomas Z.
works) for QTextDocumentWriter!

It wouldn't be too hard to make this work for plucker (.pdb)
format, but that format doesn't work for me. It would be very
hard to make it work for other formats.


svn path=/trunk/KDE/kdegraphics/okular/; revision=855771
This commit is contained in:
Brad Hards 2008-09-01 12:00:50 +00:00
parent 269ef9b51a
commit cfb62ab4d5
3 changed files with 26 additions and 2 deletions

View file

@ -554,6 +554,9 @@ ExportFormat ExportFormat::standardFormat( StandardExportFormat type )
KIcon( "application-vnd.oasis.opendocument.text" ),
i18nc( "This is the document format", "OpenDocument Text" ),
KMimeType::mimeType( "application/vnd.oasis.opendocument.text" ) );
break;
case HTML:
return ExportFormat( KIcon( "text-html" ), i18nc( "This is the document format", "HTML" ), KMimeType::mimeType( "text/html" ) );
break;
}
return ExportFormat();

View file

@ -144,7 +144,8 @@ class OKULAR_EXPORT ExportFormat
{
PlainText, ///< Plain text
PDF, ///< PDF, aka Portable Document Format
OpenDocumentText ///< OpenDocument Text format @since 0.8 (KDE 4.2)
OpenDocumentText, ///< OpenDocument Text format @since 0.8 (KDE 4.2)
HTML ///< OpenDocument Text format @since 0.8 (KDE 4.2)
};
/**

View file

@ -19,6 +19,9 @@
#include <QtGui/QImage>
#include <QtGui/QPainter>
#include <QtGui/QPrinter>
#if QT_VERSION >= 0x040500
#include <QtGui/QTextDocumentWriter>
#endif
#include <okular/core/action.h>
#include <okular/core/annotations.h>
@ -425,6 +428,14 @@ Okular::ExportFormat::List TextDocumentGenerator::exportFormats( ) const
if ( formats.isEmpty() ) {
formats.append( Okular::ExportFormat::standardFormat( Okular::ExportFormat::PlainText ) );
formats.append( Okular::ExportFormat::standardFormat( Okular::ExportFormat::PDF ) );
#if QT_VERSION >= 0x040500
if ( QTextDocumentWriter::supportedDocumentFormats().contains( "ODF" ) ) {
formats.append( Okular::ExportFormat::standardFormat( Okular::ExportFormat::OpenDocumentText ) );
}
if ( QTextDocumentWriter::supportedDocumentFormats().contains( "HTML" ) ) {
formats.append( Okular::ExportFormat::standardFormat( Okular::ExportFormat::HTML ) );
}
#endif
}
return formats;
@ -456,8 +467,17 @@ bool TextDocumentGenerator::exportTo( const QString &fileName, const Okular::Exp
out << d->mDocument->toPlainText();
return true;
}
#if QT_VERSION >= 0x040500
} else if ( format.mimeType()->name() == QLatin1String( "application/vnd.oasis.opendocument.text" ) ) {
QTextDocumentWriter odfWriter( fileName, "odf" );
return odfWriter.write( d->mDocument );
} else if ( format.mimeType()->name() == QLatin1String( "text/html" ) ) {
QTextDocumentWriter odfWriter( fileName, "html" );
return odfWriter.write( d->mDocument );
}
#endif
return false;
}