tdf#62728 Provide both A/1 and A/2 in PDF export dialog
Followup commit to ed4a0eed82e2f, adding back the A/1 option.
Change-Id: I9f509cb77f045de260bc22fc494fe4ecaac29bbc
Reviewed-on: https://gerrit.libreoffice.org/74941
Tested-by: Jenkins
Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
(cherry picked from commit 49cfcf777d03abf59557cad021b4e5c4445de3c0)
Reviewed-on: https://gerrit.libreoffice.org/74960
diff --git a/filter/source/pdf/impdialog.cxx b/filter/source/pdf/impdialog.cxx
index 52e22cf..213f2cc 100644
--- a/filter/source/pdf/impdialog.cxx
+++ b/filter/source/pdf/impdialog.cxx
@@ -462,7 +462,9 @@ ImpPDFTabGeneralPage::ImpPDFTabGeneralPage(TabPageParent pParent, const SfxItemS
, mxNfQuality(m_xBuilder->weld_metric_spin_button("quality", FieldUnit::PERCENT))
, mxCbReduceImageResolution(m_xBuilder->weld_check_button("reduceresolution"))
, mxCoReduceImageResolution(m_xBuilder->weld_combo_box("resolution"))
, mxCbPDFA2b(m_xBuilder->weld_check_button("pdfa"))
, mxCbPDFA(m_xBuilder->weld_check_button("pdfa"))
, mxRbPDFA1b(m_xBuilder->weld_radio_button("pdfa1"))
, mxRbPDFA2b(m_xBuilder->weld_radio_button("pdfa2"))
, mxCbTaggedPDF(m_xBuilder->weld_check_button("tagged"))
, mxCbExportFormFields(m_xBuilder->weld_check_button("forms"))
, mxFormsFrame(m_xBuilder->weld_widget("formsframe"))
@@ -530,16 +532,31 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem(ImpPDFTabDialog* pParent)
mxCbWatermark->connect_toggled( LINK( this, ImpPDFTabGeneralPage, ToggleWatermarkHdl ) );
mxFtWatermark->set_sensitive(false );
mxEdWatermark->set_sensitive( false );
mxCbPDFA2b->connect_toggled(LINK(this, ImpPDFTabGeneralPage, ToggleExportPDFAHdl));
mxCbPDFA->connect_toggled(LINK(this, ImpPDFTabGeneralPage, ToggleExportPDFAHdl));
mxRbPDFA1b->connect_toggled(LINK(this, ImpPDFTabGeneralPage, ToggleExportPDFAHdl));
mxRbPDFA2b->connect_toggled(LINK(this, ImpPDFTabGeneralPage, ToggleExportPDFAHdl));
switch( pParent->mnPDFTypeSelection )
{
default:
mxCbPDFA2b->set_active( false ); // PDF 1.5
// PDF 1.5
mxCbPDFA->set_active( false );
mxRbPDFA1b->set_active( false );
mxRbPDFA2b->set_active( true );
break;
case 2: mxCbPDFA2b->set_active(true); // PDF/A-2a
case 1:
// PDF A-1b
mxCbPDFA->set_active(true);
mxRbPDFA1b->set_active(true);
mxRbPDFA2b->set_active(false);
break;
case 2:
// PDF A-2b
mxCbPDFA->set_active(true);
mxRbPDFA2b->set_active(true);
mxRbPDFA1b->set_active(false);
break;
}
ToggleExportPDFAHdl( *mxCbPDFA2b );
ToggleExportPDFAHdl( *mxCbPDFA );
mxCbExportFormFields->connect_toggled( LINK( this, ImpPDFTabGeneralPage, ToggleExportFormFieldsHdl ) );
@@ -547,7 +564,7 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem(ImpPDFTabDialog* pParent)
mbTaggedPDFUserSelection = pParent->mbUseTaggedPDF;
mbExportFormFieldsUserSelection = pParent->mbExportFormFields;
if( !mxCbPDFA2b->get_active() )
if( !mxCbPDFA->get_active() )
{
// the value for PDF/A set by the ToggleExportPDFAHdl method called before
mxCbTaggedPDF->set_active( mbTaggedPDFUserSelection );
@@ -643,9 +660,12 @@ void ImpPDFTabGeneralPage::GetFilterConfigItem( ImpPDFTabDialog* pParent )
}
pParent->mnPDFTypeSelection = 0;
if( mxCbPDFA2b->get_active() )
if( mxCbPDFA->get_active() )
{
pParent->mnPDFTypeSelection = 2;
if( mxRbPDFA1b->get_active() )
pParent->mnPDFTypeSelection = 1;
pParent->mbUseTaggedPDF = mbTaggedPDFUserSelection;
pParent->mbExportFormFields = mbExportFormFieldsUserSelection;
}
@@ -758,12 +778,10 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleExportPDFAHdl, weld::ToggleButton&,
// set the security page status (and its controls as well)
ImpPDFTabSecurityPage* pSecPage = mpParent ? mpParent->getSecurityPage() : nullptr;
if (pSecPage)
{
pSecPage->ImplPDFASecurityControl(!mxCbPDFA2b->get_active());
}
pSecPage->ImplPDFASecurityControl(!mxCbPDFA->get_active());
// PDF/A-1 needs tagged PDF, so force disable the control, will be forced in pdfexport.
bool bPDFA1Sel = mxCbPDFA2b->get_active();
bool bPDFA1Sel = mxCbPDFA->get_active();
mxFormsFrame->set_sensitive(bPDFA1Sel);
if(bPDFA1Sel)
{
@@ -774,24 +792,28 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleExportPDFAHdl, weld::ToggleButton&,
mbExportFormFieldsUserSelection = mxCbExportFormFields->get_active();
mxCbExportFormFields->set_active(false);
mxCbExportFormFields->set_sensitive(false);
mxRbPDFA1b->set_sensitive(true);
mxRbPDFA2b->set_sensitive(true);
}
else
{
// retrieve the values of subordinate controls
mxCbTaggedPDF->set_sensitive(false);
mxCbTaggedPDF->set_sensitive(true);
mxCbTaggedPDF->set_active(mbTaggedPDFUserSelection);
mxCbExportFormFields->set_active(mbExportFormFieldsUserSelection);
mxCbExportFormFields->set_sensitive(true);
mxRbPDFA1b->set_sensitive(false);
mxRbPDFA2b->set_sensitive(false);
}
// PDF/A-2 doesn't allow launch action, so enable/disable the selection on
// Link page
ImpPDFTabLinksPage* pLinksPage = mpParent ? mpParent->getLinksPage() : nullptr;
if (pLinksPage)
pLinksPage->ImplPDFALinkControl(!mxCbPDFA2b->get_active());
pLinksPage->ImplPDFALinkControl(!mxCbPDFA->get_active());
// if a password was set, inform the user that this will not be used in PDF/A case
if( mxCbPDFA2b->get_active() && pSecPage && pSecPage->hasPassword() )
if( mxCbPDFA->get_active() && pSecPage && pSecPage->hasPassword() )
{
std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(m_xContainer.get(),
VclMessageType::Warning, VclButtonsType::Ok,
@@ -1351,7 +1373,7 @@ void ImpPDFTabLinksPage::SetFilterConfigItem( const ImpPDFTabDialog* pParent )
ImpPDFTabGeneralPage* pGeneralPage = pParent->getGeneralPage();
if (pGeneralPage)
ImplPDFALinkControl(!pGeneralPage->mxCbPDFA2b->get_active());
ImplPDFALinkControl(!pGeneralPage->mxCbPDFA->get_active());
}
diff --git a/filter/source/pdf/impdialog.hxx b/filter/source/pdf/impdialog.hxx
index 73b86e77..9f9b8e3 100644
--- a/filter/source/pdf/impdialog.hxx
+++ b/filter/source/pdf/impdialog.hxx
@@ -182,7 +182,9 @@ class ImpPDFTabGeneralPage : public SfxTabPage
std::unique_ptr<weld::MetricSpinButton> mxNfQuality;
std::unique_ptr<weld::CheckButton> mxCbReduceImageResolution;
std::unique_ptr<weld::ComboBox> mxCoReduceImageResolution;
std::unique_ptr<weld::CheckButton> mxCbPDFA2b;
std::unique_ptr<weld::CheckButton> mxCbPDFA;
std::unique_ptr<weld::RadioButton> mxRbPDFA1b;
std::unique_ptr<weld::RadioButton> mxRbPDFA2b;
std::unique_ptr<weld::CheckButton> mxCbTaggedPDF;
std::unique_ptr<weld::CheckButton> mxCbExportFormFields;
std::unique_ptr<weld::Widget> mxFormsFrame;
@@ -227,7 +229,7 @@ public:
void GetFilterConfigItem(ImpPDFTabDialog* paParent);
void SetFilterConfigItem(ImpPDFTabDialog* paParent);
bool IsPdfaSelected() const { return mxCbPDFA2b->get_active(); }
bool IsPdfaSelected() const { return mxCbPDFA->get_active(); }
};
/// Class tab page viewer
diff --git a/filter/uiconfig/ui/pdfgeneralpage.ui b/filter/uiconfig/ui/pdfgeneralpage.ui
index 2443e68..1d5173f 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.22.1 -->
<!-- Generated with glade 3.20.4 -->
<interface domain="flt">
<requires lib="gtk+" version="3.18"/>
<object class="GtkAdjustment" id="adjustment1">
@@ -462,22 +462,6 @@
</packing>
</child>
<child>
<object class="GtkCheckButton" id="pdfa">
<property name="label" translatable="yes" context="pdfgeneralpage|pdfa">Archive P_DF/A-2b (ISO 19005-2)</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes" context="pdfgeneralpage|pdfa|tooltip_text">Creates an ISO 19005-2 compliant PDF file, ideal for long-term document preservation</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="tagged">
<property name="label" translatable="yes" context="pdfgeneralpage|tagged">_Tagged PDF (add document structure)</property>
<property name="visible">True</property>
@@ -716,6 +700,74 @@
<property name="top_attach">9</property>
</packing>
</child>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="row_spacing">6</property>
<child>
<object class="GtkCheckButton" id="pdfa">
<property name="label" translatable="yes" context="pdfgeneralpage|pdfa">Archive (P_DF/A, ISO 19005)</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes" context="pdfgeneralpage|pdfa|tooltip_text">Creates an ISO 19005-2 compliant PDF file, ideal for long-term document preservation</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="pdfagrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">20</property>
<property name="column_spacing">14</property>
<child>
<object class="GtkRadioButton" id="pdfa2">
<property name="label" translatable="yes" context="pdfgeneralpage|pdfa">PDF/A-2b</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="pdfa1">
<property name="label" translatable="yes" context="pdfgeneralpage|pdfa">PDF/A-1b</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">pdfa2</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
</object>
</child>
</object>