diff options
author | Ashod Nakashian <ashod.nakashian@collabora.co.uk> | 2018-05-24 06:59:39 -0400 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2018-05-24 18:12:35 +0200 |
commit | 570c9afc48526c1a85d17d2d9c7c235cba4104ed (patch) | |
tree | 5f8bef7070daf230f3722a9d3ee77da33f8cde8a /sd | |
parent | 4b244589762ad43be15fa637b5d5d12340ccc668 (diff) |
sd: make the imported PDF page exactly as original
i.e. no borders or larger page than rendered PDF
Change-Id: I1f356cceeec1d5d9f1728f0e29160fdd9241a221
Reviewed-on: https://gerrit.libreoffice.org/54764
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Tested-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/source/filter/pdf/sdpdffilter.cxx | 37 |
1 files changed, 6 insertions, 31 deletions
diff --git a/sd/source/filter/pdf/sdpdffilter.cxx b/sd/source/filter/pdf/sdpdffilter.cxx index 5bca171dc64a..4f7bd4ed0a6c 100644 --- a/sd/source/filter/pdf/sdpdffilter.cxx +++ b/sd/source/filter/pdf/sdpdffilter.cxx @@ -129,37 +129,12 @@ bool SdPdfFilter::Import() // Create the page and insert the Graphic. SdPage* pPage = mrDocument.GetSdPage(nPageNumber++, PageKind::Standard); - Size aGrfSize(OutputDevice::LogicToLogic(aGraphic.GetPrefSize(), aGraphic.GetPrefMapMode(), - MapMode(MapUnit::Map100thMM))); - - Size aPagSize(pPage->GetSize()); - aPagSize.AdjustWidth(-(pPage->GetLftBorder() + pPage->GetRgtBorder())); - aPagSize.AdjustHeight(-(pPage->GetUppBorder() + pPage->GetLwrBorder())); - - // scale to fit page - if (((aGrfSize.Height() > aPagSize.Height()) || (aGrfSize.Width() > aPagSize.Width())) - && aGrfSize.Height() && aPagSize.Height()) - { - const double fGrfWH = static_cast<double>(aGrfSize.Width()) / aGrfSize.Height(); - const double fWinWH = static_cast<double>(aPagSize.Width()) / aPagSize.Height(); - - // adjust graphic to page size (scales) - if (fGrfWH < fWinWH) - { - aGrfSize.setWidth(static_cast<long>(aPagSize.Height() * fGrfWH)); - aGrfSize.setHeight(aPagSize.Height()); - } - else if (fGrfWH > 0.F) - { - aGrfSize.setWidth(aPagSize.Width()); - aGrfSize.setHeight(static_cast<long>(aPagSize.Width() / fGrfWH)); - } - } - - // Set the output rectangle of the Graphic. - Point aPos; - aPos.setX(((aPagSize.Width() - aGrfSize.Width()) >> 1) + pPage->GetLftBorder()); - aPos.setY(((aPagSize.Height() - aGrfSize.Height()) >> 1) + pPage->GetUppBorder()); + const Size aGrfSize(OutputDevice::LogicToLogic(aGraphic.GetPrefSize(), aGraphic.GetPrefMapMode(), + MapMode(MapUnit::Map100thMM))); + + // Make the page size match the rendered image. + pPage->SetSize(aGrfSize); + Point aPos(0, 0); pPage->InsertObject(new SdrGrafObj(aGraphic, Rectangle(aPos, aGrfSize))); } |