20#include <config_java.h>
23#include <rtl/strbuf.hxx>
61#include <com/sun/star/embed/XClassifiedObject.hpp>
62#include <com/sun/star/embed/Aspects.hpp>
63#include <com/sun/star/beans/XPropertySet.hpp>
64#include <com/sun/star/frame/XStorable.hpp>
65#include <com/sun/star/embed/ElementModes.hpp>
66#include <com/sun/star/io/XActiveDataStreamer.hpp>
67#include <com/sun/star/embed/XEmbedPersist2.hpp>
68#include <com/sun/star/lang/XInitialization.hpp>
80#include <osl/file.hxx>
87#define HTML_DFLT_EMBED_WIDTH (o3tl::toTwips(125, o3tl::Length::mm10))
88#define HTML_DFLT_EMBED_HEIGHT (o3tl::toTwips(125, o3tl::Length::mm10))
90#define HTML_DFLT_APPLET_WIDTH (o3tl::toTwips(125, o3tl::Length::mm10))
91#define HTML_DFLT_APPLET_HEIGHT (o3tl::toTwips(125, o3tl::Length::mm10))
146OUString lcl_CalculateFileName(
const OUString* pOrigFileName,
const Graphic& rGraphic,
147 std::u16string_view rExtension)
152 aFileName = *pOrigFileName;
155 aURL.getExtension() +
"_" +
158 aURL.setExtension(rExtension);
166 const Size& rTwipDfltSize,
167 bool bPercentWidth,
bool bPercentHeight,
172 sal_uInt8 nPercentWidth = 0, nPercentHeight = 0;
173 Size aTwipSz( bPercentWidth || USHRT_MAX==rPixSize.
Width() ? 0 : rPixSize.
Width(),
174 bPercentHeight || USHRT_MAX==rPixSize.
Height() ? 0 : rPixSize.
Height() );
192 else if( bPercentWidth && rPixSize.
Width() )
200 else if( USHRT_MAX==rPixSize.
Width() )
219 else if( bPercentHeight && rPixSize.
Height() )
223 nPercentHeight = 100;
227 else if( USHRT_MAX==rPixSize.
Height() )
240 rFlyItemSet.
Put( aFrameSize );
248 sal_Int32 nLeftSpace = 0, nRightSpace = 0;
249 sal_uInt16 nUpperSpace = 0, nLowerSpace = 0;
256 nLeftSpace = nRightSpace = aTwipSpc.
Width();
257 nUpperSpace = nLowerSpace = o3tl::narrowing<sal_uInt16>(aTwipSpc.
Height());
267 nLeftSpace = pLeft->GetTextLeft();
276 nRightSpace = pRight->GetRight();
281 if( nLeftSpace > 0 || nRightSpace > 0 )
284 aLRItem.
SetLeft( std::max<sal_Int32>(nLeftSpace, 0) );
285 aLRItem.
SetRight( std::max<sal_Int32>(nRightSpace, 0) );
286 rFlyItemSet.
Put( aLRItem );
295 rFlyItemSet.
Put( aHoriOri );
306 nUpperSpace = pULItem->GetUpper();
311 nLowerSpace = pULItem->GetLower();
316 if( !(nUpperSpace || nLowerSpace) )
322 rFlyItemSet.
Put( aULItem );
331 rFlyItemSet.
Put( aVertOri );
341 sal_Int32
nIndex = rPath.indexOf(
'?');
344 return rPath.copy(0,
nIndex);
351 OUString
aURL, aType,
aName, aAlt, aId, aStyle, aClass;
353 Size aSize( USHRT_MAX, USHRT_MAX );
354 Size aSpace( USHRT_MAX, USHRT_MAX );
355 bool bPercentWidth =
false, bPercentHeight =
false, bHidden =
false;
363 for (
const auto & rOption : rHTMLOptions)
365 switch( rOption.GetToken() )
367 case HtmlOptionId::ID:
368 aId = rOption.GetString();
370 case HtmlOptionId::STYLE:
371 aStyle = rOption.GetString();
373 case HtmlOptionId::CLASS:
374 aClass = rOption.GetString();
376 case HtmlOptionId::NAME:
377 aName = rOption.GetString();
379 case HtmlOptionId::SRC:
381 aURL = rOption.GetString();
383 case HtmlOptionId::ALT:
384 aAlt = rOption.GetString();
386 case HtmlOptionId::TYPE:
387 if( aType.isEmpty() )
388 aType = rOption.GetString();
390 case HtmlOptionId::ALIGN:
397 case HtmlOptionId::WIDTH:
398 if( USHRT_MAX==aSize.
Width() )
400 bPercentWidth = (rOption.GetString().indexOf(
'%') != -1);
404 case HtmlOptionId::HEIGHT:
405 if( USHRT_MAX==aSize.
Height() )
407 bPercentHeight = (rOption.GetString().indexOf(
'%') != -1);
411 case HtmlOptionId::HSPACE:
412 if( USHRT_MAX==aSpace.
Width() )
415 case HtmlOptionId::VSPACE:
416 if( USHRT_MAX==aSpace.
Height() )
419 case HtmlOptionId::DATA:
421 aData = rOption.GetString();
423 case HtmlOptionId::UNKNOWN:
424 if (rOption.GetTokenString().equalsIgnoreAsciiCase(
427 bHidden = !rOption.GetString().equalsIgnoreAsciiCase(
435 aCmdLst.
Append( rOption.GetTokenString(), rOption.GetString() );
438 static const std::set<std::u16string_view> vAllowlist = {
452 if (vAllowlist.find(aType) != vAllowlist.end() &&
m_aEmbeds.empty())
466 eVertOri = text::VertOrientation::TOP;
467 if( USHRT_MAX==aSpace.
Width() )
469 if( USHRT_MAX==aSpace.
Height() )
476 bPercentWidth = bPercentHeight =
false;
481 bool bHasURL = !
aURL.isEmpty() &&
486 bool bHasData = !
aData.isEmpty();
492 aURLObj.
SetURL(rtl::Uri::convertRelToAbs(
495 catch (
const rtl::MalformedUriException& )
501 bool bHasType = !aType.isEmpty();
502 if( !bHasURL && !bHasType && !bHasData )
531 if (aSize.
Width() == USHRT_MAX && bPercentHeight)
535 bPercentWidth =
true;
537 if (aSize.
Height() == USHRT_MAX && bPercentWidth)
541 bPercentHeight =
true;
544 SetFixSize(aSize, aDefaultTwipSize, bPercentWidth, bPercentHeight, aPropInfo, aAttrSet);
552 uno::Reference < embed::XEmbeddedObject > xObj;
558 uno::Reference < beans::XPropertySet > xSet( xObj->getComponent(), uno::UNO_QUERY );
564 xSet->setPropertyValue(
"PluginMimeType",
uno::Any( aType ) );
566 uno::Sequence < beans::PropertyValue > aProps;
568 xSet->setPropertyValue(
"PluginCommands",
uno::Any( aProps ) );
576 uno::Reference<embed::XStorage> xStorage = pDocSh->GetStorage();
582 uno::Reference<io::XInputStream> xInStream;
590 OString aMagic(
"{\\object");
593 if (aHeader == aMagic)
596 bool bOwnFormat =
false;
605 { {
"InputStream",
uno::Any(xInStream) },
606 {
"URL",
uno::Any(OUString(
"private:stream")) },
613 aType =
"application/vnd.sun.star.oleobject";
629 uno::Reference<io::XStream> xOutStream
630 = xStorage->openStreamElement(aObjName, embed::ElementModes::READWRITE);
633 xOutStream->getOutputStream());
635 if (!aType.isEmpty())
638 uno::Reference<beans::XPropertySet> xOutStreamProps(xOutStream, uno::UNO_QUERY);
639 if (xOutStreamProps.is())
640 xOutStreamProps->setPropertyValue(
"MediaType",
uno::Any(aType));
660 aFrameSet.Put( aAnchor );
661 aFrameSet.Put(
SwFormatHoriOrient( 0, text::HoriOrientation::LEFT, text::RelOrientation::FRAME) );
663 aFrameSet.Put(
SwFormatVertOrient( 0, text::VertOrientation::TOP, text::RelOrientation::PRINT_AREA ) );
668 SetFixSize( aSize, aDfltSz, bPercentWidth, bPercentHeight, aPropInfo, aFrameSet );
669 SetSpace( aSpace, aItemSet, aPropInfo, aFrameSet );
672 uno::Reference<lang::XInitialization> xObjInitialization(xObj, uno::UNO_QUERY);
673 if (xObjInitialization.is())
683 m_xDoc->getIDocumentContentOperations().InsertEmbObject(*
m_pPam,
686 if (xObjInitialization.is())
695 if( !
aName.isEmpty() )
726void SwHTMLParser::NewObject()
729 OUString aStandBy, aId, aStyle, aClass;
730 Size aSize( USHRT_MAX, USHRT_MAX );
732 sal_Int16 eVertOri = text::VertOrientation::TOP;
735 bool bPercentWidth =
false, bPercentHeight =
false,
741 for (
size_t i = rHTMLOptions.size(); i; )
746 case HtmlOptionId::ID:
749 case HtmlOptionId::STYLE:
752 case HtmlOptionId::CLASS:
755 case HtmlOptionId::DECLARE:
758 case HtmlOptionId::CLASSID:
761 case HtmlOptionId::CODEBASE:
763 case HtmlOptionId::DATA:
765 case HtmlOptionId::TYPE:
767 case HtmlOptionId::CODETYPE:
769 case HtmlOptionId::ARCHIVE:
770 case HtmlOptionId::UNKNOWN:
772 case HtmlOptionId::STANDBY:
775 case HtmlOptionId::WIDTH:
776 bPercentWidth = (rOption.
GetString().indexOf(
'%') != -1);
779 case HtmlOptionId::HEIGHT:
780 bPercentHeight = (rOption.
GetString().indexOf(
'%') != -1);
783 case HtmlOptionId::ALIGN:
787 case HtmlOptionId::USEMAP:
789 case HtmlOptionId::NAME:
791 case HtmlOptionId::HSPACE:
794 case HtmlOptionId::VSPACE:
797 case HtmlOptionId::BORDER:
800 case HtmlOptionId::SDONCLICK:
801 case HtmlOptionId::ONCLICK:
802 case HtmlOptionId::SDONMOUSEOVER:
803 case HtmlOptionId::ONMOUSEOVER:
804 case HtmlOptionId::SDONMOUSEOUT:
805 case HtmlOptionId::ONMOUSEOUT:
817 bool bIsApplet =
false;
819 if( !bDeclare &&
aClassID.getLength() == 42 &&
824 if( aCID.
MakeId( aClassID ) )
826 SvGlobalName aJavaCID( 0x8AD9C840UL, 0x044EU, 0x11D1U, 0xB3U, 0xE9U,
827 0x00U, 0x80U, 0x5FU, 0x49U, 0x9DU, 0x93U );
829 bIsApplet = aJavaCID == aCID;
855 SetFixSize( aSize, aDfltSz, bPercentWidth, bPercentHeight, aPropInfo, rFrameSet );
856 SetSpace( aSpace, aItemSet, aPropInfo, rFrameSet );
872 m_xDoc->getIDocumentContentOperations().InsertEmbObject(*
m_pPam,
892void SwHTMLParser::InsertApplet()
894 OUString aCodeBase, aCode,
aName, aAlt, aId, aStyle, aClass;
895 Size aSize( USHRT_MAX, USHRT_MAX );
897 bool bPercentWidth =
false, bPercentHeight =
false, bMayScript =
false;
898 sal_Int16 eVertOri = text::VertOrientation::TOP;
905 for (
size_t i = rHTMLOptions.size(); i; )
910 case HtmlOptionId::ID:
913 case HtmlOptionId::STYLE:
916 case HtmlOptionId::CLASS:
919 case HtmlOptionId::CODEBASE:
922 case HtmlOptionId::CODE:
925 case HtmlOptionId::NAME:
928 case HtmlOptionId::ALT:
931 case HtmlOptionId::ALIGN:
935 case HtmlOptionId::WIDTH:
936 bPercentWidth = (rOption.
GetString().indexOf(
'%') != -1);
939 case HtmlOptionId::HEIGHT:
940 bPercentHeight = (rOption.
GetString().indexOf(
'%') != -1);
943 case HtmlOptionId::HSPACE:
946 case HtmlOptionId::VSPACE:
949 case HtmlOptionId::MAYSCRIPT:
960 if( aCode.isEmpty() )
966 if ( !aCodeBase.isEmpty() )
985 SetFixSize( aSize, aDfltSz, bPercentWidth, bPercentHeight, aPropInfo, rFrameSet );
986 SetSpace( aSpace, aItemSet, aPropInfo, rFrameSet );
1000 m_xDoc->getIDocumentContentOperations().InsertEmbObject(*
m_pPam,
1021#if HAVE_FEATURE_JAVA
1025 OUString
aName, aValue;
1028 for (
size_t i = rHTMLOptions.size();
i; )
1033 case HtmlOptionId::NAME:
1036 case HtmlOptionId::VALUE:
1043 if(
aName.isEmpty() )
1054 OUString aAlt, aId, aStyle, aClass;
1055 Size aSize( USHRT_MAX, USHRT_MAX );
1056 Size aSpace( 0, 0 );
1057 bool bPercentWidth =
false, bPercentHeight =
false;
1058 sal_Int16 eVertOri = text::VertOrientation::TOP;
1064 for (
const auto & rOption : rHTMLOptions)
1068 case HtmlOptionId::ID:
1071 case HtmlOptionId::STYLE:
1074 case HtmlOptionId::CLASS:
1077 case HtmlOptionId::ALT:
1080 case HtmlOptionId::ALIGN:
1084 case HtmlOptionId::WIDTH:
1085 bPercentWidth = (rOption.
GetString().indexOf(
'%') != -1);
1088 case HtmlOptionId::HEIGHT:
1089 bPercentHeight = (rOption.
GetString().indexOf(
'%') != -1);
1092 case HtmlOptionId::HSPACE:
1095 case HtmlOptionId::VSPACE:
1117 uno::Reference < beans::XPropertySet > xSet( xObj->getComponent(), uno::UNO_QUERY );
1127 if (
INetURLObject(sHRef).GetProtocol() == INetProtocol::Macro)
1130 xSet->setPropertyValue(
"FrameURL",
uno::Any( sHRef ) );
1133 if ( eScroll == ScrollingMode::Auto )
1134 xSet->setPropertyValue(
"FrameIsAutoScroll",
1137 xSet->setPropertyValue(
"FrameIsScrollingMode",
1138 uno::Any( eScroll == ScrollingMode::Yes ) );
1140 xSet->setPropertyValue(
"FrameIsBorder",
1143 xSet->setPropertyValue(
"FrameMarginWidth",
1146 xSet->setPropertyValue(
"FrameMarginHeight",
1151 catch ( uno::Exception& )
1170 SetFixSize( aSize, aDfltSz, bPercentWidth, bPercentHeight, aPropInfo, aFrameSet );
1171 SetSpace( aSpace, aItemSet, aPropInfo, aFrameSet );
1175 m_xDoc->getIDocumentContentOperations().InsertEmbObject(*
m_pPam,
1198 assert(pOLENode &&
"must exist");
1201 uno::Reference < embed::XClassifiedObject > xClass = rObj.
GetOleRef();
1211#if HAVE_FEATURE_JAVA
1218 return static_cast< sal_uInt16
>(
eType);
1228 OSL_ENSURE( pOLENd,
"OLE-Node expected" );
1234 uno::Reference < embed::XEmbeddedObject > xObj( rObj.
GetOleRef() );
1238 uno::Reference < beans::XPropertySet > xSet( xObj->getComponent(), uno::UNO_QUERY );
1239 bool bHiddenEmbed =
false;
1243 OSL_FAIL(
"Unknown Object" );
1253 if( !rFrameFormat.
GetName().isEmpty() )
1258 OStringBuffer sOut(
"<");
1266 aAny = xSet->getPropertyValue(
"PluginURL");
1267 if( (aAny >>=
aStr) && !
aStr.isEmpty() )
1273 if( !
aURL.isEmpty() )
1283 aAny = xSet->getPropertyValue(
"PluginMimeType");
1284 if( (aAny >>= aType) && !aType.isEmpty() )
1299 bHiddenEmbed =
true;
1315 aAny = xSet->getPropertyValue(
"AppletCodeBase");
1316 if( (aAny >>= aCd) && !aCd.isEmpty() )
1319 if( !sCodeBase.isEmpty() )
1331 aAny = xSet->getPropertyValue(
"AppletCode");
1340 OUString aAppletName;
1341 aAny = xSet->getPropertyValue(
"AppletName");
1342 aAny >>= aAppletName;
1343 if( !aAppletName.isEmpty() )
1352 bool bScript =
false;
1353 aAny = xSet->getPropertyValue(
"AppletIsScript");
1391 uno::Sequence < beans::PropertyValue > aProps;
1392 aAny = xSet->getPropertyValue(
"AppletCommands");
1397 std::vector<sal_uLong> aParams;
1398 size_t i = aCommands.
size();
1401 const SvCommand& rCommand = aCommands[ --
i ];
1402 const OUString& rName = rCommand.
GetCommand();
1414 aParams.push_back(
i );
1422 size_t ii = aParams.size();
1425 const SvCommand& rCommand = aCommands[ aParams[--ii] ];
1426 const OUString& rName = rCommand.
GetCommand();
1443 if( aCommands.
size() )
1451 uno::Sequence < beans::PropertyValue > aProps;
1452 aAny = xSet->getPropertyValue(
"PluginCommands");
1457 for(
size_t i = 0;
i < aCommands.
size();
i++ )
1460 const OUString& rName = rCommand.
GetCommand();
1481 if( !aEndTags.isEmpty() )
1494 OSL_ENSURE( pOLENd,
"OLE-Node expected" );
1503 uno::Reference<document::XEmbeddedObjectSupplier2> xEmbeddedObjectSupplier(xTextContent, uno::UNO_QUERY);
1504 uno::Reference<frame::XStorable> xStorable(xEmbeddedObjectSupplier->getEmbeddedObject(), uno::UNO_QUERY);
1505 SAL_WARN_IF(!xStorable.is(),
"sw.html",
"OutHTML_FrameFormatOLENodeGrf: no embedded object");
1508 uno::Reference<lang::XServiceInfo> xServiceInfo(xStorable, uno::UNO_QUERY);
1510 if (xServiceInfo.is())
1512 if (xServiceInfo->supportsService(
"com.sun.star.sheet.SpreadsheetDocument"))
1513 aFilter =
"HTML (StarCalc)";
1514 else if (xServiceInfo->supportsService(
"com.sun.star.text.TextDocument"))
1515 aFilter =
"HTML (StarWriter)";
1518 if (xStorable.is() && !aFilter.isEmpty())
1526 aMediaDescriptor[
"FilterName"] <<= aFilter;
1527 aMediaDescriptor[
"FilterOptions"] <<= OUString(
"SkipHeaderFooter");
1528 aMediaDescriptor[
"OutputStream"] <<= xOutputStream;
1529 xStorable->storeToURL(
"private:stream", aMediaDescriptor.getAsConstPropertyValueList());
1531 OString
aData(
static_cast<const char*
>(aStream.
GetData()),
static_cast<sal_Int32
>(aStream.
GetSize()));
1537 catch ( uno::Exception& )
1547 SAL_WARN(
"sw.html",
"Unexpected missing OLE fallback graphic");
1554 bool bObjectOpened =
false;
1555 OUString aRTFType =
"text/rtf";
1567 OUString aFileName = lcl_CalculateFileName(rWrt.
GetOrigFileName(), aGraphic,
u"ole");
1571 uno::Reference<embed::XEmbeddedObject> xEmbeddedObject = rOLEObj.
GetOleRef();
1574 uno::Reference<io::XActiveDataStreamer> xStreamProvider;
1575 uno::Reference<embed::XEmbedPersist2> xOwnEmbedded;
1576 if (xEmbeddedObject.is())
1578 xStreamProvider.set(xEmbeddedObject, uno::UNO_QUERY);
1579 xOwnEmbedded.set(xEmbeddedObject, uno::UNO_QUERY);
1581 if (xStreamProvider.is())
1584 uno::Reference<io::XInputStream>
xStream(xStreamProvider->getStream(), uno::UNO_QUERY);
1591 aFileType = aRTFType;
1595 else if (xOwnEmbedded.is())
1610 aFileType = aRTFType;
1617 uno::Reference<embed::XStorage> xStorage = pDocSh->
GetStorage();
1618 uno::Reference<io::XStream> xInStream;
1622 xInStream = xStorage->openStreamElement(aStreamName, embed::ElementModes::READ);
1623 }
catch (
const uno::Exception&)
1625 TOOLS_WARN_EXCEPTION(
"sw.html",
"OutHTML_FrameFormatOLENodeGrf: failed to open stream element");
1631 xOutStream->getOutputStream());
1634 uno::Reference<beans::XPropertySet> xOutStreamProps(xInStream, uno::UNO_QUERY);
1635 if (xOutStreamProps.is())
1636 xOutStreamProps->getPropertyValue(
"MediaType") >>= aFileType;
1637 if (!aRTFType.isEmpty())
1639 aFileType = aRTFType;
1648 rWrt.
Strm().
WriteOString(Concat2View(
" data=\"" + aFileName.toUtf8() +
"\""));
1649 if (!aFileType.isEmpty())
1650 rWrt.
Strm().
WriteOString(Concat2View(
" type=\"" + aFileType.toUtf8() +
"\""));
1652 bObjectOpened =
true;
1656 OUString aGraphicURL;
1662 aGraphicURL = *pTempFileName;
1664 OUString aFilterName(
"JPG");
1665 XOutFlags nFlags = XOutFlags::UseGifIfPossible | XOutFlags::UseNativeIfPossible;
1669 aFilterName =
"PNG";
1670 nFlags = XOutFlags::NONE;
1673 if (aGraphic.
GetType() == GraphicType::NONE)
1676 aGraphicURL = lcl_CalculateFileName(rWrt.
GetOrigFileName(), aGraphic,
u"png");
1677 osl::File aFile(aGraphicURL);
1678 aFile.open(osl_File_OpenFlag_Create);
#define OOO_STRING_SW_HTML_O_Hidden
static OutputDevice * GetDefaultDevice()
static GraphicFilter & GetGraphicFilter()
GraphicType GetType() const
BitmapChecksum GetChecksum() const
Size GetSizePixel(const OutputDevice *pRefDevice=nullptr) const
HtmlOptionId GetToken() const
const OUString & GetTokenString() const
const OUString & GetString() const
EnumT GetEnum(const HTMLOptionEnum< EnumT > *pOptEnums, EnumT nDflt=static_cast< EnumT >(0)) const
sal_uInt32 GetNumber() const
OUString GetMainURL(DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
static OUString GetAbsURL(std::u16string_view rTheBaseURIRef, OUString const &rTheRelURIRef, EncodeMechanism eEncodeMechanism=EncodeMechanism::WasEncoded, DecodeMechanism eDecodeMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8)
bool SetURL(std::u16string_view rTheAbsURIRef, EncodeMechanism eMechanism=EncodeMechanism::WasEncoded, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8)
SAL_WARN_UNUSED_RESULT Point PixelToLogic(const Point &rDevicePt) const
static void ResetFrameFormatAttrs(SfxItemSet &rFrameSet)
const Size & GetMargin() const
const OUString & GetName() const
bool HasFrameBorder() const
const INetURLObject & GetURL() const
ScrollingMode GetScrollingMode() const
static void Out_FrameDescriptor(SvStream &, const OUString &rBaseURL, const css::uno::Reference< css::beans::XPropertySet > &xSet)
const T * GetItemIfSet(TypedWhichId< T > nWhich, bool bSrchInParent=true) const
sal_uInt16 ClearItem(sal_uInt16 nWhich=0)
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
css::uno::Reference< css::embed::XStorage > const & GetStorage()
constexpr tools::Long Height() const
void setWidth(tools::Long nWidth)
void setHeight(tools::Long nHeight)
constexpr tools::Long Width() const
void FillSequence(css::uno::Sequence< css::beans::PropertyValue > &) const
void FillFromSequence(const css::uno::Sequence< css::beans::PropertyValue > &)
void Append(const OUString &rCommand, const OUString &rArg)
const OUString & GetArgument() const
const OUString & GetCommand() const
bool MakeId(std::u16string_view rId)
SvStream & WriteOString(std::string_view rStr)
sal_uInt64 Seek(sal_uInt64 nPos)
SvStream & WriteChar(char nChar)
SvStream & WriteCharPtr(const char *pBuf)
SvxCSS1LengthType m_eHeightType
SvxCSS1LengthType m_eWidthType
void SetRight(const tools::Long nR, const sal_uInt16 nProp=100)
void SetLeft(const tools::Long nL, const sal_uInt16 nProp=100)
void ExportOLEObject(svt::EmbeddedObjectRef const &rObj, SotStorage &rDestStg)
void SetLower(const sal_uInt16 nL, const sal_uInt16 nProp=100)
void SetUpper(const sal_uInt16 nU, const sal_uInt16 nProp=100)
static SwHtmlOptType GetOptionType(const OUString &rName, bool bApplet)
bool SetFlyFrameAttr(SwFrameFormat &rFlyFormat, SfxItemSet &rSet)
SwDocShell * GetDocShell()
Content, content of frame (header, footer, fly).
const SwNodeIndex * GetContentIdx() const
std::stack< SwOLENode * > m_aEmbeds
Non-owning pointers to already inserted OLE nodes, matching opened <object> XHTML elements.
void SetAnchorAndAdjustment(sal_Int16 eVertOri, sal_Int16 eHoriOri, const SvxCSS1PropertyInfo &rPropInfo, SfxItemSet &rFrameSet)
static void SetSpace(const Size &rPixSpace, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, SfxItemSet &rFlyItemSet)
std::set< OUString > m_aAllowedRTFOLEMimeTypes
static bool HasStyleOptions(std::u16string_view rStyle, std::u16string_view rId, std::u16string_view rClass, const OUString *pLang=nullptr, const OUString *pDir=nullptr)
static void SetFixSize(const Size &rPixSize, const Size &rTwipDfltSize, bool bPercentWidth, bool bPercentHeight, SvxCSS1PropertyInfo const &rPropInfo, SfxItemSet &rFlyItemSet)
rtl::Reference< SwDoc > m_xDoc
bool ParseStyleOptions(const OUString &rStyle, const OUString &rId, const OUString &rClass, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const OUString *pLang=nullptr, const OUString *pDir=nullptr)
std::unique_ptr< SwCSS1Parser > m_pCSS1Parser
std::unique_ptr< SwApplet_Impl > m_pAppletImpl
void NotifyMacroEventRead()
void RegisterFlyFrame(SwFrameFormat *pFlyFrame)
static OUString StripQueryFromPath(const OUString &rBase, const OUString &rPath)
Strips query and fragment from a URL path if base URL is a file:// one.
void InsertFloatingFrame()
OUString m_aEmbedURL
This is the URL of the outer <object> data if it's not OLE2 or an image.
bool mbXHTML
If XHTML markup should be written instead of HTML.
static sal_uInt16 GuessOLENodeFrameType(const SwNode &rNd)
OString GetNamespace() const
Determines the prefix string needed to respect the requested namespace alias.
OString OutFrameFormatOptions(const SwFrameFormat &rFrameFormat, const OUString &rAltText, HtmlFrmOpts nFrameOpts)
void OutCSS1_FrameFormatOptions(const SwFrameFormat &rFrameFormat, HtmlFrmOpts nFrameOpts, const SdrObject *pSdrObj=nullptr, const SfxItemSet *pItemSet=nullptr)
void OutNewLine(bool bCheck=false)
OString maNamespace
XML namespace, in case of XHTML.
bool IsHTMLMode(sal_uInt32 nMode) const
OUString m_aRTFOLEMimeType
void OutImplicitMark(std::u16string_view rMark, const char *pMarkType)
Layout frame for SwNoTextNode, i.e. graphics and OLE nodes (including charts).
OUString GetTitle() const
void SetTitle(const OUString &rTitle)
SwNodeOffset GetIndex() const
Base class of the Writer document model elements.
SwFrameFormat * GetFlyFormat() const
If node is in a fly return the respective format.
SwOLENode * GetOLENode()
Inline methods from Node.hxx.
virtual Size GetTwipSize() const override
const SwOLEObj & GetOLEObj() const
const Graphic * GetGraphic()
svt::EmbeddedObjectRef & GetObject()
css::uno::Reference< css::embed::XEmbeddedObject > const & GetOleRef()
const OUString & GetCurrentPersistName() const
const SwPosition * GetPoint() const
static rtl::Reference< SwXTextEmbeddedObject > CreateXTextEmbeddedObject(SwDoc &rDoc, SwFrameFormat *pFrameFormat)
const OUString * GetOrigFileName() const
const OUString & GetBaseURL() const
static ErrCode WriteGraphic(const Graphic &rGraphic, OUString &rFileName, const OUString &rFilterName, const XOutFlags nFlags, const Size *pMtfSize_100TH_MM=nullptr, const css::uno::Sequence< css::beans::PropertyValue > *pFilterData=nullptr, OUString *pMediaType=nullptr)
OUString CreateUniqueObjectName()
void SwitchPersistence(const css::uno::Reference< css::embed::XStorage > &)
css::uno::Reference< css::embed::XEmbeddedObject > GetEmbeddedObject(const OUString &, OUString const *pBaseURL=nullptr)
css::uno::Reference< css::embed::XEmbeddedObject > CreateEmbeddedObject(const css::uno::Sequence< sal_Int8 > &, OUString &, OUString const *pBaseURL=nullptr)
bool InsertEmbeddedObject(const css::uno::Reference< css::embed::XEmbeddedObject > &, OUString &)
static void CopyInputToOutput(const css::uno::Reference< css::io::XInputStream > &xInput, const css::uno::Reference< css::io::XOutputStream > &xOutput)
#define SO3_PLUGIN_CLASSID
#define SO3_IFRAME_CLASSID
#define SO3_APPLET_CLASSID
static bool TryRunningState(const css::uno::Reference< css::embed::XEmbeddedObject > &)
void SetGraphic(const Graphic &rGraphic, const OUString &rMediaType)
static std::unique_ptr< SvStream > CreateStream(const OUString &rFileName, StreamMode eOpenMode, css::uno::Reference< css::awt::XWindow > xParentWin=nullptr)
#define TOOLS_WARN_EXCEPTION(area, stream)
@ Fixed
Frame cannot be moved in Var-direction.
constexpr sal_uInt16 RES_FRMATR_BEGIN(RES_PARATR_LIST_END)
constexpr TypedWhichId< SwFormatHoriOrient > RES_HORI_ORIENT(109)
constexpr TypedWhichId< SwFormatVertOrient > RES_VERT_ORIENT(108)
constexpr sal_uInt16 RES_FRMATR_END(141)
constexpr TypedWhichId< SvxRightMarginItem > RES_MARGIN_RIGHT(93)
constexpr TypedWhichId< SvxTextLeftMarginItem > RES_MARGIN_TEXTLEFT(92)
constexpr TypedWhichId< SwFormatContent > RES_CNTNT(101)
constexpr TypedWhichId< SvxLRSpaceItem > RES_LR_SPACE(97)
constexpr TypedWhichId< SvxULSpaceItem > RES_UL_SPACE(98)
SwHTMLWriter & OutHTML_ImageEnd(HtmlWriter &rHtml, SwHTMLWriter &rWrt)
SwHTMLWriter & OutHTML_ImageStart(HtmlWriter &rHtml, SwHTMLWriter &rWrt, const SwFrameFormat &rFrameFormat, const OUString &rGraphicURL, Graphic const &rGraphic, const OUString &rAlternateText, const Size &rRealSize, HtmlFrmOpts nFrameOpts, const char *pMarkType, const ImageMap *pAltImgMap, std::u16string_view rMimeType)
HTMLOptionEnum< sal_Int16 > const aHTMLImgVAlignTable[]
HTMLOptionEnum< sal_Int16 > const aHTMLImgHAlignTable[]
#define OOO_STRING_SVTOOLS_HTML_O_mayscript
#define OOO_STRING_SVTOOLS_HTML_param
#define OOO_STRING_SVTOOLS_HTML_applet
#define OOO_STRING_SVTOOLS_HTML_O_value
#define OOO_STRING_SVTOOLS_HTML_iframe
#define OOO_STRING_SVTOOLS_HTML_span
#define OOO_STRING_SVTOOLS_HTML_O_src
#define OOO_STRING_SVTOOLS_HTML_O_code
#define OOO_STRING_SVTOOLS_HTML_O_type
#define OOO_STRING_SVTOOLS_HTML_embed
#define OOO_STRING_SVTOOLS_HTML_O_name
#define OOO_STRING_SVTOOLS_HTML_object
#define OOO_STRING_SVTOOLS_HTML_O_codebase
const HtmlFrmOpts HTML_FRMOPTS_OLE_CSS1
const HtmlFrmOpts HTML_FRMOPTS_IFRAME
const HtmlFrmOpts HTML_FRMOPTS_EMBED_CNTNR
const HtmlFrmOpts HTML_FRMOPTS_IFRAME_CNTNR
SwHTMLWriter & OutHTML_FrameFormatOLENode(SwHTMLWriter &rWrt, const SwFrameFormat &rFrameFormat, bool bInCntnr)
const HtmlFrmOpts HTML_FRMOPTS_IFRAME_ALL
#define HTML_DFLT_EMBED_HEIGHT
const HtmlFrmOpts HTML_FRMOPTS_EMBED
#define HTML_DFLT_EMBED_WIDTH
const HtmlFrmOpts HTML_FRMOPTS_APPLET_CNTNR
const HtmlFrmOpts HTML_FRMOPTS_EMBED_ALL
#define HTML_DFLT_APPLET_HEIGHT
#define HTML_DFLT_APPLET_WIDTH
const HtmlFrmOpts HTML_FRMOPTS_APPLET
const HtmlFrmOpts HTML_FRMOPTS_APPLET_ALL
SwHTMLWriter & OutHTML_FrameFormatOLENodeGrf(SwHTMLWriter &rWrt, const SwFrameFormat &rFrameFormat, bool bInCntnr)
const HtmlFrmOpts HTML_FRMOPTS_HIDDEN_EMBED
Sequence< PropertyValue > aArguments
#define SAL_WARN_IF(condition, area, stream)
#define SAL_WARN(area, stream)
constexpr OUStringLiteral aData
void ParseFrameOptions(SfxFrameDescriptor *pFrame, const HTMLOptions &rOptions, std::u16string_view rBaseURL)
bool WrapOleInRtf(SvStream &rOle2, SvStream &rRtf, SwOLENode &rOLENode, const SwFrameFormat &rFormat)
Wraps an OLE2 container binary in an RTF fragment.
bool ExtractOleFromRtf(SvStream &rRtf, SvStream &rOle, bool &bOwnFormat)
Extracts an OLE2 container binary from an RTF fragment.
SVL_DLLPUBLIC Link< OUString *, bool > const & GetMaybeFileHdl()
SVL_DLLPUBLIC OUString SmartRel2Abs(INetURLObject const &rTheBaseURIRef, OUString const &rTheRelURIRef, Link< OUString *, bool > const &rMaybeFileHdl=Link< OUString *, bool >(), bool bCheckFileExists=true, bool bIgnoreFragment=false, INetURLObject::EncodeMechanism eEncodeMechanism=INetURLObject::EncodeMechanism::WasEncoded, INetURLObject::DecodeMechanism eDecodeMechanism=INetURLObject::DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8, FSysStyle eStyle=FSysStyle::Detect)
SVL_DLLPUBLIC OUString simpleNormalizedMakeRelative(OUString const &baseUriReference, OUString const &uriReference)
COMPHELPER_DLLPUBLIC bool isFileUrl(OUString const &url)
css::uno::Sequence< css::beans::PropertyValue > InitPropertySequence(::std::initializer_list< ::std::pair< OUString, css::uno::Any > > vInit)
css::beans::PropertyValue makePropertyValue(const OUString &rName, T &&rValue)
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
::std::vector< HTMLOption > HTMLOptions
const char *const aClassID
const sal_Unicode *const aMimeType[]
TOOLS_DLLPUBLIC OString read_uInt8s_ToOString(SvStream &rStrm, std::size_t nUnits)
static SVT_DLLPUBLIC SvStream & Out_AsciiTag(SvStream &, std::string_view rStr, bool bOn=true)
static SVT_DLLPUBLIC SvStream & Out_String(SvStream &, const OUString &, OUString *pNonConvertableChars=nullptr)
@ SVX_CSS1_LTYPE_PERCENTAGE
#define WARN_SWG_POOR_LOAD
@ Replacement
The graphic frame is a replacement image of an OLE object.
#define HTMLMODE_ABS_POS_FLY