From 770a1752cda8ba629ce11bd514869a2c800f0817 Mon Sep 17 00:00:00 2001 From: David Tardon Date: Thu, 24 Mar 2016 14:52:35 +0100 Subject: [PATCH] tdf#39271 allow to export only notes pages Change-Id: Ia03062cf31b6bab8196dc317a7e8fbcfc86fadf0 --- filter/source/pdf/impdialog.cxx | 23 +++++++++++++ filter/source/pdf/impdialog.hxx | 3 ++ filter/source/pdf/pdfexport.cxx | 18 ++++++---- filter/source/pdf/pdfexport.hxx | 1 + filter/uiconfig/ui/pdfgeneralpage.ui | 38 +++++++++++++++++----- .../schema/org/openoffice/Office/Common.xcs | 7 ++++ 6 files changed, 75 insertions(+), 15 deletions(-) diff --git a/filter/source/pdf/impdialog.cxx b/filter/source/pdf/impdialog.cxx index 89a1351..8c9bd31 100644 --- a/filter/source/pdf/impdialog.cxx +++ b/filter/source/pdf/impdialog.cxx @@ -86,6 +86,7 @@ ImpPDFTabDialog::ImpPDFTabDialog(vcl::Window* pParent, Sequence< PropertyValue > mbExportNotes( true ), mbViewPDF( false ), mbExportNotesPages( false ), + mbExportOnlyNotesPages( false ), mbUseTransitionEffects( false ), mbIsSkipEmptyPages( true ), mbAddStream( false ), @@ -193,7 +194,10 @@ ImpPDFTabDialog::ImpPDFTabDialog(vcl::Window* pParent, Sequence< PropertyValue > mbUseTaggedPDF = maConfigItem.ReadBool( "UseTaggedPDF", false ); mnPDFTypeSelection = maConfigItem.ReadInt32( "SelectPdfVersion", 0 ); if ( mbIsPresentation ) + { mbExportNotesPages = maConfigItem.ReadBool( "ExportNotesPages", false ); + mbExportOnlyNotesPages = maConfigItem.ReadBool( "ExportOnlyNotesPages", false ); + } mbExportNotes = maConfigItem.ReadBool( "ExportNotes", false ); mbViewPDF = maConfigItem.ReadBool( "ViewPDFAfterExport", false ); @@ -395,7 +399,10 @@ Sequence< PropertyValue > ImpPDFTabDialog::GetFilterData() maConfigItem.WriteInt32("SelectPdfVersion", mnPDFTypeSelection ); if ( mbIsPresentation ) + { maConfigItem.WriteBool( "ExportNotesPages", mbExportNotesPages ); + maConfigItem.WriteBool( "ExportOnlyNotesPages", mbExportOnlyNotesPages ); + } maConfigItem.WriteBool( "ExportNotes", mbExportNotes ); maConfigItem.WriteBool( "ViewPDFAfterExport", mbViewPDF ); @@ -543,6 +550,7 @@ ImpPDFTabGeneralPage::ImpPDFTabGeneralPage(vcl::Window* pParent, const SfxItemSe get(mpCbExportHiddenSlides, "hiddenpages"); get(mpCbExportNotes, "comments"); get(mpCbExportNotesPages, "notes"); + get(mpCbExportOnlyNotesPages, "onlynotes"); get(mpCbExportEmptyPages, "emptypages"); get(mpCbViewPDF, "viewpdf"); @@ -580,6 +588,7 @@ void ImpPDFTabGeneralPage::dispose() mpCbExportNotes.clear(); mpCbViewPDF.clear(); mpCbExportNotesPages.clear(); + mpCbExportOnlyNotesPages.clear(); mpCbExportEmptyPages.clear(); mpCbAddStream.clear(); mpCbWatermark.clear(); @@ -661,6 +670,10 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem( ImpPDFTabDialog* paParent ) mpRbRange->SetText(get("slides")->GetText()); mpCbExportNotesPages->Show(true); mpCbExportNotesPages->Check(paParent->mbExportNotesPages); + mpCbExportNotesPages->SetToggleHdl( LINK(this, ImpPDFTabGeneralPage, ToggleExportNotesPagesHdl ) ); + mpCbExportOnlyNotesPages->Show(); + mpCbExportOnlyNotesPages->Check(paParent->mbExportOnlyNotesPages); + mpCbExportOnlyNotesPages->Enable(paParent->mbExportNotesPages); mpCbExportHiddenSlides->Show(true); mpCbExportHiddenSlides->Check(paParent->mbExportHiddenSlides); } @@ -668,6 +681,8 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem( ImpPDFTabDialog* paParent ) { mpCbExportNotesPages->Show(false); mpCbExportNotesPages->Check(false); + mpCbExportOnlyNotesPages->Show(false); + mpCbExportOnlyNotesPages->Check(false); mpCbExportHiddenSlides->Show(false); mpCbExportHiddenSlides->Check(false); } @@ -693,7 +708,10 @@ void ImpPDFTabGeneralPage::GetFilterConfigItem( ImpPDFTabDialog* paParent ) paParent->mbExportNotes = mpCbExportNotes->IsChecked(); paParent->mbViewPDF = mpCbViewPDF->IsChecked(); if ( mbIsPresentation ) + { paParent->mbExportNotesPages = mpCbExportNotesPages->IsChecked(); + paParent->mbExportOnlyNotesPages = mpCbExportOnlyNotesPages->IsChecked(); + } paParent->mbExportBookmarks = mpCbExportBookmarks->IsChecked(); if ( mbIsPresentation ) paParent->mbExportHiddenSlides = mpCbExportHiddenSlides->IsChecked(); @@ -758,6 +776,11 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleExportFormFieldsHdl) return 0; } +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleExportNotesPagesHdl) +{ + mpCbExportOnlyNotesPages->Enable(mpCbExportNotesPages->IsChecked()); + return 0; +} IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleCompressionHdl) { diff --git a/filter/source/pdf/impdialog.hxx b/filter/source/pdf/impdialog.hxx index e828721..191bd48 100644 --- a/filter/source/pdf/impdialog.hxx +++ b/filter/source/pdf/impdialog.hxx @@ -104,6 +104,7 @@ protected: bool mbExportNotes; bool mbViewPDF; bool mbExportNotesPages; + bool mbExportOnlyNotesPages; bool mbUseTransitionEffects; bool mbIsSkipEmptyPages; bool mbAddStream; @@ -218,6 +219,7 @@ class ImpPDFTabGeneralPage : public SfxTabPage VclPtr mpCbExportNotes; VclPtr mpCbViewPDF; VclPtr mpCbExportNotesPages; + VclPtr mpCbExportOnlyNotesPages; VclPtr mpCbExportEmptyPages; VclPtr mpCbAddStream; @@ -237,6 +239,7 @@ class ImpPDFTabGeneralPage : public SfxTabPage DECL_LINK( ToggleWatermarkHdl, void* ); DECL_LINK( ToggleAddStreamHdl, void* ); DECL_LINK( ToggleExportFormFieldsHdl, void* ); + DECL_LINK( ToggleExportNotesPagesHdl, void* ); public: DECL_LINK( ToggleExportPDFAHdl, void* ); diff --git a/filter/source/pdf/pdfexport.cxx b/filter/source/pdf/pdfexport.cxx index daf4689..1856308 100644 --- a/filter/source/pdf/pdfexport.cxx +++ b/filter/source/pdf/pdfexport.cxx @@ -100,6 +100,7 @@ PDFExport::PDFExport( const Reference< XComponent >& rxSrcDoc, mbExportNotes ( true ), mbViewPDF ( true ), mbExportNotesPages ( false ), + mbExportOnlyNotesPages ( false ), mbUseTransitionEffects ( true ), mbExportBookmarks ( true ), mbExportHiddenSlides ( false ), @@ -464,6 +465,8 @@ bool PDFExport::Export( const OUString& rFile, const Sequence< PropertyValue >& rFilterData[ nData ].Value >>= mbViewPDF; else if ( rFilterData[ nData ].Name == "ExportNotesPages" ) rFilterData[ nData ].Value >>= mbExportNotesPages; + else if ( rFilterData[ nData ].Name == "ExportOnlyNotesPages" ) + rFilterData[ nData ].Value >>= mbExportOnlyNotesPages; else if ( rFilterData[ nData ].Name == "UseTransitionEffects" ) rFilterData[ nData ].Value >>= mbUseTransitionEffects; else if ( rFilterData[ nData ].Name == "ExportFormFields" ) @@ -840,7 +843,7 @@ bool PDFExport::Export( const OUString& rFile, const Sequence< PropertyValue >& aSelection = Any(); aSelection <<= mxSrcDoc; } - bool bSecondPassForImpressNotes = false; + bool bExportNotesPages = false; bool bReChangeToNormalView = false; OUString sShowOnlineLayout( "ShowOnlineLayout" ); uno::Reference< beans::XPropertySet > xViewProperties; @@ -870,8 +873,9 @@ bool PDFExport::Export( const OUString& rFile, const Sequence< PropertyValue >& { uno::Reference< drawing::XShapes > xShapes; // sj: do not allow to export notes when if ( ! ( aSelection >>= xShapes ) ) // exporting a selection -> todo: in the dialog - bSecondPassForImpressNotes = true; // the export notes checkbox needs to be disabled + bExportNotesPages = true; } + const bool bExportPages = bExportNotesPages ? !mbExportOnlyNotesPages : true; if( aPageRange.isEmpty() ) { @@ -885,18 +889,18 @@ bool PDFExport::Export( const OUString& rFile, const Sequence< PropertyValue >& if ( pResMgr ) { sal_Int32 nTotalPageCount = aRangeEnum.size(); - if ( bSecondPassForImpressNotes ) + if ( bExportPages && bExportNotesPages ) nTotalPageCount *= 2; mxStatusIndicator->start( OUString( ResId( PDF_PROGRESS_BAR, *pResMgr ) ), nTotalPageCount ); } } - if( nPageCount > 0 ) + bRet = nPageCount > 0; + + if ( bRet && bExportPages ) bRet = ExportSelection( *pPDFWriter, xRenderable, aSelection, aRangeEnum, aRenderOptions, nPageCount ); - else - bRet = false; - if ( bRet && bSecondPassForImpressNotes ) + if ( bRet && bExportNotesPages ) { rExportNotesValue <<= sal_True; bRet = ExportSelection( *pPDFWriter, xRenderable, aSelection, aRangeEnum, aRenderOptions, nPageCount ); diff --git a/filter/source/pdf/pdfexport.hxx b/filter/source/pdf/pdfexport.hxx index 499beb1..47e960a 100644 --- a/filter/source/pdf/pdfexport.hxx +++ b/filter/source/pdf/pdfexport.hxx @@ -49,6 +49,7 @@ private: bool mbExportNotes; bool mbViewPDF; bool mbExportNotesPages; + bool mbExportOnlyNotesPages; bool mbUseTransitionEffects; bool mbExportBookmarks; bool mbExportHiddenSlides; diff --git a/filter/uiconfig/ui/pdfgeneralpage.ui b/filter/uiconfig/ui/pdfgeneralpage.ui index 7ba4a25..52314ac 100644 --- a/filter/uiconfig/ui/pdfgeneralpage.ui +++ b/filter/uiconfig/ui/pdfgeneralpage.ui @@ -1,5 +1,5 @@ - + @@ -111,8 +111,8 @@ False True - 0 Slides: + 0 0 @@ -191,9 +191,9 @@ True False - 0 _Quality: True + 0 @@ -378,10 +378,10 @@ True False - 0 Text: True watermarkentry + 0 @@ -512,10 +512,10 @@ True False - 0 Submit _format: True format + 0 0 @@ -604,7 +604,7 @@ 0 - 9 + 10 @@ -619,7 +619,7 @@ 0 - 10 + 11 @@ -634,7 +634,7 @@ 0 - 8 + 9 @@ -652,6 +652,28 @@ 7 + + + True + False + 12 + + + Export onl_y notes pages + True + True + False + True + 0 + True + + + + + 0 + 8 + + diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs index ad22cd2..782734a 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs @@ -5134,6 +5134,13 @@ false + + + Specifies if only notes pages (i.e., not slides) are exported to PDF. (Notes pages + are available in Impress documents only). + + false + Specifies slide transitions are exported to PDF. This option -- 2.5.0