filter/source/pdf/pdfexport.cxx | 57 ++++++++++++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 14 deletions(-)
New commits: commit 4be6ce6a4888118a10d75cb756b712adb77973a2 Author: merttumer <mert.tu...@collabora.com> AuthorDate: Fri Mar 15 20:11:15 2019 +0300 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Mon Aug 19 09:36:13 2019 +0200 Make pdf export watermarks look like watermarks on online Signed-off-by: merttumer <mert.tu...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/69317 Reviewed-by: Jan Holesovsky <ke...@collabora.com> Tested-by: Jan Holesovsky <ke...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/76289 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> (cherry picked from commit e6bbfd641c6c65ebdebae92f2382689d3ea4a089) Change-Id: Ib5af8c61dd9a539c63594a91b8ec17ff07327feb Reviewed-on: https://gerrit.libreoffice.org/77575 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/filter/source/pdf/pdfexport.cxx b/filter/source/pdf/pdfexport.cxx index eed998112f4d..12dea0a241ca 100644 --- a/filter/source/pdf/pdfexport.cxx +++ b/filter/source/pdf/pdfexport.cxx @@ -1148,7 +1148,25 @@ void PDFExport::ImplWriteWatermark( vcl::PDFWriter& rWriter, const Size& rPageSi void PDFExport::ImplWriteTiledWatermark( vcl::PDFWriter& rWriter, const Size& rPageSize ) { - vcl::Font aFont( OUString( "Liberation Sans" ), Size( 0, 40 ) ); + OUString watermark = msTiledWatermark; + int watermarkLength = watermark.getLength(); + // Maximum number of characters in one line. + // it is set to 21 to make it look like tiled watermaks as online in secure view + const int lineLength = 21; + int lnIndex = lineLength; + int lnCount = watermarkLength / lineLength; + + while(lnCount) + { + OUString tempstr = watermark; + watermark = watermark.copy(0, lnIndex); + watermark += "\n"; + watermark += tempstr.copy(lnIndex); + lnIndex += lineLength; + lnCount--; + } + + vcl::Font aFont( "Liberation Sans", Size( 0, 40 ) ); aFont.SetItalic( ITALIC_NONE ); aFont.SetWidthType( WIDTH_NORMAL ); aFont.SetWeight( WEIGHT_NORMAL ); @@ -1161,8 +1179,14 @@ void PDFExport::ImplWriteTiledWatermark( vcl::PDFWriter& rWriter, const Size& rP pDev->SetFont(aFont); pDev->SetMapMode( MapMode( MapUnit::MapPoint ) ); int w = 0; - long nTextWidth = (rPageSize.Width()-60) / 4; - while((w = pDev->GetTextWidth(msTiledWatermark)) > nTextWidth) + int watermarkcount = ((rPageSize.Width()) / 200)+1; + long nTextWidth = rPageSize.Width() / (watermarkcount*1.5); + OUString oneLineText = watermark; + + if(watermark.getLength() > lineLength) + oneLineText = watermark.copy(0, lineLength); + + while((w = pDev->GetTextWidth(oneLineText)) > nTextWidth) { if(w==0) break; @@ -1171,27 +1195,32 @@ void PDFExport::ImplWriteTiledWatermark( vcl::PDFWriter& rWriter, const Size& rP aFont.SetFontHeight(nNewHeight); pDev->SetFont( aFont ); } + + // maximum number of watermark count for the width + if(watermarkcount > 8) + watermarkcount = 8; + pDev->Pop(); rWriter.Push(); rWriter.SetMapMode( MapMode( MapUnit::MapPoint ) ); rWriter.SetFont(aFont); rWriter.SetTextColor( Color(19,20,22) ); - Point aTextPoint; - tools::Rectangle aTextRect; - aTextPoint = Point(70,80); + // center watermarks horizontally + Point aTextPoint( (rPageSize.Width()/2) - (((nTextWidth*watermarkcount)+(watermarkcount-1)*(nTextWidth/2))/2), + pDev->GetTextHeight()); - for( int i = 0; i < 3; i ++) + for( int i = 0; i < watermarkcount; i ++) { - while(aTextPoint.getY()+pDev->GetTextHeight() <= rPageSize.Height()-40) + while(aTextPoint.getY()+pDev->GetTextHeight()*2 <= rPageSize.Height()) { - aTextRect = tools::Rectangle(Point(aTextPoint.getX(), aTextPoint.getY()-pDev->GetTextHeight()), Size(pDev->GetTextWidth(msTiledWatermark),pDev->GetTextHeight())); + tools::Rectangle aTextRect(aTextPoint, Size(nTextWidth,pDev->GetTextHeight()*2)); pDev->Push(); rWriter.SetClipRegion(); rWriter.BeginTransparencyGroup(); rWriter.SetTextColor( Color(19,20,22) ); - rWriter.DrawText(aTextPoint, msTiledWatermark); + rWriter.DrawText(aTextRect, watermark, DrawTextFlags::MultiLine|DrawTextFlags::Center|DrawTextFlags::VCenter); rWriter.EndTransparencyGroup( aTextRect, 50 ); pDev->Pop(); @@ -1199,14 +1228,14 @@ void PDFExport::ImplWriteTiledWatermark( vcl::PDFWriter& rWriter, const Size& rP rWriter.SetClipRegion(); rWriter.BeginTransparencyGroup(); rWriter.SetTextColor( Color(236,235,233) ); - rWriter.DrawText(aTextPoint, msTiledWatermark); + rWriter.DrawText(aTextRect, watermark, DrawTextFlags::MultiLine|DrawTextFlags::Center|DrawTextFlags::VCenter); rWriter.EndTransparencyGroup( aTextRect, 50 ); pDev->Pop(); - aTextPoint.Move(0,(rPageSize.Height()-40)/4); + aTextPoint.Move(0, pDev->GetTextHeight()*3); } - aTextPoint=Point( aTextPoint.getX(), 80 ); - aTextPoint.Move( (rPageSize.Width()-120)/3, 0 ); + aTextPoint=Point( aTextPoint.getX(), pDev->GetTextHeight() ); + aTextPoint.Move( nTextWidth*1.5, 0 ); } rWriter.Pop(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits