From d46e2e2fc7ace2a014a205089ff237f3467ced35 Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Thu, 24 Mar 2016 14:52:35 +0100
Subject: [PATCH] tdf#39271 allow to export only notes pages
(cherry picked from commit 6392347e27ed500b30acc62e9e27618eab5a8ee0)
Change-Id: Ia03062cf31b6bab8196dc317a7e8fbcfc86fadf0
---
filter/source/pdf/impdialog.cxx | 22 ++++++++++++
filter/source/pdf/impdialog.hxx | 4 +++
filter/source/pdf/pdfexport.cxx | 22 +++++++-----
filter/source/pdf/pdfexport.hxx | 1 +
filter/uiconfig/ui/pdfgeneralpage.ui | 40 +++++++++++++++++-----
.../schema/org/openoffice/Office/Common.xcs | 7 ++++
6 files changed, 78 insertions(+), 18 deletions(-)
diff --git a/filter/source/pdf/impdialog.cxx b/filter/source/pdf/impdialog.cxx
index f1c86a8..d158b68 100644
--- a/filter/source/pdf/impdialog.cxx
+++ b/filter/source/pdf/impdialog.cxx
@@ -84,6 +84,7 @@ ImpPDFTabDialog::ImpPDFTabDialog(vcl::Window* pParent, Sequence< PropertyValue >
mbExportNotes( true ),
mbViewPDF( false ),
mbExportNotesPages( false ),
+ mbExportOnlyNotesPages( false ),
mbUseTransitionEffects( false ),
mbIsSkipEmptyPages( true ),
mbIsExportPlaceholders( false ),
@@ -192,7 +193,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 );
@@ -394,7 +398,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(mpCbExportPlaceholders, "exportplaceholders" );
get(mpCbViewPDF, "viewpdf");
@@ -581,6 +589,7 @@ void ImpPDFTabGeneralPage::dispose()
mpCbExportNotes.clear();
mpCbViewPDF.clear();
mpCbExportNotesPages.clear();
+ mpCbExportOnlyNotesPages.clear();
mpCbExportEmptyPages.clear();
mpCbExportPlaceholders.clear();
mpCbAddStream.clear();
@@ -664,6 +673,10 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem( ImpPDFTabDialog* paParent )
mpRbRange->SetText(get<FixedText>("slides")->GetText());
mpCbExportNotesPages->Show();
mpCbExportNotesPages->Check(paParent->mbExportNotesPages);
+ mpCbExportNotesPages->SetToggleHdl( LINK(this, ImpPDFTabGeneralPage, ToggleExportNotesPagesHdl ) );
+ mpCbExportOnlyNotesPages->Show();
+ mpCbExportOnlyNotesPages->Check(paParent->mbExportOnlyNotesPages);
+ mpCbExportOnlyNotesPages->Enable(paParent->mbExportNotesPages);
mpCbExportHiddenSlides->Show();
mpCbExportHiddenSlides->Check(paParent->mbExportHiddenSlides);
}
@@ -671,6 +684,8 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem( ImpPDFTabDialog* paParent )
{
mpCbExportNotesPages->Show(false);
mpCbExportNotesPages->Check(false);
+ mpCbExportOnlyNotesPages->Show(false);
+ mpCbExportOnlyNotesPages->Check(false);
mpCbExportHiddenSlides->Show(false);
mpCbExportHiddenSlides->Check(false);
}
@@ -701,7 +716,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();
@@ -770,6 +788,10 @@ IMPL_LINK_NOARG_TYPED(ImpPDFTabGeneralPage, ToggleExportFormFieldsHdl, CheckBox&
mpFormsFrame->Enable(mpCbExportFormFields->IsChecked());
}
+IMPL_LINK_NOARG_TYPED(ImpPDFTabGeneralPage, ToggleExportNotesPagesHdl, CheckBox&, void)
+{
+ mpCbExportOnlyNotesPages->Enable(mpCbExportNotesPages->IsChecked());
+}
IMPL_LINK_NOARG_TYPED(ImpPDFTabGeneralPage, ToggleCompressionHdl, RadioButton&, void)
{
diff --git a/filter/source/pdf/impdialog.hxx b/filter/source/pdf/impdialog.hxx
index 72938b0..db62c77 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 mbIsExportPlaceholders;
@@ -219,6 +220,7 @@ class ImpPDFTabGeneralPage : public SfxTabPage
VclPtr<CheckBox> mpCbExportNotes;
VclPtr<CheckBox> mpCbViewPDF;
VclPtr<CheckBox> mpCbExportNotesPages;
+ VclPtr<CheckBox> mpCbExportOnlyNotesPages;
VclPtr<CheckBox> mpCbExportEmptyPages;
VclPtr<CheckBox> mpCbExportPlaceholders;
@@ -239,8 +241,10 @@ class ImpPDFTabGeneralPage : public SfxTabPage
DECL_LINK_TYPED( ToggleWatermarkHdl, CheckBox&, void );
DECL_LINK_TYPED( ToggleAddStreamHdl, CheckBox&, void );
DECL_LINK_TYPED( ToggleExportFormFieldsHdl, CheckBox&, void );
+ DECL_LINK_TYPED( ToggleExportNotesPagesHdl, CheckBox&, void );
void TogglePagesHdl();
+
public:
DECL_LINK_TYPED( ToggleExportPDFAHdl, CheckBox&, void );
diff --git a/filter/source/pdf/pdfexport.cxx b/filter/source/pdf/pdfexport.cxx
index a55bdc9..18d8e31 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" )
@@ -844,7 +847,7 @@ bool PDFExport::Export( const OUString& rFile, const Sequence< PropertyValue >&
aSelection = Any();
aSelection <<= mxSrcDoc;
}
- bool bSecondPassForImpressNotes = false;
+ bool bExportNotesPages = false;
bool bReChangeToNormalView = false;
const OUString sShowOnlineLayout( "ShowOnlineLayout" );
bool bReHideWhitespace = false;
@@ -881,10 +884,11 @@ bool PDFExport::Export( const OUString& rFile, const Sequence< PropertyValue >&
if ( mbExportNotesPages && aCreator == "Impress" )
{
- 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
+ uno::Reference< drawing::XShapes > xShapes; // do not allow to export notes when exporting a selection
+ if ( ! ( aSelection >>= xShapes ) ) // TODO: in the dialog the export notes checkbox needs to be disabled
+ bExportNotesPages = true;
}
+ const bool bExportPages = bExportNotesPages ? !mbExportOnlyNotesPages : true;
if( aPageRange.isEmpty() )
{
@@ -898,18 +902,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( 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 7e8528f..f802585 100644
--- a/filter/source/pdf/pdfexport.hxx
+++ b/filter/source/pdf/pdfexport.hxx
@@ -50,6 +50,7 @@ private:
bool mbExportPlaceholders;
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 8a46e0f..836fd25 100644
--- a/filter/uiconfig/ui/pdfgeneralpage.ui
+++ b/filter/uiconfig/ui/pdfgeneralpage.ui
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 -->
+<!-- Generated with glade 3.20.0 -->
<interface>
<requires lib="gtk+" version="3.0"/>
<object class="GtkAdjustment" id="adjustment1">
@@ -111,8 +111,8 @@
<object class="GtkLabel" id="slides">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">Slides:</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -191,9 +191,9 @@
<object class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Quality:</property>
<property name="use_underline">True</property>
+ <property name="xalign">0</property>
</object>
</child>
</object>
@@ -378,10 +378,10 @@
<object class="GtkLabel" id="watermarklabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">Text:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">watermarkentry</property>
+ <property name="xalign">0</property>
</object>
</child>
</object>
@@ -512,10 +512,10 @@
<object class="GtkLabel" id="label7">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">Submit _format:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">format</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -607,7 +607,7 @@
<property name="top_attach">7</property>
</packing>
</child>
- <child>
+ <child>
<object class="GtkCheckButton" id="emptypages">
<property name="label" translatable="yes">Exp_ort automatically inserted blank pages</property>
<property name="visible">True</property>
@@ -619,7 +619,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">10</property>
+ <property name="top_attach">11</property>
</packing>
</child>
<child>
@@ -634,7 +634,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">11</property>
+ <property name="top_attach">12</property>
</packing>
</child>
<child>
@@ -649,7 +649,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">8</property>
+ <property name="top_attach">10</property>
</packing>
</child>
<child>
@@ -667,6 +667,28 @@
<property name="top_attach">8</property>
</packing>
</child>
+ <child>
+ <object class="GtkAlignment" id="onlynotesframe">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkCheckButton" id="onlynotes">
+ <property name="label" translatable="yes">Export onl_y notes pages</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">9</property>
+ </packing>
+ </child>
</object>
</child>
</object>
diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
index d9e81e5..0ef4dc4 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
@@ -5141,6 +5141,13 @@
</info>
<value>false</value>
</prop>
+ <prop oor:name="ExportOnlyNotesPages" oor:type="xs:boolean" oor:nillable="false">
+ <info>
+ <desc>Specifies if only notes pages (i.e., not slides) are exported to PDF. (Notes pages
+ are available in Impress documents only).</desc>
+ </info>
+ <value>false</value>
+ </prop>
<prop oor:name="UseTransitionEffects" oor:type="xs:boolean" oor:nillable="false">
<info>
<desc>Specifies slide transitions are exported to PDF. This option
--
2.7.4