diff options
author | Michael Stahl <michael.stahl@allotropia.de> | 2023-11-01 20:31:44 +0100 |
---|---|---|
committer | Michael Stahl <michael.stahl@allotropia.de> | 2023-11-02 11:53:42 +0100 |
commit | a71da3b7a80ca32b595a8ca0ea3da650b0af376c (patch) | |
tree | a3fbc2515b59c4c538face0344ed041f466f2968 /sw | |
parent | 44ca7832dea2c4e6243ed9fdbc828c25c2466bbd (diff) |
tdf#156565 sw: PDF/UA export: split Link SE at line break
There must be one Link SE per Link Annotation, so ensure that a new one
is created for a new line.
(regression from commit 4c5283a3a11008a06a995c49ed777734dc1f6066)
Change-Id: I2585d9e22a435d7716f48fec89a78149c129f71d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158775
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/inc/EnhancedPDFExportHelper.hxx | 1 | ||||
-rw-r--r-- | sw/source/core/text/EnhancedPDFExportHelper.cxx | 14 | ||||
-rw-r--r-- | sw/source/core/text/itrpaint.cxx | 2 |
3 files changed, 17 insertions, 0 deletions
diff --git a/sw/inc/EnhancedPDFExportHelper.hxx b/sw/inc/EnhancedPDFExportHelper.hxx index be3c45383061..6b2e2655ea43 100644 --- a/sw/inc/EnhancedPDFExportHelper.hxx +++ b/sw/inc/EnhancedPDFExportHelper.hxx @@ -183,6 +183,7 @@ class SwTaggedPDFHelper ~SwTaggedPDFHelper(); static bool IsExportTaggedPDF( const OutputDevice& rOut ); + static void EndCurrentLink(OutputDevice const&); }; /* diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx index e224d33901a4..48c938264994 100644 --- a/sw/source/core/text/EnhancedPDFExportHelper.cxx +++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx @@ -1698,6 +1698,20 @@ void SwTaggedPDFHelper::EndStructureElements() CheckRestoreTag(); } +void SwTaggedPDFHelper::EndCurrentLink(OutputDevice const& rOut) +{ + vcl::PDFExtOutDevData *const pPDFExtOutDevData( + dynamic_cast<vcl::PDFExtOutDevData *>(rOut.GetExtOutDevData())); + if (pPDFExtOutDevData && pPDFExtOutDevData->GetSwPDFState()->m_oCurrentLink) + { + pPDFExtOutDevData->GetSwPDFState()->m_oCurrentLink.reset(); + pPDFExtOutDevData->EndStructureElement(); +#if OSL_DEBUG_LEVEL > 1 + aStructStack.pop_back(); +#endif + } +} + void SwTaggedPDFHelper::EndCurrentAll() { if (mpPDFExtOutDevData->GetSwPDFState()->m_oCurrentSpan) diff --git a/sw/source/core/text/itrpaint.cxx b/sw/source/core/text/itrpaint.cxx index 4f0d412f2597..5b6bb1288d57 100644 --- a/sw/source/core/text/itrpaint.cxx +++ b/sw/source/core/text/itrpaint.cxx @@ -162,6 +162,8 @@ void SwTextPainter::DrawTextLine( const SwRect &rPaint, SwSaveClip &rClip, roTaggedParagraph.emplace(nullptr, &aFrameInfo, nullptr, *GetInfo().GetOut()); } + SwTaggedPDFHelper::EndCurrentLink(*GetInfo().GetOut()); + // Optimization! SwTwips nMaxRight = std::min<SwTwips>( rPaint.Right(), Right() ); const SwTwips nTmpLeft = GetInfo().X(); |