20#include <com/sun/star/embed/XEmbeddedObject.hpp>
21#include <com/sun/star/i18n/ScriptType.hpp>
22#include <com/sun/star/drawing/XShape.hpp>
23#include <com/sun/star/beans/XPropertySet.hpp>
103#if OSL_DEBUG_LEVEL > 1
135const char aTableHeadingName[] =
"Table Heading";
136const char aQuotations[] =
"Quotations";
137const char aCaption[] =
"Caption";
138const char aHeading[] =
"Heading";
139const char aQuotation[] =
"Quotation";
140const char aSourceText[] =
"Source Text";
143constexpr OUStringLiteral aDocumentString =
u"Document";
144constexpr OUStringLiteral aDivString =
u"Div";
145constexpr OUStringLiteral aSectString =
u"Sect";
146constexpr OUStringLiteral aHString =
u"H";
147constexpr OUStringLiteral aH1String =
u"H1";
148constexpr OUStringLiteral aH2String =
u"H2";
149constexpr OUStringLiteral aH3String =
u"H3";
150constexpr OUStringLiteral aH4String =
u"H4";
151constexpr OUStringLiteral aH5String =
u"H5";
152constexpr OUStringLiteral aH6String =
u"H6";
153constexpr OUStringLiteral aH7String =
u"H7";
154constexpr OUStringLiteral aH8String =
u"H8";
155constexpr OUStringLiteral aH9String =
u"H9";
156constexpr OUStringLiteral aH10String =
u"H10";
157constexpr OUStringLiteral aListString =
u"L";
158constexpr OUStringLiteral aListItemString =
u"LI";
159constexpr OUStringLiteral aListLabelString =
u"Lbl";
160constexpr OUStringLiteral aListBodyString =
u"LBody";
161constexpr OUStringLiteral aBlockQuoteString =
u"BlockQuote";
162constexpr OUStringLiteral aCaptionString =
u"Caption";
163constexpr OUStringLiteral aIndexString =
u"Index";
164constexpr OUStringLiteral aTOCString =
u"TOC";
165constexpr OUStringLiteral aTOCIString =
u"TOCI";
166constexpr OUStringLiteral aTableString =
u"Table";
167constexpr OUStringLiteral aTRString =
u"TR";
168constexpr OUStringLiteral aTDString =
u"TD";
169constexpr OUStringLiteral aTHString =
u"TH";
170constexpr OUStringLiteral aBibEntryString =
u"BibEntry";
171constexpr OUStringLiteral aQuoteString =
u"Quote";
172constexpr OUStringLiteral aSpanString =
u"Span";
173constexpr OUStringLiteral aCodeString =
u"Code";
174constexpr OUStringLiteral aFigureString =
u"Figure";
175constexpr OUStringLiteral aFormulaString =
u"Formula";
176constexpr OUStringLiteral aLinkString =
u"Link";
177constexpr OUStringLiteral aNoteString =
u"Note";
180bool lcl_IsHeadlineCell(
const SwCellFrame& rCellFrame )
192 bRet = sStyleName == aTableHeadingName;
200 OUString
const& rStyleName(pTable->GetTableStyleName());
201 if (!rStyleName.isEmpty())
204 pTable->GetFrameFormat()->GetDoc()->GetTableStyles().FindAutoFormat(rStyleName))
206 bRet |= pTableAF->HasHeaderRow();
215bool lcl_IsInNonStructEnv(
const SwFrame& rFrame )
227 if ( rFrame.
GetUpper() != pTabFrame &&
228 pTabFrame->IsFollow() && pTabFrame->
IsInHeadline( rFrame ) )
236void* lcl_GetKeyFromFrame(
const SwFrame& rFrame )
238 void* pKey =
nullptr;
241 pKey =
const_cast<void*
>(
static_cast<void const *
>(&(
static_cast<const SwPageFrame&
>(rFrame).
GetFormat()->getIDocumentSettingAccess())));
247 pKey =
const_cast<void*
>(
static_cast<void const *
>(
static_cast<const SwTabFrame&
>(rFrame).
GetTable()));
249 pKey =
const_cast<void*
>(
static_cast<void const *
>(
static_cast<const SwRowFrame&
>(rFrame).
GetTabLine()));
254 pKey =
const_cast<void*
>(
static_cast<void const *
>(&
static_cast<const SwCellFrame&
>(rFrame).GetTabBox()->FindStartOfRowSpan( *pTable )));
266 const SwNode* pNode = &rNode;
273 if (aIdx.GetNode().IsTextNode())
276 *rTextFrame.
getRootFrame(), *aIdx.GetNode().GetTextNode());
281 if ( (pPrevNumRule == pNumRule) &&
288 pNode = &aIdx.GetNode();
302 rShell.SwCursorShell::ClearMark();
314 : m_nEndStructureElement( 0 ),
315 m_nRestoreCurrentTag( -1 ),
316 mpNumInfo( pNumInfo ),
317 mpFrameInfo( pFrameInfo ),
318 mpPorInfo( pPorInfo )
326#if OSL_DEBUG_LEVEL > 1
339#if OSL_DEBUG_LEVEL > 1
342 (void)nCurrentStruct;
351#if OSL_DEBUG_LEVEL > 1
357#if OSL_DEBUG_LEVEL > 1
360 (void)nCurrentStruct;
367 return pAnchorFrame ? lcl_GetKeyFromFrame(*pAnchorFrame) :
nullptr;
373 void const* pReopenKey(
nullptr);
374 bool bContinue =
false;
379 const SwFrame* pKeyFrame =
nullptr;
389 ( rFrame.
IsFlowFrame() && SwFlowFrame::CastFlowFrame(&rFrame)->IsFollow() ) ||
399 if ((RndStdIds::FLY_AT_PARA == rAnchor.
GetAnchorId()) ||
400 (RndStdIds::FLY_AT_CHAR == rAnchor.
GetAnchorId()) ||
403 pKeyFrame =
static_cast<const SwFlyFrame&
>(rFrame).GetAnchorFrame();
410 void const*
const pKey = lcl_GetKeyFromFrame(*pKeyFrame);
412 if (rFrameTagSet.find(pKey) != rFrameTagSet.end()
426#if OSL_DEBUG_LEVEL > 1
433 return bRet && !bContinue;
441 OSL_ENSURE( bSuccess,
"Failed to restore reopened tag" );
443#if OSL_DEBUG_LEVEL > 1
451 void const* pKey(
nullptr);
458 ( rFrame.
IsFlowFrame() && !SwFlowFrame::CastFlowFrame(&rFrame)->IsFollow() && SwFlowFrame::CastFlowFrame(&rFrame)->HasFollow() ) ||
463 pKey = lcl_GetKeyFromFrame(rFrame);
468 assert(rFrameTagSet.find(pKey) == rFrameTagSet.end());
469 rFrameTagSet.emplace(pKey);
480#if OSL_DEBUG_LEVEL > 1
501 rNumListIdMap[ pNodeNum ] =
nId;
506 rNumListBodyIdMap[ pNodeNum ] =
nId;
519 rNumListBodyIdMap[ pNodeNum ] =
nId;
530#if OSL_DEBUG_LEVEL > 1
542 auto aIter = std::find_if(rLinkIdMap.begin(), rLinkIdMap.end(),
543 [&aCenter](
const IdMapEntry& rEntry) { return rEntry.first.Contains(aCenter); });
544 if (aIter != rLinkIdMap.end())
546 sal_Int32 nLinkId = (*aIter).second;
566 bool bPlacement =
false;
567 bool bWritingMode =
false;
568 bool bSpaceBefore =
false;
569 bool bSpaceAfter =
false;
570 bool bStartIndent =
false;
571 bool bEndIndent =
false;
572 bool bTextIndent =
false;
573 bool bTextAlign =
false;
575 bool bHeight =
false;
577 bool bRowSpan =
false;
578 bool bAltText =
false;
724 OSL_ENSURE( pFrame->
IsTextFrame(),
"Frame type <-> tag attribute mismatch" );
726 static_cast<const SwTextFrame*
>(pFrame)->GetTextNodeForParaProps()->GetSwAttrSet().GetFirstLineIndent());
734 OSL_ENSURE( pFrame->
IsTextFrame(),
"Frame type <-> tag attribute mismatch" );
735 const SwAttrSet& aSet =
static_cast<const SwTextFrame*
>(pFrame)->GetTextNodeForParaProps()->GetSwAttrSet();
737 if ( SvxAdjust::Block ==
nAdjust || SvxAdjust::Center ==
nAdjust ||
741 eVal = SvxAdjust::Block ==
nAdjust ?
763 ? OUString() : OUString(
" - "));
765 if (!altText.isEmpty())
788 !
static_cast<const SwTabFrame*
>(pFrame)->IsFollow() &&
789 !
static_cast<const SwTabFrame*
>(pFrame)->HasFollow() ) )
814 const TableColumnsMapEntry::const_iterator aLeftIter = rCols.find( nLeft );
815 const TableColumnsMapEntry::const_iterator aRightIter = rCols.find( nRight );
817 OSL_ENSURE( aLeftIter != rCols.end() && aRightIter != rCols.end(),
"Colspan trouble" );
818 if ( aLeftIter != rCols.end() && aRightIter != rCols.end() )
820 nVal = std::distance( aLeftIter, aRightIter );
842 bool bActualText =
false;
843 bool bBaselineShift =
false;
844 bool bTextDecorationType =
false;
845 bool bLinkAttribute =
false;
846 bool bLanguage =
false;
861 bTextDecorationType =
867 bTextDecorationType =
874 bTextDecorationType =
886 OUString aActualText;
888 aActualText = OUString(
u'\x00ad');
894 if ( bBaselineShift )
898 if ( nVal > 0 ) nVal = 33;
899 else if ( nVal < 0 ) nVal = -33;
903 nVal = nVal * pPor->
Height() / 100;
908 if ( bTextDecorationType )
926 if ( nDefaultLang != nCurrentLanguage )
930 if ( bLinkAttribute )
945 switch (rFormat.GetNumberingType())
947 case css::style::NumberingType::CHARS_UPPER_LETTER:
949 case css::style::NumberingType::CHARS_LOWER_LETTER:
951 case css::style::NumberingType::ROMAN_UPPER:
953 case css::style::NumberingType::ROMAN_LOWER:
955 case css::style::NumberingType::ARABIC:
957 case css::style::NumberingType::CHAR_SPECIAL:
958 switch (rFormat.GetBulletChar())
960 case u'\u2022':
case u'\uE12C':
case u'\uE01E':
case u'\uE437':
962 case u'\u2218':
case u'\u25CB':
case u'\u25E6':
964 case u'\u25A0':
case u'\u25AA':
case u'\uE00A':
986 OSL_ENSURE(
mpNumInfo,
"List without mpNumInfo?" );
995 if (lcl_IsInNonStructEnv(rTextFrame))
999 for (SwFlowFrame
const* pPrecede = rTextFrame.GetPrecede(); pPrecede; pPrecede = pPrecede->GetPrecede())
1012 const bool bNumbered = !pTextNd->
IsOutline() && pNodeNum && pNodeNum->
GetParent() && pNumRule;
1021 const bool bSameNumbering = lcl_HasPreviousParaSameNumRule(rTextFrame, *pTextNd);
1024 if ( bSameNumbering )
1026 sal_Int32 nReopenTag = -1;
1036 if ( bNewSubListStart || bNoLabel )
1041 if ( bNewSubListStart )
1045 NumListBodyIdMap::const_iterator aIter;
1048 aIter = rNumListBodyIdMap.find( pParent );
1049 while ( aIter == rNumListBodyIdMap.end() &&
nullptr != ( pParent = pParent->
GetParent() ) );
1051 if ( aIter != rNumListBodyIdMap.end() )
1052 nReopenTag = (*aIter).second;
1063 const NumListBodyIdMap::const_iterator aIter = rNumListBodyIdMap.find( pPrevious );
1064 if ( aIter != rNumListBodyIdMap.end() )
1066 nReopenTag = (*aIter).second;
1070 pPrevious = pPrevious->
GetPred(
true);
1086 const NumListIdMap::const_iterator aIter = rNumListIdMap.find( pPrevious );
1087 if ( aIter != rNumListIdMap.end() )
1089 nReopenTag = (*aIter).second;
1093 pPrevious = pPrevious->
GetPred(
true);
1097 if ( -1 != nReopenTag )
1102#if OSL_DEBUG_LEVEL > 1
1111 rNumListIdMap.clear();
1113 rNumListBodyIdMap.clear();
1141 if (lcl_IsInNonStructEnv(*pFrame) && !pFrame->
IsFlyFrame())
1149 sal_uInt16 nPDFType = USHRT_MAX;
1163 aPDFType = aDocumentString;
1179 aPDFType = aDivString;
1189 aPDFType = aNoteString;
1207 aPDFType = aIndexString;
1212 aPDFType = aTOCString;
1219 aPDFType = aSectString;
1242 OUString sStyleName;
1243 OUString sParentStyleName;
1247 if ( pParentTextFormat)
1254 aPDFType = sStyleName;
1258 if (sStyleName == aQuotations)
1261 aPDFType = aBlockQuoteString;
1266 else if (sStyleName == aCaption)
1269 aPDFType = aCaptionString;
1274 else if (sParentStyleName == aCaption)
1277 aPDFType = sStyleName + aCaptionString;
1282 else if (sStyleName == aHeading)
1285 aPDFType = aHString;
1298 aPDFType = aH1String;
1301 aPDFType = aH2String;
1304 aPDFType = aH3String;
1307 aPDFType = aH4String;
1310 aPDFType = aH5String;
1313 aPDFType = aH6String;
1316 aPDFType = aH7String;
1319 aPDFType = aH8String;
1322 aPDFType = aH9String;
1325 aPDFType = aH10String;
1335 nRealLevel =
std::min(nRealLevel, 5);
1364 aPDFType = aTableString;
1372 const TableColumnsMap::const_iterator aIter = rTableColumnsMap.find( pTable );
1374 if ( aIter == rTableColumnsMap.end() )
1379 const SwTabFrame* pMasterFrame = pTabFrame->IsFollow() ? pTabFrame->
FindMaster(
true ) : pTabFrame;
1381 while ( pMasterFrame )
1390 rCols.insert( nLeft );
1392 while ( pCellFrame )
1395 rCols.insert( nRight );
1396 pCellFrame = pCellFrame->
GetNext();
1400 pMasterFrame = pMasterFrame->
GetFollow();
1418 aPDFType = aTRString;
1435 aPDFType = aTHString;
1440 aPDFType = aTDString;
1456 aPDFType = aLinkString;
1468 bool bFormula =
false;
1475 uno::Reference< embed::XEmbeddedObject > aRef = aOLEObj.
GetOleRef();
1484 aPDFType = aFormulaString;
1489 aPDFType = aFigureString;
1495 aPDFType = aDivString;
1503 if ( USHRT_MAX != nPDFType )
1528 if ( lcl_IsInNonStructEnv( *pFrame ) )
1531 sal_uInt16 nPDFType = USHRT_MAX;
1542 aPDFType = aSpanString;
1549 std::pair<SwTextNode const*, sal_Int32>
const pos(
1554 OUString sStyleName;
1555 if ( !pInetFormatAttr )
1557 std::vector<SwTextAttr *>
const charAttrs(
1561 ? (*charAttrs.begin())->GetCharFormat().GetCharFormat() :
nullptr;
1567 if( pInetFormatAttr )
1570 aPDFType = aLinkString;
1573 else if (sStyleName == aQuotation)
1576 aPDFType = aQuoteString;
1578 else if (sStyleName == aSourceText)
1581 aPDFType = aCodeString;
1595 nCurrentLanguage != nDefaultLang ||
1596 !sStyleName.isEmpty())
1599 if (!sStyleName.isEmpty())
1600 aPDFType = sStyleName;
1602 aPDFType = aSpanString;
1610 aPDFType = aLinkString;
1626 aPDFType = aLinkString;
1631 aPDFType = aBibEntryString;
1642 aPDFType = aLinkString;
1652 aPDFType = aListLabelString;
1665 if ( USHRT_MAX != nPDFType )
1679 const OUString& rPageRange,
1680 bool bSkipEmptyPages,
1681 bool bEditEngineOnly,
1685 mbSkipEmptyPages( bSkipEmptyPages ),
1686 mbEditEngineOnly( bEditEngineOnly ),
1687 mrPrintData( rPrintData )
1689 if ( !rPageRange.isEmpty() )
1697 sal_Int32 nPageNumber = 0;
1715#if OSL_DEBUG_LEVEL > 1
1722 if ( i18n::ScriptType::ASIAN == nScript )
1724 else if ( i18n::ScriptType::COMPLEX == nScript )
1747 double fScale = 0.75;
1755 aRect.
Move(0, nShiftY);
1765 if ( !pPDFExtOutDevData )
1783 mrSh.SwCursorShell::Push();
1784 mrSh.SwCursorShell::ClearMark();
1795 std::vector<SwFormatField*> vpFields;
1797 for(
auto pFormatField : vpFields)
1799 const SwTextNode* pTNd = pFormatField->GetTextField()->GetpTextNode();
1800 OSL_ENSURE(
nullptr != pTNd,
"Enhanced pdf export - text node is missing");
1801 if(!lcl_TryMoveToNonHiddenField(
mrSh, *pTNd, *pFormatField))
1809 for (sal_Int32 aNotePageNum : aNotePageNums)
1818 const Color* pColor;
1829 pPDFExtOutDevData->
CreateNote(aRect, aNote, aNotePageNum);
1831 mrSh.SwCursorShell::ClearMark();
1839 for(
auto &rAttr :
aArr )
1842 OSL_ENSURE(
nullptr !=
p,
"Enhanced pdf export - SwGetINetAttr is missing" );
1844 const SwTextNode* pTNd =
p->rINetAttr.GetpTextNode();
1845 OSL_ENSURE(
nullptr != pTNd,
"Enhanced pdf export - text node is missing" );
1861 p->rINetAttr.GetINetFormat().GetValue(),
1865 const bool bInternal =
'#' ==
aURL[0];
1873 aTmp.insert( aTmp.begin(),
mrSh.SwCursorShell::GetCursor_()->begin(),
mrSh.SwCursorShell::GetCursor_()->end() );
1874 OSL_ENSURE( !aTmp.empty(),
"Enhanced pdf export - rectangles are missing" );
1881 sal_Int32 nDestId = -1;
1885 mrSh.SwCursorShell::ClearMark();
1901 if ( -1 != nDestPageNum )
1904 nDestId = pPDFExtOutDevData->
CreateDest(aRect, nDestPageNum);
1908 if ( !bInternal || -1 != nDestId )
1914 const size_t nNumOfRects = aTmp.size();
1915 for (
size_t i = 0;
i < nNumOfRects; ++
i )
1918 const SwRect& rLinkRect( aTmp[
i ] );
1923 for (sal_Int32 aLinkPageNum : aLinkPageNums)
1927 const sal_Int32 nLinkId =
1928 pPDFExtOutDevData->
CreateLink(aRect, altText, aLinkPageNum);
1931 const IdMapEntry aLinkEntry( rLinkRect, nLinkId );
1936 pPDFExtOutDevData->
SetLinkDest( nLinkId, nDestId );
1941 if ( bHeaderFooter )
1948 mrSh.SwCursorShell::ClearMark();
1958 (pItem = pFrameFormat->GetAttrSet().GetItemIfSet(
RES_URL )) )
1966 const bool bInternal =
'#' ==
aURL[0];
1969 sal_Int32 nDestId = -1;
1973 mrSh.SwCursorShell::ClearMark();
1988 if ( -1 != nDestPageNum )
1991 nDestId = pPDFExtOutDevData->
CreateDest(aRect, nDestPageNum);
1995 if ( !bInternal || -1 != nDestId )
1998 const SwRect aLinkRect = pFrameFormat->FindLayoutRect(
false, &aNullPt );
1999 OUString
const formatName(pFrameFormat->GetName());
2004 for (sal_Int32 aLinkPageNum : aLinkPageNums)
2007 const sal_Int32 nLinkId =
2008 pPDFExtOutDevData->
CreateLink(aRect, formatName, aLinkPageNum);
2011 const IdMapEntry aLinkEntry(aLinkRect, nLinkId);
2016 pPDFExtOutDevData->
SetLinkDest( nLinkId, nDestId );
2022 if (RndStdIds::FLY_AT_PAGE != rAnch.
GetAnchorId())
2042 if (aScreenPageNums.empty())
2045 uno::Reference<drawing::XShape> xShape(
pObject->getUnoShape(), uno::UNO_QUERY);
2046 if (xShape->getShapeType() ==
"com.sun.star.drawing.MediaShape")
2048 uno::Reference<beans::XPropertySet> xShapePropSet(xShape, uno::UNO_QUERY);
2050 xShapePropSet->getPropertyValue(
"Title") >>= title;
2051 OUString description;
2052 xShapePropSet->getPropertyValue(
"Description") >>= description;
2053 OUString
const altText(title.isEmpty()
2055 : description.isEmpty()
2057 : OUString::Concat(title) + OUString::Concat(
"\n") + OUString::Concat(description));
2060 xShapePropSet->getPropertyValue(
"MediaURL") >>= aMediaURL;
2061 if (!aMediaURL.isEmpty())
2063 OUString
const mimeType(xShapePropSet->getPropertyValue(
"MediaMimeType").get<OUString>());
2066 for (sal_Int32 nScreenPageNum : aScreenPageNums)
2068 sal_Int32 nScreenId = pPDFExtOutDevData->
CreateScreen(aPDFRect, altText, mimeType, nScreenPageNum,
pObject);
2069 if (aMediaURL.startsWith(
"vnd.sun.star.Package:"))
2072 OUString aTempFileURL;
2073 xShapePropSet->getPropertyValue(
"PrivateTempFileURL") >>= aTempFileURL;
2084 mrSh.SwCursorShell::ClearMark();
2089 std::vector<SwFormatField*> vpFields;
2091 for(
auto pFormatField : vpFields )
2093 if( pFormatField->GetTextField() && pFormatField->IsFieldInDoc() )
2095 const SwTextNode* pTNd = pFormatField->GetTextField()->GetpTextNode();
2096 OSL_ENSURE(
nullptr != pTNd,
"Enhanced pdf export - text node is missing" );
2097 if(!lcl_TryMoveToNonHiddenField(
mrSh, *pTNd, *pFormatField))
2100 mrSh.SwCursorShell::SetMark();
2105 aTmp.insert( aTmp.begin(),
mrSh.SwCursorShell::GetCursor_()->begin(),
mrSh.SwCursorShell::GetCursor_()->end() );
2106 OSL_ENSURE( !aTmp.empty(),
"Enhanced pdf export - rectangles are missing" );
2108 mrSh.SwCursorShell::ClearMark();
2121 if ( -1 != nDestPageNum )
2125 const sal_Int32 nDestId = pPDFExtOutDevData->
CreateDest(aRect, nDestPageNum);
2132 const size_t nNumOfRects = aTmp.size();
2133 for (
size_t i = 0;
i < nNumOfRects; ++
i )
2136 const SwRect& rLinkRect( aTmp[
i ] );
2141 for (sal_Int32 aLinkPageNum : aLinkPageNums)
2145 const sal_Int32 nLinkId =
2146 pPDFExtOutDevData->
CreateLink(aRect, content, aLinkPageNum);
2149 const IdMapEntry aLinkEntry( rLinkRect, nLinkId );
2153 pPDFExtOutDevData->
SetLinkDest( nLinkId, nDestId );
2156 if ( bHeaderFooter )
2164 mrSh.SwCursorShell::ClearMark();
2172 for (
size_t nIdx = 0; nIdx < nFootnoteCount; ++nIdx )
2192 mrSh.SwCursorShell::SetMark();
2197 aTmp.insert( aTmp.begin(),
mrSh.SwCursorShell::GetCursor_()->begin(),
mrSh.SwCursorShell::GetCursor_()->end() );
2198 OSL_ENSURE( !aTmp.empty(),
"Enhanced pdf export - rectangles are missing" );
2201 mrSh.SwCursorShell::ClearMark();
2206 const SwRect aLinkRect( aTmp[ 0 ] );
2214 if ( -1 != nDestPageNum )
2225 fnSymbolRect =
SwRect(rDestRect.
Pos().X(),fnSymbolTop,rDestRect.
Width(),symbolHeight);
2230 fnSymbolRect =
SwRect(rDestRect.
Pos().X(),rDestRect.
Pos().Y(),symbolWidth,rDestRect.
Height());
2234 fnSymbolRect =
SwRect(fnSymbolLeft,rDestRect.
Pos().Y(),symbolWidth,rDestRect.
Height());
2243 const sal_Int32 nBackLinkId = pPDFExtOutDevData->
CreateLink(aFootnoteSymbolRect, numStrSymbol, nDestPageNum);
2245 const sal_Int32 nDestId = pPDFExtOutDevData->
CreateDest(aRect, nDestPageNum);
2252 const sal_Int32 nLinkId = pPDFExtOutDevData->
CreateLink(aRect, numStrRef, aLinkPageNum);
2254 const sal_Int32 nBackDestId = pPDFExtOutDevData->
CreateDest(aRect, aLinkPageNum);
2256 const IdMapEntry aLinkEntry( aLinkRect, nLinkId );
2260 const IdMapEntry aBackLinkEntry( aFootnoteSymbolRect, nBackLinkId );
2263 pPDFExtOutDevData->
SetLinkDest( nLinkId, nDestId );
2264 pPDFExtOutDevData->
SetLinkDest( nBackLinkId, nBackDestId );
2273 typedef std::pair< sal_Int8, sal_Int32 > StackEntry;
2274 std::stack< StackEntry > aOutlineStack;
2275 aOutlineStack.push( StackEntry( -1, -1 ) );
2283 OSL_ENSURE(
nullptr != pTNd,
"Enhanced pdf export - text node is missing" );
2293 sal_Int8 nLevelOnTopOfStack = aOutlineStack.top().first;
2294 while ( nLevelOnTopOfStack >= nLevel &&
2295 nLevelOnTopOfStack != -1 )
2297 aOutlineStack.pop();
2298 nLevelOnTopOfStack = aOutlineStack.top().first;
2300 const sal_Int32 nParent = aOutlineStack.top().second;
2312 if ( -1 != nDestPageNum )
2316 const sal_Int32 nDestId =
2317 pPDFExtOutDevData->
CreateDest(aRect, nDestPageNum);
2324 const sal_Int32 nOutlineId =
2328 aOutlineStack.push( StackEntry( nLevel, nOutlineId ) );
2346 const ::sw::mark::IMark* pBkmk = *ppMark;
2347 mrSh.SwCursorShell::ClearMark();
2348 const OUString& sBkName = pBkmk->GetName();
2366 if ( -1 != nDestPageNum )
2372 mrSh.SwCursorShell::ClearMark();
2381 std::vector< vcl::PDFExtOutDevBookmarkEntry >& rBookmarks = pPDFExtOutDevData->
GetBookmarks();
2382 for (
const auto& rBookmark : rBookmarks )
2384 OUString aBookmarkName( rBookmark.aBookmark );
2385 const bool bInternal =
'#' == aBookmarkName[0];
2388 aBookmarkName = aBookmarkName.copy( 1 );
2400 if ( -1 != nDestPageNum )
2403 if ( rBookmark.nLinkId != -1 )
2406 const sal_Int32 nDestId = pPDFExtOutDevData->
CreateDest(aRect, nDestPageNum);
2409 pPDFExtOutDevData->
SetLinkDest( rBookmark.nLinkId, nDestId );
2418 pPDFExtOutDevData->
SetLinkURL( rBookmark.nLinkId, aBookmarkName );
2432 if (!pPDFExtOutDevData)
2438 std::vector<std::tuple<const SwTOXBase*, const OUString*, sal_Int32>> vDestinations;
2446 const SwTOXBase* pIteratedTOX =
nullptr;
2466 if ( -1 != nDestPageNum )
2469 const sal_Int32 nDestId = pPDFExtOutDevData->CreateDest(aRect, nDestPageNum);
2470 const OUString* vNodeText = &
static_cast<const SwTextNode*
>(&rCurrentNode)->GetText();
2471 vDestinations.emplace_back(pIteratedTOX, vNodeText, nDestId);
2481 std::vector<SwFormatField*> aFields;
2490 for (
const auto pFormatField : aFields)
2492 if (!pFormatField->GetTextField() || !pFormatField->IsFieldInDoc())
2497 const auto& rAuthorityField
2500 if (
auto targetType = rAuthorityField.GetTargetType();
2501 targetType == SwAuthorityField::TargetType::UseDisplayURL
2502 || targetType == SwAuthorityField::TargetType::UseTargetURL)
2506 if (rURL.getLength() == 0)
2512 if (!lcl_TryMoveToNonHiddenField(
mrSh, rTextNode, *pFormatField))
2517 OUString
const content(rAuthorityField.ExpandField(
true,
mrSh.
GetLayout()));
2520 mrSh.SwCursorShell::SetMark();
2524 for (
const auto& rLinkRect : *
mrSh.SwCursorShell::GetCursor_())
2529 sal_Int32 nLinkId = pPDFExtOutDevData->CreateLink(aRect, content, rLinkPageNum);
2532 pPDFExtOutDevData->SetLinkURL(nLinkId, rURL);
2535 mrSh.SwCursorShell::ClearMark();
2537 else if (targetType == SwAuthorityField::TargetType::BibliographyTableRow)
2540 sal_Int32 nDestId = -1;
2542 std::unordered_map<const SwTOXBase*, OUString> vFormattedFieldStrings;
2543 for (
const auto& rDestinationTuple : vDestinations)
2545 if (vFormattedFieldStrings.find(std::get<0>(rDestinationTuple))
2546 == vFormattedFieldStrings.end())
2547 vFormattedFieldStrings.emplace(std::get<0>(rDestinationTuple),
2549 &std::get<0>(rDestinationTuple)->GetTOXForm()));
2551 if (vFormattedFieldStrings.at(std::get<0>(rDestinationTuple)) == *std::get<1>(rDestinationTuple))
2553 nDestId = std::get<2>(rDestinationTuple);
2562 if (!lcl_TryMoveToNonHiddenField(
mrSh, rTextNode, *pFormatField))
2567 OUString
const content(rAuthorityField.ExpandField(
true,
mrSh.
GetLayout()));
2570 mrSh.SwCursorShell::SetMark();
2574 for (
const auto& rLinkRect : *
mrSh.SwCursorShell::GetCursor_())
2579 sal_Int32 nLinkId = pPDFExtOutDevData->CreateLink(aRect, content, rLinkPageNum);
2582 pPDFExtOutDevData->SetLinkDest(nLinkId, nDestId);
2585 mrSh.SwCursorShell::ClearMark();
2595 if ( !aPageNums.empty() )
2596 return aPageNums[0];
2604 const SwRect& rRect )
const
2606 std::vector< sal_Int32 > aPageNums;
2610 if ( nPageNumOfRect < 0 )
2622 sal_Int32 nOutputPageNum = 0;
2625 for ( ; aIter != aEnd; ++aIter )
2627 if ( *aIter == nPageNumOfRect )
2628 aPageNums.push_back( nOutputPageNum );
2637 sal_Int32 nOutputPageNum = 0;
2642 if (
i ==
static_cast<size_t>( nPageNumOfRect ) )
2644 aPageNums.push_back( nOutputPageNum );
2652 aPageNums.push_back( nPageNumOfRect );
2662 const OUString& rURL,
2664 OUString
const& rContent)
const
2675 SwRect aHFLinkRect( rLinkRect );
2681 if ( aHFLinkRect.
Pos() != rLinkRect.
Pos() )
2686 for (sal_Int32 aHFLinkPageNum : aHFLinkPageNums)
2690 const sal_Int32 nHFLinkId =
2691 rPDFExtOutDevData.
CreateLink(aRect, rContent, aHFLinkPageNum);
2695 rPDFExtOutDevData.
SetLinkDest( nHFLinkId, nDestId );
2697 rPDFExtOutDevData.
SetLinkURL( nHFLinkId, rURL );
static std::vector< sal_uInt16 > aStructStack
std::set< tools::Long, lt_TableColumn > TableColumnsMapEntry
std::set< const void * > FrameTagSet
std::map< const SwNumberTreeNode *, sal_Int32 > NumListIdMap
std::map< const SwNumberTreeNode *, sal_Int32 > NumListBodyIdMap
std::vector< IdMapEntry > LinkIdMap
std::map< const SwTable *, TableColumnsMapEntry > TableColumnsMap
std::pair< SwRect, sal_Int32 > IdMapEntry
o3tl::strong_int< sal_Int32, struct Tag_TextFrameIndex > TextFrameIndex
Denotes a character index in a text frame at a layout level, after extent mapping from a text node at...
sal_Int32 GetDate() const
wrapper iterator: wraps iterator of implementation while hiding MarkBase class; only IMark instances ...
Provides access to the marks of a document.
virtual const_iterator_t getBookmarksBegin() const =0
returns a STL-like random access iterator to the begin of the sequence the IBookmarks.
virtual const_iterator_t getBookmarksEnd() const =0
returns a STL-like random access iterator to the end of the sequence of IBookmarks.
virtual tSortedOutlineNodeList::size_type getOutlineNodesCount() const =0
virtual OUString getOutlineText(const tSortedOutlineNodeList::size_type nIdx, SwRootFrame const *pLayout, const bool bWithNumber=true, const bool bWithSpacesForLevel=false, const bool bWithFootnote=true) const =0
virtual int getOutlineLevel(const tSortedOutlineNodeList::size_type nIdx) const =0
static OUString decode(std::u16string_view rText, DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8)
void SetMapUnit(MapUnit eUnit)
const Point & GetOrigin() const
vcl::ExtOutDevData * GetExtOutDevData() const
const MapMode & GetMapMode() const
void Push(vcl::PushFlags nFlags=vcl::PushFlags::ALL)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
constexpr tools::Long Height() const
void setWidth(tools::Long nWidth)
void setHeight(tools::Long nHeight)
constexpr tools::Long Width() const
static sal_uInt16 IsMath(const SvGlobalName &rName)
SvxAdjust GetAdjust() const
short GetTextFirstLineOffset() const
const SwFrame * GetAnchorFrame() const
SwTextAttr * GetAttr(TextFrameIndex nPos) const
Returns the attribute for a position.
const SvxAdjustItem & GetAdjust(bool=true) const
Represents an inserted bibliography entry, created using Insert -> Table of Contents and Index -> Bib...
OUString GetAbsoluteURL() const
Returns absolute target URL in case there is one (GetTargetType() should be checked).
SwCellFrame is one table cell in the document layout.
const SwTableBox * GetTabBox() const
SwContentFrame is the layout for content nodes: a common base class for text (paragraph) and non-text...
SwFormatColl * GetFormatColl() const
A helper class to save cursor state (position).
bool GotoRefMark(const OUString &rRefMark, sal_uInt16 nSubType, sal_uInt16 nSeqNo)
jump to reference marker
SwShellCursor * GetCursor_()
const SwRect & GetCharRect() const
bool IsInHiddenRange(const bool bSelect)
If the current cursor position is inside a hidden range true is returned.
bool GotoFootnoteAnchor()
jump from footnote to anchor
bool MovePara(SwWhichPara, SwMoveFnCollection const &)
bool GotoPage(sal_uInt16 nPage)
SwCursor * GetCursor(bool bMakeTableCursor=true) const
Return pointer to the current shell cursor.
OUString GetSelText() const
get selected text of a node at current cursor
bool GotoFootnoteText()
jump from content to footnote
bool GotoNextTOXBase(const OUString *=nullptr)
jump to the next index
bool GotoOutline(const OUString &rName)
bool GotoFormatField(const SwFormatField &rField)
bool GotoINetAttr(const SwTextINetFormat &rAttr)
void RestoreSavePos()
Restore cursor state to the one saved by SwCursorSaveState.
IDocumentRedlineAccess const & getIDocumentRedlineAccess() const
SwFootnoteIdxs & GetFootnoteIdxs()
const SfxPoolItem & GetDefault(sal_uInt16 nFormatHint) const
Get the default attribute in this document.
IDocumentMarkAccess * getIDocumentMarkAccess()
const sw::FrameFormats< sw::SpzFrameFormat * > * GetSpzFrameFormats() const
SvNumberFormatter * GetNumberFormatter(bool bCreate=true)
bool IsInHeaderFooter(const SwNode &) const
void GetINetAttrs(SwGetINetAttrs &rArr, bool bIncludeInToxContent=true)
const SwTOXBase * GetCurTOX() const
Get current listing before or at the Cursor.
SwFieldType * GetFieldType(size_t nField, SwFieldIds nResId=SwFieldIds::Unknown) const
get field types with a ResId, if 0 get all
static FrameTagSet & GetFrameTagSet()
static TableColumnsMap & GetTableColumnsMap()
static LinkIdMap s_aLinkIdMap
static NumListIdMap s_aNumListIdMap
static FrameTagSet s_FrameTagSet
static NumListBodyIdMap & GetNumListBodyIdMap()
sal_Int32 CalcOutputPageNum(const SwRect &rRect) const
SwEnhancedPDFExportHelper(SwEditShell &rSh, OutputDevice &rOut, const OUString &rPageRange, bool bSkipEmptyPages, bool bEditEngineOnly, const SwPrintData &rPrintData)
static TableColumnsMap s_aTableColumnsMap
static LanguageType GetDefaultLanguage()
static NumListBodyIdMap s_aNumListBodyIdMap
static NumListIdMap & GetNumListIdMap()
std::vector< sal_Int32 > CalcOutputPageNums(const SwRect &rRect) const
void ExportAuthorityEntryLinks()
Exports bibliography entry links.
const SwPrintData & mrPrintData
std::vector< sal_Int32 > maPageNumberMap
The problem is that numbers in StringRangeEnumerator aren't accordant to real page numbers if mbSkipE...
tools::Rectangle SwRectToPDFRect(const SwPageFrame *pCurrPage, const tools::Rectangle &rRectangle) const
void MakeHeaderFooterLinks(vcl::PDFExtOutDevData &rPDFExtOutDevData, const SwTextNode &rTNd, const SwRect &rLinkRect, sal_Int32 nDestId, const OUString &rURL, bool bIntern, OUString const &rContent) const
static LanguageType s_eLanguageDefault
static LinkIdMap & GetLinkIdMap()
std::unique_ptr< StringRangeEnumerator > mpRangeEnum
~SwEnhancedPDFExportHelper()
Instances of SwFields and those derived from it occur 0 to n times.
void GatherFields(std::vector< SwFormatField * > &rvFormatFields, bool bCollectOnlyInDocNodes=true) const
Base class of all fields.
OUString ExpandField(bool bCached, SwRootFrame const *pLayout) const
expand the field.
SwFieldIds Which() const
ResId.
LanguageType GetLanguage() const
Language at field position.
general base class for all free-flowing frames
virtual SwFrameFormat & GetFrameFormat() override
FontLineStyle GetUnderline() const
short GetEscapement() const
FontStrikeout GetStrikeout() const
FontEmphasisMark GetEmphasisMark() const
SwFontScript GetActual() const
FontLineStyle GetOverline() const
LanguageType GetLanguage() const
const SwRect & getFrameArea() const
Base class of the Writer layout elements.
tools::Long GetLeftMargin() const
tools::Long GetRightMargin() const
SwSectionFrame * FindSctFrame()
SwTabFrame * FindTabFrame()
SwFrameType GetType() const
bool IsHeaderFrame() const
const SwSortedObjs * GetDrawObjs() const
bool IsRightToLeft() const
const SwRowFrame * IsInFollowFlowRow() const
SwLayoutFrame * GetNextCellLeaf()
bool IsFooterFrame() const
SwLayoutFrame * GetUpper()
SwRootFrame * getRootFrame()
bool IsNoTextFrame() const
SwPageFrame * FindPageFrame()
const SwRowFrame * IsInSplitTableRow() const
SwFrame * FindFooterOrHeader()
tools::Long GetTopMargin() const
SwLayoutFrame * GetPrevCellLeaf()
virtual sal_uInt16 GetSubType() const override
Get/set sub type.
const OUString & GetSetRefName() const
sal_uInt16 GetSeqNo() const
Get/set SequenceNo (of interest only for REF_SEQUENCEFLD).
const SwContentFrame * ContainsContent() const
Checks if the frame contains one or more ContentFrame's anywhere in his subsidiary structure; if so t...
const SwFrame * Lower() const
Base class for anything that can be part of a line in the Writer layout.
PortionType GetWhichPor() const
TextFrameIndex GetLen() const
const SwContentNode * GetNode() const
Marks a node in the document model.
Base class of the Writer document model elements.
SwTextNode * GetTextNode()
Inline methods from Node.hxx.
bool IsInRedlines() const
Checks if this node is in redlines.
SwSectionNode * FindSectionNode()
Search section node, in which it is.
SwOLENode * GetOLENode()
Inline methods from Node.hxx.
SwNodeType GetNodeType() const
const SwOutlineNodes & GetOutLineNds() const
Array of all OutlineNodes.
SwNode * DocumentSectionStartNode(SwNode *pNode) const
const SwNumFormat & Get(sal_uInt16 i) const
A tree of numbered nodes.
virtual bool IsCounted() const
Return if this node is counted.
bool IsFirst(const SwNumberTreeNode *pNode) const
Return if a node is first non-phantom child of this node.
SwNumberTreeNode * GetPred(bool bSibling=false) const
Returns the greatest descendant of the root that is smaller than this node, aka the predecessor of th...
SwNumberTreeNode * GetParent() const
Returns the parent of this node.
const SwOLEObj & GetOLEObj() const
css::uno::Reference< css::embed::XEmbeddedObject > const & GetOleRef()
const SwPosition * GetPoint() const
A page of the document layout.
bool HasContentPortions() const
bool HasNumberingPortion(FootnoteOrNot) const
virtual OUString GetPar1() const override
Author.
const OUString & GetText() const
tools::Long GetHeight(const SwRect &rRect) const
tools::Long GetRightMargin(const SwFrame &rFrame) const
tools::Long GetTopMargin(const SwFrame &rFrame) const
tools::Long GetWidth(const SwRect &rRect) const
tools::Long GetBottomMargin(const SwFrame &rFrame) const
tools::Long GetLeftMargin(const SwFrame &rFrame) const
tools::Long GetLeft(const SwRect &rRect) const
tools::Long GetRight(const SwRect &rRect) const
Of course Writer needs its own rectangles.
void Height(tools::Long nNew)
void Top(const tools::Long nTop)
void Right(const tools::Long nRight)
void Pos(const Point &rNew)
tools::Rectangle SVRect() const
void Left(const tools::Long nLeft)
void Width(tools::Long nNew)
SwPageFrame * GetPageByPageNum(sal_uInt16 _nPageNum) const
Get page frame by physical page number looping through the lowers, which are page frame,...
const SwPageFrame * GetPageAtPos(const Point &rPt, const Size *pSize=nullptr, bool bExtend=false) const
Point rPt: The point that should be used to find the page Size pSize: If given, we return the (first)...
bool IsHideRedlines() const
Replacement for sw::DocumentRedlineManager::GetRedlineFlags() (this is layout-level redline hiding).
SwRowFrame is one table row in the document layout.
bool IsRepeatedHeadline() const
const SwTableLine * GetTabLine() const
const SwSection & GetSection() const
const SwTOXBase * GetTOXBase() const
SectionType GetType() const
static void FillProgName(const OUString &rName, OUString &rFillName, SwGetPoolIdFromName)
SwTabFrame is one table in the document layout, containing rows (which contain cells).
SwTabFrame * FindMaster(bool bFirstMaster=false) const
const SwTabFrame * GetFollow() const
const SwTable * GetTable() const
bool IsInHeadline(const SwFrame &rFrame) const
sal_Int32 getRowSpan() const
SwTable is one table in the document model, containing rows (which contain cells).
const Frame_Info * mpFrameInfo
void BeginInlineStructureElements()
const Por_Info * mpPorInfo
void SetAttributes(vcl::PDFWriter::StructElement eType)
static bool IsExportTaggedPDF(const OutputDevice &rOut)
void CheckRestoreTag() const
void EndStructureElements()
const Num_Info * mpNumInfo
void BeginBlockStructureElements()
void BeginNumberedListStructureElements()
SwTaggedPDFHelper(const Num_Info *pNumInfo, const Frame_Info *pFrameInfo, const Por_Info *pPorInfo, OutputDevice const &rOut)
sal_Int32 m_nRestoreCurrentTag
vcl::PDFExtOutDevData * mpPDFExtOutDevData
sal_uInt8 m_nEndStructureElement
void BeginTag(vcl::PDFWriter::StructElement aTagRole, const OUString &rTagName)
A wrapper around SfxPoolItem to store the start position of (usually) a text portion,...
const SwFormatFootnote & GetFootnote() const
sal_Int32 GetStart() const
const SwFormatField & GetFormatField() const
Represents the visualization of a paragraph.
std::pair< SwTextNode *, sal_Int32 > MapViewToModel(TextFrameIndex nIndex) const
map position in potentially merged text frame to SwPosition
SwParaPortion * GetPara()
SwTextNode * GetTextNodeFirst()
SwTextNode const * GetTextNodeForParaProps() const
SwTextNode is a paragraph in the document model.
bool IsOutline() const
Returns if this text node is an outline.
const SwNodeNum * GetNum(SwRootFrame const *pLayout=nullptr, SwListRedlineType eRedline=SwListRedlineType::SHOW) const
bool IsCountedInList() const
SwNumRule * GetNumRule(bool bInParent=true) const
Returns numbering rule of this text node.
int GetActualListLevel(SwListRedlineType eRedline=SwListRedlineType::SHOW) const
Returns the actual list level of this text node, when it is a list item.
bool IsListRestart() const
int GetAttrOutlineLevel() const
Returns outline level of this text node.
const OUString & GetText() const
void CalcRect(const SwLinePortion &rPor, SwRect *pRect, SwRect *pIntersect=nullptr, const bool bInsideBox=false) const
Calculate the rectangular area where the portion takes place.
SwTextPaintInfo & GetInfo()
SwTextFrame * GetTextFrame()
const OUString & GetText() const
TextFrameIndex GetIdx() const
bool IsViewLocked() const
sal_Int32 GetPageNumAndSetOffsetForPDF(OutputDevice &rOut, const SwRect &rRect) const
const SwNodes & GetNodes() const
SwRootFrame * GetLayout() const
sal_uInt16 GetPageCount() const
const IDocumentOutlineNodes * getIDocumentOutlineNodesAccess() const
std::vector< Value >::size_type size_type
bool SetCurrentStructureElement(sal_Int32 nElement)
void SetStructureBoundingBox(const tools::Rectangle &rRect)
void CreateNote(const tools::Rectangle &rRect, const PDFNote &rNote, sal_Int32 nPageNr=-1)
sal_Int32 CreateScreen(const tools::Rectangle &rRect, OUString const &rAltText, OUString const &rMimeType, sal_Int32 nPageNr, SdrObject const *pObj)
sal_Int32 EnsureStructureElement(void const *key)
sal_Int32 CreateDest(const tools::Rectangle &rRect, sal_Int32 nPageNr=-1, PDFWriter::DestAreaType eType=PDFWriter::DestAreaType::XYZ)
std::vector< PDFExtOutDevBookmarkEntry > & GetBookmarks()
bool GetIsExportTaggedPDF() const
void BeginStructureElement(sal_Int32 id)
void SetDocumentLocale(const css::lang::Locale &rLoc)
void SetStructureAttributeNumerical(PDFWriter::StructAttribute eAttr, sal_Int32 nValue)
bool GetIsExportNotes() const
void SetScreenStream(sal_Int32 nScreenId, const OUString &rURL)
void SetAlternateText(const OUString &rText)
sal_Int32 GetCurrentStructureElement() const
void SetStructureAttribute(PDFWriter::StructAttribute eAttr, PDFWriter::StructAttributeValue eVal)
void SetActualText(const OUString &rText)
void SetScreenURL(sal_Int32 nScreenId, const OUString &rURL)
void DescribeRegisteredDest(sal_Int32 nDestId, const tools::Rectangle &rRect, sal_Int32 nPageNr, PDFWriter::DestAreaType eType=PDFWriter::DestAreaType::XYZ)
void SetLinkURL(sal_Int32 nLinkId, const OUString &rURL)
bool GetIsExportBookmarks() const
sal_Int32 CreateOutlineItem(sal_Int32 nParent, const OUString &rText, sal_Int32 nDestID)
bool GetIsExportNamedDestinations() const
sal_Int32 CreateNamedDest(const OUString &sDestName, const tools::Rectangle &rRect, sal_Int32 nPageNr=-1)
sal_Int32 CreateLink(const tools::Rectangle &rRect, OUString const &rAltText, sal_Int32 nPageNr=-1)
void EndStructureElement()
void InitStructureElement(sal_Int32 id, PDFWriter::StructElement eType, const OUString &rAlias)
void SetLinkDest(sal_Int32 nLinkId, sal_Int32 nDestId)
virtual SotClipboardFormatId GetFormat(const TransferableDataHelper &aHelper) override
std::vector< SwGetINetAttr > SwGetINetAttrs
bool JumpToSwMark(SwViewShell const *pVwSh, std::u16string_view rMark)
EmbeddedObjectRef * pObject
constexpr TypedWhichId< SwFormatURL > RES_URL(117)
constexpr TypedWhichId< SvxLanguageItem > RES_CHRATR_LANGUAGE(10)
constexpr TypedWhichId< SvxLanguageItem > RES_CHRATR_CTL_LANGUAGE(29)
constexpr TypedWhichId< SwFormatINetFormat > RES_TXTATR_INETFMT(51)
constexpr TypedWhichId< SvxLanguageItem > RES_CHRATR_CJK_LANGUAGE(24)
constexpr TypedWhichId< SwFormatField > RES_TXTATR_FIELD(RES_TXTATR_NOEND_BEGIN)
constexpr TypedWhichId< SwFormatCharFormat > RES_TXTATR_CHARFMT(52)
constexpr TypedWhichId< SwDrawFrameFormat > RES_DRAWFRMFMT(165)
constexpr TypedWhichId< SfxBoolItem > RES_DECORATIVE(140)
LanguageType GetAppLanguage()
sal_Int16 GetI18NScriptTypeOfLanguage(LanguageType nLang)
LanguageType GetLanguage(SfxItemSet const &aSet, sal_uInt16 nLangWhichId)
const LanguageTag & getLocale()
void GotoPrevLayoutTextFrame(SwNodeIndex &rIndex, SwRootFrame const *const pLayout)
bool IsFootnoteDeleted(IDocumentRedlineAccess const &rIDRA, SwTextFootnote const &rTextFootnote)
bool IsParaPropsNode(SwRootFrame const &rLayout, SwTextNode const &rNode)
SwTextNode * GetParaPropsNode(SwRootFrame const &rLayout, SwNode const &rNode)
bool IsShrinkPageForPostIts(SwViewShell const &rShell, SwPrintData const &)
SwNodeOffset min(const SwNodeOffset &a, const SwNodeOffset &b)
bool GoNextPara(SwPaM &rPam, SwMoveFnCollection const &aPosPara)
SwMoveFnCollection const & fnParaStart
const SwLinePortion & mrPor
const SwTextPainter & mrTextPainter
bool const m_isNumberingLabel
For querying the INet-attributes for Navigator.
void Assign(const SwNode &rNd, SwNodeOffset nDelta, sal_Int32 nContentOffset=0)
These all set both nNode and nContent.
OUString SwResId(TranslateId aId)
std::vector< SwRect > SwRects