sc/source/filter/html/htmlexp.cxx | 19 ++++++++++++++++--- sc/source/filter/inc/htmlexp.hxx | 2 ++ sw/qa/extras/htmlexport/htmlexport.cxx | 2 ++ sw/source/filter/html/htmlplug.cxx | 1 + 4 files changed, 21 insertions(+), 3 deletions(-)
New commits: commit 1ee98159f7749b2c1ad47de60a9b3057b9e9720e Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Aug 25 16:12:33 2014 +0200 HTML export: avoid invalid output for embedded spreadsheets When the sc document is embedded inside an sw one, then the sc HTML export should just write what's inside the <body>. Add a filter option for that in sc and use it from sw. Change-Id: I3a9605bd62f0628b78cd782c11661f12bc2c3ae4 diff --git a/sc/source/filter/html/htmlexp.cxx b/sc/source/filter/html/htmlexp.cxx index 7104f60..f9facfc 100644 --- a/sc/source/filter/html/htmlexp.cxx +++ b/sc/source/filter/html/htmlexp.cxx @@ -210,7 +210,8 @@ ScHTMLExport::ScHTMLExport( SvStream& rStrmP, const OUString& rBaseURL, ScDocume bCalcAsShown( pDocP->GetDocOptions().IsCalcAsShown() ), bTableDataWidth( true ), bTableDataHeight( true ), - mbSkipImages ( false ) + mbSkipImages ( false ), + mbSkipHeaderFooter( false ) { strcpy( sIndent, sIndentSource ); sIndent[0] = 0; @@ -224,6 +225,10 @@ ScHTMLExport::ScHTMLExport( SvStream& rStrmP, const OUString& rBaseURL, ScDocume { mbSkipImages = true; } + else if (rFilterOptions == "SkipHeaderFooter") + { + mbSkipHeaderFooter = true; + } for ( sal_uInt16 j=0; j < SC_HTML_FONTSIZES; j++ ) { @@ -306,14 +311,18 @@ Size ScHTMLExport::MMToPixel( const Size& rSize ) sal_uLong ScHTMLExport::Write() { + if (!mbSkipHeaderFooter) + { rStrm.WriteChar( '<' ).WriteCharPtr( OOO_STRING_SVTOOLS_HTML_doctype ).WriteChar( ' ' ).WriteCharPtr( OOO_STRING_SVTOOLS_HTML_doctype40 ).WriteChar( '>' ) .WriteCharPtr( SAL_NEWLINE_STRING ).WriteCharPtr( SAL_NEWLINE_STRING ); TAG_ON_LF( OOO_STRING_SVTOOLS_HTML_html ); WriteHeader(); OUT_LF(); + } WriteBody(); OUT_LF(); - TAG_OFF_LF( OOO_STRING_SVTOOLS_HTML_html ); + if (!mbSkipHeaderFooter) + TAG_OFF_LF( OOO_STRING_SVTOOLS_HTML_html ); return rStrm.GetError(); } @@ -544,6 +553,8 @@ void ScHTMLExport::WriteBody() const SvxBrushItem* pBrushItem = (const SvxBrushItem*)&rSet.Get( ATTR_BACKGROUND ); // default text color black + if (!mbSkipHeaderFooter) + { rStrm.WriteChar( '<' ).WriteCharPtr( OOO_STRING_SVTOOLS_HTML_body ); if (!mbSkipImages) @@ -608,13 +619,15 @@ void ScHTMLExport::WriteBody() } rStrm.WriteChar( '>' ); OUT_LF(); + } if ( bAll ) WriteOverview(); WriteTables(); - TAG_OFF_LF( OOO_STRING_SVTOOLS_HTML_body ); + if (!mbSkipHeaderFooter) + TAG_OFF_LF( OOO_STRING_SVTOOLS_HTML_body ); } void ScHTMLExport::WriteTables() diff --git a/sc/source/filter/inc/htmlexp.hxx b/sc/source/filter/inc/htmlexp.hxx index 8f70b0d..6120906 100644 --- a/sc/source/filter/inc/htmlexp.hxx +++ b/sc/source/filter/inc/htmlexp.hxx @@ -125,6 +125,8 @@ class ScHTMLExport : public ScExportBase bool bTableDataWidth; bool bTableDataHeight; bool mbSkipImages; + /// If HTML header and footer should be written as well, or just the content itself. + bool mbSkipHeaderFooter; const SfxItemSet& PageDefaults( SCTAB nTab ); diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx b/sw/qa/extras/htmlexport/htmlexport.cxx index 6903522..82d6cd4 100644 --- a/sw/qa/extras/htmlexport/htmlexport.cxx +++ b/sw/qa/extras/htmlexport/htmlexport.cxx @@ -143,6 +143,8 @@ DECLARE_HTMLEXPORT_TEST(testSkipImageEmbedded, "skipimage-embedded.doc") // This was 0. assertXPath(pDoc, "//table", 1); + // This was 2, the HTML header was in the document two times. + assertXPath(pDoc, "//meta[@name='generator']", 1); } #endif diff --git a/sw/source/filter/html/htmlplug.cxx b/sw/source/filter/html/htmlplug.cxx index 3155db1..3705a07 100644 --- a/sw/source/filter/html/htmlplug.cxx +++ b/sw/source/filter/html/htmlplug.cxx @@ -1281,6 +1281,7 @@ Writer& OutHTML_FrmFmtOLENodeGrf( Writer& rWrt, const SwFrmFmt& rFrmFmt, uno::Reference<io::XOutputStream> xOutputStream(new utl::OStreamWrapper(aStream)); utl::MediaDescriptor aMediaDescriptor; aMediaDescriptor["FilterName"] <<= aFilter; + aMediaDescriptor["FilterOptions"] <<= OUString("SkipHeaderFooter"); aMediaDescriptor["OutputStream"] <<= xOutputStream; xStorable->storeToURL("private:stream", aMediaDescriptor.getAsConstPropertyValueList()); OString aData(reinterpret_cast<const char*>(aStream.GetData()), aStream.GetSize()); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits