1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef _XMLOFF_XMLEXP_HXX 25 #define _XMLOFF_XMLEXP_HXX 26 27 #include "sal/config.h" 28 #include "xmloff/dllapi.h" 29 #include "sal/types.h" 30 31 #include <com/sun/star/embed/XStorage.hpp> 32 #include <com/sun/star/xml/sax/SAXParseException.hpp> 33 #include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp> 34 #include <com/sun/star/xml/sax/SAXException.hpp> 35 #include <com/sun/star/xml/sax/XDocumentHandler.hpp> 36 #include <com/sun/star/xml/sax/XAttributeList.hpp> 37 #include <com/sun/star/xml/sax/XLocator.hpp> 38 #include <com/sun/star/util/XNumberFormatsSupplier.hpp> 39 #include <com/sun/star/lang/XUnoTunnel.hpp> 40 #include <rtl/ustring.hxx> 41 #include <tools/mapunit.hxx> 42 #include <xmloff/txtparae.hxx> 43 #include <xmloff/formlayerexport.hxx> 44 #include <xmloff/xmlnumfe.hxx> 45 #include <xmloff/xmlaustp.hxx> 46 #include <xmloff/shapeexport.hxx> 47 #include <xmloff/xmltoken.hxx> 48 #include <xmloff/SchXMLExportHelper.hxx> 49 #include <xmloff/XMLFontAutoStylePool.hxx> 50 #include <com/sun/star/document/XFilter.hpp> 51 #include <com/sun/star/lang/XServiceInfo.hpp> 52 #include <com/sun/star/document/XExporter.hpp> 53 #ifndef _COM_SUN_STAR_DRAWING_XGRAPHICOBJECTRESOLVER_HPP_ 54 #include <com/sun/star/document/XGraphicObjectResolver.hpp> 55 #endif 56 #ifndef _COM_SUN_STAR_DRAWING_XEMBEDDEDOBJECTRESOLVER_HPP_ 57 #include <com/sun/star/document/XEmbeddedObjectResolver.hpp> 58 #endif 59 #include <com/sun/star/beans/XPropertySet.hpp> 60 #include <com/sun/star/lang/XInitialization.hpp> 61 #include <com/sun/star/lang/XEventListener.hpp> 62 #include <com/sun/star/container/XNamed.hpp> 63 64 #include <unotools/saveopt.hxx> 65 66 #include <xmloff/XMLPageExport.hxx> 67 #include <xmloff/ProgressBarHelper.hxx> 68 #include <cppuhelper/implbase6.hxx> 69 70 #include <list> 71 72 class SvXMLNamespaceMap; 73 class SvXMLAttributeList; 74 class SvXMLExport_Impl; 75 class SvXMLUnitConverter; 76 class ProgressBarHelper; 77 class XMLEventExport; 78 class XMLSettingsExportHelper; 79 class XMLImageMapExport; 80 class XMLErrors; 81 82 // --> OD 2006-03-14 #i51726# 83 #include <unotools/moduleoptions.hxx> 84 // <-- 85 86 namespace rtl { class OUString; } 87 namespace com { namespace sun { namespace star { 88 namespace uno { class XComponentContext; } 89 namespace frame { class XModel; } 90 namespace container { class XIndexContainer; } 91 } } } 92 namespace comphelper { class UnoInterfaceToUniqueIdentifierMapper; } 93 94 #define EXPORT_META 0x0001 95 #define EXPORT_STYLES 0x0002 96 #define EXPORT_MASTERSTYLES 0x0004 97 #define EXPORT_AUTOSTYLES 0x0008 98 #define EXPORT_CONTENT 0x0010 99 #define EXPORT_SCRIPTS 0x0020 100 #define EXPORT_SETTINGS 0x0040 101 #define EXPORT_FONTDECLS 0x0080 102 #define EXPORT_EMBEDDED 0x0100 103 #define EXPORT_NODOCTYPE 0x0200 104 #define EXPORT_PRETTY 0x0400 105 #define EXPORT_SAVEBACKWARDCOMPATIBLE 0x0800 106 #define EXPORT_OASIS 0x8000 107 #define EXPORT_ALL 0x7fff 108 109 class XMLOFF_DLLPUBLIC SvXMLExport : public ::cppu::WeakImplHelper6< 110 ::com::sun::star::document::XFilter, 111 ::com::sun::star::lang::XServiceInfo, 112 ::com::sun::star::document::XExporter, 113 ::com::sun::star::lang::XInitialization, 114 ::com::sun::star::container::XNamed, 115 ::com::sun::star::lang::XUnoTunnel> 116 { 117 SvXMLExport_Impl *mpImpl; // dummy 118 119 // #110680# 120 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxServiceFactory; 121 122 ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > mxModel; 123 ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > mxHandler; // the handlers 124 ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XExtendedDocumentHandler > mxExtHandler; 125 ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > mxNumberFormatsSupplier; 126 ::com::sun::star::uno::Reference< ::com::sun::star::document::XGraphicObjectResolver > mxGraphicResolver; 127 ::com::sun::star::uno::Reference< ::com::sun::star::document::XEmbeddedObjectResolver > mxEmbeddedResolver; 128 ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator > mxStatusIndicator; 129 ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > mxExportInfo; 130 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > mxEventListener; 131 132 SvXMLAttributeList *mpAttrList; // a common attribute list 133 ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > mxAttrList; // and an interface of it 134 135 ::rtl::OUString msOrigFileName; // the original URL 136 ::rtl::OUString msPicturesPath; 137 ::rtl::OUString msGraphicObjectProtocol; 138 ::rtl::OUString msEmbeddedObjectProtocol; 139 ::rtl::OUString msObjectsPath; 140 ::rtl::OUString msFilterName; 141 SvXMLNamespaceMap *mpNamespaceMap; // the namepspace map 142 SvXMLUnitConverter *mpUnitConv; // the unit converter 143 SvXMLNumFmtExport *mpNumExport; 144 ProgressBarHelper *mpProgressBarHelper; 145 146 UniReference< XMLTextParagraphExport > mxTextParagraphExport; 147 UniReference< XMLShapeExport > mxShapeExport; 148 UniReference< SvXMLAutoStylePoolP > mxAutoStylePool; 149 UniReference< SchXMLExportHelper > mxChartExport; 150 UniReference< XMLPageExport > mxPageExport; 151 UniReference< XMLFontAutoStylePool > mxFontAutoStylePool; 152 UniReference< xmloff::OFormLayerXMLExport > mxFormExport; 153 XMLEventExport* mpEventExport; 154 XMLImageMapExport* mpImageMapExport; 155 XMLErrors* mpXMLErrors; 156 157 sal_Bool mbExtended; // Does document contain extens. 158 159 const enum ::xmloff::token::XMLTokenEnum meClass; 160 SAL_DLLPRIVATE void _InitCtor(); 161 162 sal_uInt16 mnExportFlags; 163 sal_uInt16 mnErrorFlags; 164 bool mbEnableExperimentalOdfExport; 165 166 public: 167 168 const ::rtl::OUString msWS; // " " 169 170 private: 171 172 // --> OD 2006-03-10 #i51726# 173 SvtModuleOptions::EFactory meModelType; 174 SAL_DLLPRIVATE void _DetermineModelType(); 175 // <-- 176 177 SAL_DLLPRIVATE void ImplExportMeta(); // <office:meta> 178 SAL_DLLPRIVATE void ImplExportSettings(); // <office:settings> 179 SAL_DLLPRIVATE void ImplExportStyles( sal_Bool bUsed ); // <office:styles> 180 SAL_DLLPRIVATE void ImplExportAutoStyles( sal_Bool bUsed ); 181 // <office:automatic-styles> 182 SAL_DLLPRIVATE void ImplExportMasterStyles( sal_Bool bUsed ); 183 // <office:master-styles> 184 SAL_DLLPRIVATE void ImplExportContent(); // <office:body> 185 virtual void SetBodyAttributes(); 186 void GetViewSettingsAndViews(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rProps); 187 188 protected: 189 void setExportFlags( sal_uInt16 nExportFlags ) { mnExportFlags = nExportFlags; } 190 191 // Get (modifyable) namespace map 192 SvXMLNamespaceMap& _GetNamespaceMap() { return *mpNamespaceMap; } 193 194 // get a new namespave map (used in starmath to have a default namespace) 195 void ResetNamespaceMap(); 196 197 // This method can be overloaded to export the content of <office:meta>. 198 // There is a default implementation. 199 virtual void _ExportMeta(); 200 201 // This method can be overloaded to export the content of <office:scripts>. 202 // There is a default implementation. 203 virtual void _ExportScripts(); 204 205 // This method can be overloaded to export the font declarations 206 // The default implementation will export the contents of the 207 // XMLFontAutoStylePool if it has been created. 208 virtual void _ExportFontDecls(); 209 210 // This method should be overloaded to export the content of <style:styles>. 211 // If bUsed is set, used styles should be exported only. 212 // Overloaded Methods must call this method ! 213 virtual void _ExportStyles( sal_Bool bUsed ) ; 214 215 // This method must be overloaded to export the contents of 216 // <style:auto-styles> 217 virtual void _ExportAutoStyles() = 0; 218 219 // This method must be overloaded to export the contents of 220 // <style:master-styles> 221 virtual void _ExportMasterStyles() = 0; 222 223 // This method must be overloaded to export the content of <office:body>. 224 virtual void _ExportContent() = 0; 225 226 void SetExtended( sal_Bool bSet=sal_True ) { mbExtended = bSet; } 227 228 // save linked sections? (may be false in global documents) 229 sal_Bool mbSaveLinkedSections; 230 231 virtual XMLTextParagraphExport* CreateTextParagraphExport(); 232 virtual XMLShapeExport* CreateShapeExport(); 233 virtual SvXMLAutoStylePoolP* CreateAutoStylePool(); 234 virtual SchXMLExportHelper* CreateChartExport(); 235 virtual XMLPageExport* CreatePageExport(); 236 virtual XMLFontAutoStylePool* CreateFontAutoStylePool(); 237 virtual xmloff::OFormLayerXMLExport* CreateFormExport(); 238 virtual void GetViewSettings(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aProps); 239 virtual void GetConfigurationSettings(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aProps); 240 241 struct SettingsGroup 242 { 243 ::xmloff::token::XMLTokenEnum eGroupName; 244 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aSettings; 245 246 SettingsGroup() 247 :eGroupName( ::xmloff::token::XML_TOKEN_INVALID ) 248 ,aSettings() 249 { 250 } 251 252 SettingsGroup( 253 const ::xmloff::token::XMLTokenEnum _eGroupName, 254 const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rSettings ) 255 :eGroupName( _eGroupName ) 256 ,aSettings( _rSettings ) 257 { 258 } 259 }; 260 /** returns the current document settings 261 262 The default implementation will obtain the view settings by calling GetViewSettingsAndViews, and the 263 configuration settings by calling GetConfigurationSettings, and return them together with the proper XML token. 264 265 @return 266 the accumulated count of all settings in all groups 267 */ 268 virtual sal_Int32 GetDocumentSpecificSettings( ::std::list< SettingsGroup >& _out_rSettings ); 269 270 const ::com::sun::star::uno::Reference< ::com::sun::star::document::XEmbeddedObjectResolver >& GetEmbeddedResolver() const { return mxEmbeddedResolver; } 271 inline void SetEmbeddedResolver( com::sun::star::uno::Reference< com::sun::star::document::XEmbeddedObjectResolver >& _xEmbeddedResolver ); 272 273 const ::com::sun::star::uno::Reference< ::com::sun::star::document::XGraphicObjectResolver >& GetGraphicResolver() const { return mxGraphicResolver; } 274 void SetGraphicResolver( com::sun::star::uno::Reference< com::sun::star::document::XGraphicObjectResolver >& _xGraphicResolver ); 275 276 void SetDocHandler( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > &rHandler ); 277 278 public: 279 280 // #110680# 281 //SvXMLExport( MapUnit eDfltUnit, 282 // const enum ::xmloff::token::XMLTokenEnum eClass = xmloff::token::XML_TOKEN_INVALID, 283 // sal_uInt16 nExportFlag = EXPORT_ALL ); 284 SvXMLExport( 285 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory, 286 MapUnit eDfltUnit, 287 const enum ::xmloff::token::XMLTokenEnum eClass = xmloff::token::XML_TOKEN_INVALID, 288 sal_uInt16 nExportFlag = EXPORT_ALL ); 289 290 // #110680# 291 //SvXMLExport( const ::rtl::OUString& rFileName, 292 // const ::com::sun::star::uno::Reference< 293 // ::com::sun::star::xml::sax::XDocumentHandler > & rHandler, 294 // MapUnit eDfltUnit = MAP_INCH ); 295 SvXMLExport( 296 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory, 297 const ::rtl::OUString& rFileName, 298 const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > & rHandler, 299 MapUnit eDfltUnit = MAP_INCH ); 300 301 // #110680# 302 //SvXMLExport( const ::rtl::OUString& rFileName, 303 // const ::com::sun::star::uno::Reference< 304 // ::com::sun::star::xml::sax::XDocumentHandler > & rHandler, 305 // const ::com::sun::star::uno::Reference< 306 // ::com::sun::star::frame::XModel > &, 307 // sal_Int16 eDfltUnit ); 308 SvXMLExport( 309 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory, 310 const ::rtl::OUString& rFileName, 311 const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > & rHandler, 312 const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > &, 313 sal_Int16 eDfltUnit ); 314 315 // #110680# 316 //SvXMLExport( const ::rtl::OUString& rFileName, 317 // const ::com::sun::star::uno::Reference< 318 // ::com::sun::star::xml::sax::XDocumentHandler > & rHandler, 319 // const ::com::sun::star::uno::Reference< 320 // ::com::sun::star::frame::XModel > &, 321 // const ::com::sun::star::uno::Reference< 322 // ::com::sun::star::document::XGraphicObjectResolver > &, 323 // sal_Int16 eDfltUnit ); 324 SvXMLExport( 325 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory, 326 const ::rtl::OUString& rFileName, 327 const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > & rHandler, 328 const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > &, 329 const ::com::sun::star::uno::Reference< ::com::sun::star::document::XGraphicObjectResolver > &, 330 sal_Int16 eDfltUnit ); 331 332 virtual ~SvXMLExport(); 333 334 static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId() throw(); 335 static SvXMLExport* getImplementation( ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > ) throw(); 336 337 // XExporter 338 virtual void SAL_CALL setSourceDocument( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xDoc ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 339 340 // XFilter 341 virtual sal_Bool SAL_CALL filter( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aDescriptor ) throw(::com::sun::star::uno::RuntimeException); 342 virtual void SAL_CALL cancel() throw(::com::sun::star::uno::RuntimeException); 343 344 // XInitialization 345 virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 346 347 // XNamed 348 virtual ::rtl::OUString SAL_CALL getName( ) throw (::com::sun::star::uno::RuntimeException); 349 virtual void SAL_CALL setName( const ::rtl::OUString& aName ) throw (::com::sun::star::uno::RuntimeException); 350 351 // XServiceInfo 352 virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException); 353 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); 354 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException); 355 356 // XUnoTunnel 357 virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException); 358 359 /** ensures that the given namespace is in scope at the next started 360 element. 361 362 <p>If the namespace is not yet declared, the necessary attribute will 363 be added, as well.</p> 364 365 @param i_rNamespace the namespace to be declared 366 @param i_rPreferredPrefix (opt.) preferred prefix for the namespace 367 368 @returns the actual prefix that the namespace is associated with 369 */ 370 ::rtl::OUString 371 EnsureNamespace(::rtl::OUString const & i_rNamespace, 372 ::rtl::OUString const & i_rPreferredPrefix 373 = ::rtl::OUString::createFromAscii("gen") ); 374 375 // Check if common attribute list is empty. 376 #ifndef DBG_UTIL 377 void CheckAttrList() {} 378 #else 379 void CheckAttrList(); 380 #endif 381 382 // Clear common attribute list. 383 void ClearAttrList(); 384 385 // Add an attribute to the common attribute list. 386 void AddAttributeASCII( sal_uInt16 nPrefix, const sal_Char *pName, 387 const sal_Char *pValue ); 388 void AddAttribute( sal_uInt16 nPrefix, const sal_Char *pName, 389 const ::rtl::OUString& rValue ); 390 void AddAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rName, 391 const ::rtl::OUString& rValue ); 392 void AddAttribute( sal_uInt16 nPrefix, 393 enum ::xmloff::token::XMLTokenEnum eName, 394 const ::rtl::OUString& rValue ); 395 void AddAttribute( sal_uInt16 nPrefix, 396 enum ::xmloff::token::XMLTokenEnum eName, 397 enum ::xmloff::token::XMLTokenEnum eValue ); 398 void AddAttribute( const ::rtl::OUString& rQName, 399 const ::rtl::OUString& rValue ); 400 void AddAttribute( const ::rtl::OUString& rQName, 401 enum ::xmloff::token::XMLTokenEnum eValue ); 402 // add several attributes to the common attribute list 403 void AddAttributeList( const ::com::sun::star::uno::Reference< 404 ::com::sun::star::xml::sax::XAttributeList >& xAttrList ); 405 406 // Get common attribute list as implementation or interface. 407 SvXMLAttributeList &GetAttrList() { return *mpAttrList; } 408 const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & GetXAttrList() { return mxAttrList; } 409 410 // Get document handler. This methods are not const, because the 411 // reference allowes modifications through the handler. 412 const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > & GetDocHandler() { return mxHandler; } 413 const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XExtendedDocumentHandler > & GetExtDocHandler() 414 { 415 return mxExtHandler; 416 } 417 418 // Get original ::com::sun::star::util::URL. 419 const ::rtl::OUString& GetOrigFileName() const { return msOrigFileName; } 420 421 // Get the relative path for embedded pictures 422 const ::rtl::OUString& GetPicturesPath() const { return msPicturesPath; } 423 424 // Get the relative path for embedded objects 425 const ::rtl::OUString& GetObjectsPath() const { return msObjectsPath; } 426 427 // Get (const) namespace map. 428 const SvXMLNamespaceMap& GetNamespaceMap() const { return *mpNamespaceMap; } 429 430 // Get unit converter 431 const SvXMLUnitConverter& GetMM100UnitConverter() const { return *mpUnitConv; } 432 433 SvXMLUnitConverter& GetMM100UnitConverter() { return *mpUnitConv; } 434 435 // Export the document. 436 virtual sal_uInt32 exportDoc( enum ::xmloff::token::XMLTokenEnum eClass = ::xmloff::token::XML_TOKEN_INVALID ); 437 438 virtual void addDataStyle(const sal_Int32 nNumberFormat, sal_Bool bTimeFormat = sal_False ); 439 virtual void exportDataStyles(); 440 virtual void exportAutoDataStyles(); 441 virtual rtl::OUString getDataStyleName(const sal_Int32 nNumberFormat, sal_Bool bTimeFormat = sal_False ) const; 442 sal_Int32 dataStyleForceSystemLanguage(sal_Int32 nFormat) const; 443 444 virtual void exportAnnotationMeta( const com::sun::star::uno::Reference < com::sun::star::drawing::XShape >& xShape); 445 446 // Get XModel 447 const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & 448 GetModel() const { return mxModel; } 449 // Get XNumberFormatsSupplier 450 ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > & GetNumberFormatsSupplier() { return mxNumberFormatsSupplier; } 451 inline void SetNumberFormatsSupplier(const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >& _xNumberFormatSupplier) 452 { 453 mxNumberFormatsSupplier = _xNumberFormatSupplier; 454 if ( mxNumberFormatsSupplier.is() && mxHandler.is() ) 455 mpNumExport = new SvXMLNumFmtExport(*this, mxNumberFormatsSupplier); 456 } 457 458 // get export helper for text 459 inline UniReference< XMLTextParagraphExport > GetTextParagraphExport(); 460 461 // get export helper for shapes 462 inline UniReference< XMLShapeExport > GetShapeExport(); 463 464 // get auto style pool 465 inline UniReference< SvXMLAutoStylePoolP > GetAutoStylePool(); 466 467 // get Page Export 468 inline UniReference< XMLPageExport > GetPageExport(); 469 470 // get chart export helper 471 inline UniReference< SchXMLExportHelper > GetChartExport(); 472 473 // get font auto style pool 474 inline UniReference< XMLFontAutoStylePool > GetFontAutoStylePool(); 475 476 ProgressBarHelper* GetProgressBarHelper(); 477 478 // get Formlayer Export 479 inline UniReference< xmloff::OFormLayerXMLExport > GetFormExport(); 480 inline bool HasFormExport(); 481 482 // get XPropertySet with export information 483 inline ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > getExportInfo() const { return mxExportInfo; } 484 485 com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > GetStatusIndicator() { return mxStatusIndicator; } 486 487 /// get Event export, with handlers for script types "None" and 488 /// "StarBasic" already registered; other handlers may be registered, too. 489 XMLEventExport& GetEventExport(); 490 491 /// get the export for image maps 492 XMLImageMapExport& GetImageMapExport(); 493 494 ::rtl::OUString AddEmbeddedGraphicObject( 495 const ::rtl::OUString& rGraphicObjectURL ); 496 sal_Bool AddEmbeddedGraphicObjectAsBase64( 497 const ::rtl::OUString& rGraphicObjectURL ); 498 499 ::rtl::OUString AddEmbeddedObject( 500 const ::rtl::OUString& rEmbeddedObjectURL ); 501 sal_Bool AddEmbeddedObjectAsBase64( 502 const ::rtl::OUString& rEmbeddedObjectURL ); 503 504 ::rtl::OUString EncodeStyleName( const ::rtl::OUString& rName, 505 sal_Bool *pEncoded=0 ) const; 506 507 // save linked sections? 508 inline sal_Bool IsSaveLinkedSections() { return mbSaveLinkedSections; } 509 510 // get export flags 511 sal_uInt16 getExportFlags() const { return mnExportFlags; } 512 513 sal_Bool ExportEmbeddedOwnObject( 514 ::com::sun::star::uno::Reference< 515 ::com::sun::star::lang::XComponent >& rComp ); 516 517 rtl::OUString GetRelativeReference(const rtl::OUString& rValue); 518 519 // methods for accessing the document handler and handling SAX errors 520 void StartElement(sal_uInt16 nPrefix, 521 enum ::xmloff::token::XMLTokenEnum eName, 522 sal_Bool bIgnWSOutside ); 523 void StartElement(const ::rtl::OUString& rName, 524 sal_Bool bIgnWSOutside ); 525 void Characters(const ::rtl::OUString& rChars); 526 void EndElement(sal_uInt16 nPrefix, 527 enum ::xmloff::token::XMLTokenEnum eName, 528 sal_Bool bIgnWSInside ); 529 void EndElement(const ::rtl::OUString& rName, 530 sal_Bool bIgnWSInside ); 531 void IgnorableWhitespace(); 532 533 /** 534 * Record an error condition that occured during export. The 535 * behavior of SetError can be modified using the error flag 536 * constants. 537 */ 538 void SetError( 539 /// error ID, may contain an error flag 540 sal_Int32 nId, 541 /// string parameters for the error message 542 const ::com::sun::star::uno::Sequence< ::rtl::OUString> & rMsgParams, 543 /// original exception message (if applicable) 544 const ::rtl::OUString& rExceptionMessage, 545 /// error location (if applicable) 546 const ::com::sun::star::uno::Reference< 547 ::com::sun::star::xml::sax::XLocator> & rLocator ); 548 549 void SetError( 550 sal_Int32 nId, 551 const ::com::sun::star::uno::Sequence< ::rtl::OUString> & rMsgParams); 552 553 /** return list of errors */ 554 XMLErrors* GetErrors(); 555 556 /** return current error flags (logical 'or' of all error flags so far) */ 557 sal_uInt16 GetErrorFlags() { return mnErrorFlags; } 558 559 virtual void DisposingModel(); 560 561 ::comphelper::UnoInterfaceToUniqueIdentifierMapper& getInterfaceToIdentifierMapper(); 562 563 // #110680# 564 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > getServiceFactory(); 565 566 ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > 567 GetComponentContext() const; 568 569 // --> OD 2006-03-10 #i51726# 570 SvtModuleOptions::EFactory GetModelType() const 571 { 572 return meModelType; 573 } 574 // <-- 575 576 // --> OD 2006-09-27 #i69627# 577 sal_Bool writeOutlineStyleAsNormalListStyle() const; 578 // <-- 579 bool isExperimentalOdfExportEnabled() const { return mbEnableExperimentalOdfExport; } 580 581 ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > GetTargetStorage(); 582 583 /// returns the currently configured default version for odf export 584 SvtSaveOptions::ODFDefaultVersion getDefaultVersion() const; 585 586 /// name of stream in package, e.g., "content.xml" 587 ::rtl::OUString GetStreamName() const; 588 589 // FIXME: this is only for legacy stuff that has not yet been adapted 590 // to implement XMetadatable; this can write duplicate IDs! 591 /// add xml:id and legacy namespace id 592 void SAL_DLLPRIVATE AddAttributeIdLegacy( 593 sal_uInt16 const nLegacyPrefix, ::rtl::OUString const& rValue); 594 595 /// add xml:id attribute (for RDF metadata) 596 void AddAttributeXmlId(::com::sun::star::uno::Reference< 597 ::com::sun::star::uno::XInterface> const & i_xIfc); 598 599 /// add RDFa attributes for a metadatable text content 600 void AddAttributesRDFa( ::com::sun::star::uno::Reference< 601 ::com::sun::star::text::XTextContent> const & i_xTextContent); 602 603 // --> OD 2008-11-26 #158694# 604 sal_Bool exportTextNumberElement() const; 605 // <-- 606 607 /// set null date from model to unit converter, if not already done 608 sal_Bool SetNullDateOnUnitConverter(); 609 }; 610 611 inline UniReference< XMLTextParagraphExport > SvXMLExport::GetTextParagraphExport() 612 { 613 if( !mxTextParagraphExport.is() ) 614 mxTextParagraphExport = CreateTextParagraphExport(); 615 616 return mxTextParagraphExport; 617 } 618 619 inline UniReference< XMLShapeExport > SvXMLExport::GetShapeExport() 620 { 621 if( !mxShapeExport.is() ) 622 mxShapeExport = CreateShapeExport(); 623 624 return mxShapeExport; 625 } 626 627 inline UniReference< SvXMLAutoStylePoolP > SvXMLExport::GetAutoStylePool() 628 { 629 if( !mxAutoStylePool.is() ) 630 mxAutoStylePool = CreateAutoStylePool(); 631 632 return mxAutoStylePool; 633 } 634 635 inline UniReference< SchXMLExportHelper > SvXMLExport::GetChartExport() 636 { 637 if( !mxChartExport.is() ) 638 mxChartExport = CreateChartExport(); 639 640 return mxChartExport; 641 } 642 643 inline UniReference< XMLPageExport > SvXMLExport::GetPageExport() 644 { 645 if( !mxPageExport.is() ) 646 mxPageExport = CreatePageExport(); 647 648 return mxPageExport; 649 } 650 651 inline UniReference< XMLFontAutoStylePool > SvXMLExport::GetFontAutoStylePool() 652 { 653 if( !mxFontAutoStylePool.is() ) 654 mxFontAutoStylePool = CreateFontAutoStylePool(); 655 656 return mxFontAutoStylePool; 657 } 658 659 inline UniReference< xmloff::OFormLayerXMLExport > SvXMLExport::GetFormExport() 660 { 661 if( !mxFormExport.is() ) 662 mxFormExport = CreateFormExport(); 663 664 return mxFormExport; 665 } 666 667 inline bool SvXMLExport::HasFormExport() 668 { 669 return mxFormExport.is(); 670 } 671 672 inline void SvXMLExport::SetEmbeddedResolver( 673 com::sun::star::uno::Reference< com::sun::star::document::XEmbeddedObjectResolver >& _xEmbeddedResolver ) 674 { 675 mxEmbeddedResolver = _xEmbeddedResolver; 676 } 677 678 inline void SvXMLExport::SetGraphicResolver( 679 com::sun::star::uno::Reference< com::sun::star::document::XGraphicObjectResolver >& _xGraphicResolver ) 680 { 681 mxGraphicResolver = _xGraphicResolver; 682 } 683 684 // Helper class to export an element. 685 class XMLOFF_DLLPUBLIC SvXMLElementExport 686 { 687 SvXMLExport& rExport; 688 ::rtl::OUString aName; 689 sal_Bool bIgnWS : 1; 690 sal_Bool bDoSomething : 1; 691 692 SAL_DLLPRIVATE void StartElement( SvXMLExport& rExp, sal_uInt16 nPrefix, 693 const ::rtl::OUString& rName, 694 sal_Bool bIgnWSOutside ); 695 696 public: 697 698 // The constructor prints a start tag that has the common attributes 699 // of the XMLExport instance attached. 700 SvXMLElementExport( SvXMLExport& rExp, sal_uInt16 nPrefix, 701 const sal_Char *pName, 702 sal_Bool bIgnWSOutside, sal_Bool bIgnWSInside ); 703 SvXMLElementExport( SvXMLExport& rExp, sal_uInt16 nPrefix, 704 const ::rtl::OUString& rName, 705 sal_Bool bIgnWSOutside, sal_Bool bIgnWSInside ); 706 SvXMLElementExport( SvXMLExport& rExp, sal_uInt16 nPrefix, 707 enum ::xmloff::token::XMLTokenEnum eName, 708 sal_Bool bIgnWSOutside, sal_Bool bIgnWSInside ); 709 SvXMLElementExport( SvXMLExport& rExp, const ::rtl::OUString& rQName, 710 sal_Bool bIgnWSOutside, sal_Bool bIgnWSInside ); 711 712 // Thes constructors do nothing if bDoSomething is not set 713 SvXMLElementExport( SvXMLExport& rExp, sal_Bool bDoSomething, 714 sal_uInt16 nPrefix, const sal_Char *pName, 715 sal_Bool bIgnWSOutside, sal_Bool bIgnWSInside ); 716 SvXMLElementExport( SvXMLExport& rExp, sal_Bool bDoSomething, 717 sal_uInt16 nPrefix, const ::rtl::OUString& rName, 718 sal_Bool bIgnWSOutside, sal_Bool bIgnWSInside ); 719 SvXMLElementExport( SvXMLExport& rExp, sal_Bool bDoSomething, 720 sal_uInt16 nPrefix, 721 enum ::xmloff::token::XMLTokenEnum eName, 722 sal_Bool bIgnWSOutside, sal_Bool bIgnWSInside ); 723 724 // The destructor prints an end tag. 725 ~SvXMLElementExport(); 726 }; 727 728 #endif // _XMLOFF_SVXMLEXP_HXX 729 730