filter/source/pdf/impdialog.cxx | 95 +++++--- filter/source/pdf/impdialog.hxx | 10 filter/uiconfig/ui/pdfgeneralpage.ui | 331 +++++++++++++++--------------- sc/qa/uitest/calc_tests4/exportToPDF.py | 2 sd/qa/uitest/impress_tests/exportToPDF.py | 2 sw/qa/uitest/writer_tests4/exportToPDF.py | 2 6 files changed, 247 insertions(+), 195 deletions(-)
New commits: commit de682c059fc21f1d03a6a03ac0fae51bdba252e9 Author: Tomaž Vajngerl <[email protected]> AuthorDate: Wed Dec 11 13:42:03 2024 +0900 Commit: Miklos Vajna <[email protected]> CommitDate: Mon Dec 16 13:56:17 2024 +0100 pdf: Rearrange general tab of PDF dialog, add PDF vers. selection Repurpuses PDF/A combobox to also add PDF 1.7 and PDF 2.0 as options, as those are exclusive (either you have classic PDF, or you select PDF/A which is a special version of some PDF version. No need to have a check box for PDF/A anymore, so this was removed. - Moved the version selection to top - Added "Forms" frame, which for all the form options. - Moved Tagged PDF into "Structure" frame. - Reworded some text (extended tips, tooltips) for PDF versions Change-Id: I731222ee02afea6a49e4213d18f27d1beae9da10 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178270 Tested-by: Miklos Vajna <[email protected]> Reviewed-by: Miklos Vajna <[email protected]> diff --git a/filter/source/pdf/impdialog.cxx b/filter/source/pdf/impdialog.cxx index e10a6d60df16..296ed1babb19 100644 --- a/filter/source/pdf/impdialog.cxx +++ b/filter/source/pdf/impdialog.cxx @@ -484,12 +484,11 @@ ImpPDFTabGeneralPage::ImpPDFTabGeneralPage(weld::Container* pPage, weld::DialogC , mxNfQuality(m_xBuilder->weld_metric_spin_button("quality", FieldUnit::PERCENT)) , mxCbReduceImageResolution(m_xBuilder->weld_check_button("reduceresolution")) , mxCoReduceImageResolution(m_xBuilder->weld_combo_box("resolution")) - , mxCbPDFA(m_xBuilder->weld_check_button("pdfa")) , mxCbPDFUA(m_xBuilder->weld_check_button("pdfua")) - , mxRbPDFAVersion(m_xBuilder->weld_combo_box("pdfaversion")) + , mxRbPDFVersion(m_xBuilder->weld_combo_box("pdf_version")) , mxCbTaggedPDF(m_xBuilder->weld_check_button("tagged")) , mxCbExportFormFields(m_xBuilder->weld_check_button("forms")) - , mxFormsFrame(m_xBuilder->weld_widget("formsframe")) + , mxFormsFrame(m_xBuilder->weld_widget("forms_options_grid")) , mxLbFormsFormat(m_xBuilder->weld_combo_box("format")) , mxCbAllowDuplicateFieldNames(m_xBuilder->weld_check_button("allowdups")) , mxCbExportBookmarks(m_xBuilder->weld_check_button("bookmarks")) @@ -518,6 +517,17 @@ ImpPDFTabGeneralPage::~ImpPDFTabGeneralPage() mxPasswordUnusedWarnDialog->response(RET_CANCEL); } +bool ImpPDFTabGeneralPage::IsPdfaSelected() const +{ + OUString const& rVersion = mxRbPDFVersion->get_active_id(); + + return + rVersion == u"1"_ustr || + rVersion == u"2"_ustr || + rVersion == u"3"_ustr || + rVersion == u"4"_ustr; +} + void ImpPDFTabGeneralPage::SetFilterConfigItem(ImpPDFTabDialog* pParent) { mpParent = pParent; @@ -565,38 +575,51 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem(ImpPDFTabDialog* pParent) mxCbWatermark->connect_toggled( LINK( this, ImpPDFTabGeneralPage, ToggleWatermarkHdl ) ); mxFtWatermark->set_sensitive(false ); mxEdWatermark->set_sensitive( false ); - mxCbPDFA->connect_toggled(LINK(this, ImpPDFTabGeneralPage, TogglePDFVersionOrUniversalAccessibilityHandle)); - const bool bIsPDFA = (pParent->mnPDFTypeSelection>=1) && (pParent->mnPDFTypeSelection <= 3); - mxCbPDFA->set_active(bIsPDFA); - switch( pParent->mnPDFTypeSelection ) + bool bIsPDFA = false; + switch (pParent->mnPDFTypeSelection) { case 1: // PDF/A-1 - mxRbPDFAVersion->set_active_id("1"); + bIsPDFA = true; + mxRbPDFVersion->set_active_id("1"); break; case 2: // PDF/A-2 - mxRbPDFAVersion->set_active_id("2"); + bIsPDFA = true; + mxRbPDFVersion->set_active_id("2"); break; case 3: // PDF/A-3 + bIsPDFA = true; + mxRbPDFVersion->set_active_id("3"); + break; + case 4: // PDF/A-4 + bIsPDFA = true; + mxRbPDFVersion->set_active_id("4"); + break; + case 20: // PDF 2.0 + mxRbPDFVersion->set_active_id("20"); + break; + case 17: default: // PDF 1.x - mxRbPDFAVersion->set_active_id("3"); + mxRbPDFVersion->set_active_id("17"); break; } + mxRbPDFVersion->connect_changed(LINK(this, ImpPDFTabGeneralPage, SelectPDFVersion)); + const bool bIsPDFUA = pParent->mbPDFUACompliance; mxCbPDFUA->set_active(bIsPDFUA); - mxCbPDFUA->connect_toggled(LINK(this, ImpPDFTabGeneralPage, TogglePDFVersionOrUniversalAccessibilityHandle)); + mxCbPDFUA->connect_toggled(LINK(this, ImpPDFTabGeneralPage, TogglePDFUniversalAccessibilityHandle)); mxCbPDFUA->set_sensitive(!pParent->maConfigItem.IsReadOnly("PDFUACompliance")); - // the TogglePDFVersionOrUniversalAccessibilityHandle handler will read or write the *UserSelection based - // on the mxCbPDFA (= bIsPDFA) state, so we have to prepare the correct input state. + // the thePDFVersionChanged will read or write the *UserSelection based on widget state, + // so we have to prepare the correct input state. if (bIsPDFA || bIsPDFUA) mxCbTaggedPDF->set_active(pParent->mbUseTaggedPDFUserSelection); else mbUseTaggedPDFUserSelection = pParent->mbUseTaggedPDFUserSelection; mxCbExportBookmarks->set_active(pParent->mbExportBookmarksUserSelection); - TogglePDFVersionOrUniversalAccessibilityHandle(*mxCbPDFA); + thePDFVersionChanged(); mxCbExportFormFields->set_active(pParent->mbExportFormFields); mxCbExportFormFields->connect_toggled( LINK( this, ImpPDFTabGeneralPage, ToggleExportFormFieldsHdl ) ); @@ -744,23 +767,23 @@ void ImpPDFTabGeneralPage::GetFilterConfigItem( ImpPDFTabDialog* pParent ) pParent->mnPDFTypeSelection = 0; pParent->mbUseTaggedPDF = mxCbTaggedPDF->get_active(); - const bool bIsPDFA = mxCbPDFA->get_active(); + const bool bIsPDFA = IsPdfaSelected(); const bool bIsPDFUA = mxCbPDFUA->get_active(); - if (bIsPDFA) - { - pParent->mnPDFTypeSelection = 3; - OUString currentPDFAMode = mxRbPDFAVersion->get_active_id(); - if( currentPDFAMode == "1" ) - pParent->mnPDFTypeSelection = 1; - else if(currentPDFAMode == "2") - pParent->mnPDFTypeSelection = 2; - } + OUString sCurrentPDFVersion = mxRbPDFVersion->get_active_id(); + sal_Int32 nValue = sCurrentPDFVersion.toInt32(); + + static constexpr const auto constValidValues = std::to_array<sal_Int32>({1, 2, 3, 4, 17, 20}); + if (std::find(constValidValues.begin(), constValidValues.end(), nValue) != constValidValues.end()) + pParent->mnPDFTypeSelection = nValue; + else + pParent->mnPDFTypeSelection = 17; pParent->mbPDFUACompliance = bIsPDFUA; if (!bIsPDFA && !bIsPDFUA) mbUseTaggedPDFUserSelection = pParent->mbUseTaggedPDF; + if (!bIsPDFUA) { pParent->mbExportBookmarksUserSelection = pParent->mbExportBookmarks; @@ -900,9 +923,9 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleAddStreamHdl, weld::Toggleable&, voi } } -IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePDFVersionOrUniversalAccessibilityHandle, weld::Toggleable&, void) +void ImpPDFTabGeneralPage::thePDFVersionChanged() { - const bool bIsPDFA = mxCbPDFA->get_active(); + const bool bIsPDFA = IsPdfaSelected(); const bool bIsPDFUA = mxCbPDFUA->get_active(); // set the security page status (and its controls as well) @@ -912,8 +935,8 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePDFVersionOrUniversalAccessibilityHa mxCbTaggedPDF->set_sensitive( !bIsPDFA && !bIsPDFUA && !IsReadOnlyProperty("UseTaggedPDF")); - mxRbPDFAVersion->set_sensitive( - bIsPDFA && !IsReadOnlyProperty("SelectPdfVersion")); + + mxRbPDFVersion->set_sensitive(!IsReadOnlyProperty("SelectPdfVersion")); if (bIsPDFA || bIsPDFUA) { @@ -961,8 +984,8 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePDFVersionOrUniversalAccessibilityHa mxCbExportBookmarks->set_active(mpParent->mbExportBookmarksUserSelection); mxCbUseReferenceXObject->set_active(mpParent->mbUseReferenceXObjectUserSelection); } - mxCbExportBookmarks->set_sensitive( - !bIsPDFUA && !IsReadOnlyProperty("ExportBookmarks")); + + mxCbExportBookmarks->set_sensitive(!bIsPDFUA && !IsReadOnlyProperty("ExportBookmarks")); mxCbUseReferenceXObject->set_sensitive(!bIsPDFUA); ImpPDFTabOpnFtrPage *const pOpenPage(mpParent ? mpParent->getOpenPage() : nullptr); @@ -977,6 +1000,16 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePDFVersionOrUniversalAccessibilityHa pLinksPage->ImplPDFALinkControl(!bIsPDFA); } +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePDFUniversalAccessibilityHandle, weld::Toggleable&, void) +{ + thePDFVersionChanged(); +} + +IMPL_LINK_NOARG(ImpPDFTabGeneralPage, SelectPDFVersion, weld::ComboBox&, void) +{ + thePDFVersionChanged(); +} + /// The option features tab page ImpPDFTabOpnFtrPage::ImpPDFTabOpnFtrPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rCoreSet) : SfxTabPage(pPage, pController, "filter/ui/pdfviewpage.ui", "PdfViewPage", &rCoreSet) @@ -1597,7 +1630,7 @@ void ImpPDFTabLinksPage::SetFilterConfigItem( const ImpPDFTabDialog* pParent ) ImpPDFTabGeneralPage* pGeneralPage = pParent->getGeneralPage(); if (pGeneralPage) - ImplPDFALinkControl(!pGeneralPage->mxCbPDFA->get_active()); + ImplPDFALinkControl(!pGeneralPage->IsPdfaSelected()); } diff --git a/filter/source/pdf/impdialog.hxx b/filter/source/pdf/impdialog.hxx index 0db3c4e66ed5..1b697b257ece 100644 --- a/filter/source/pdf/impdialog.hxx +++ b/filter/source/pdf/impdialog.hxx @@ -197,9 +197,8 @@ 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> mxCbPDFA; std::unique_ptr<weld::CheckButton> mxCbPDFUA; - std::unique_ptr<weld::ComboBox> mxRbPDFAVersion; + std::unique_ptr<weld::ComboBox> mxRbPDFVersion; std::unique_ptr<weld::CheckButton> mxCbTaggedPDF; std::unique_ptr<weld::CheckButton> mxCbExportFormFields; std::unique_ptr<weld::Widget> mxFormsFrame; @@ -238,7 +237,8 @@ class ImpPDFTabGeneralPage : public SfxTabPage void ToggleSheetsHdl(); void EnableExportNotesPages(); - DECL_LINK(TogglePDFVersionOrUniversalAccessibilityHandle, weld::Toggleable&, void); + DECL_LINK(TogglePDFUniversalAccessibilityHandle, weld::Toggleable&, void); + DECL_LINK(SelectPDFVersion, weld::ComboBox&, void); std::shared_ptr<weld::MessageDialog> mxPasswordUnusedWarnDialog; @@ -247,6 +247,8 @@ class ImpPDFTabGeneralPage : public SfxTabPage return mpParent && mpParent->maConfigItem.IsReadOnly(rPropertyName); } + void thePDFVersionChanged(); + public: ImpPDFTabGeneralPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet); @@ -256,7 +258,7 @@ public: void GetFilterConfigItem(ImpPDFTabDialog* paParent); void SetFilterConfigItem(ImpPDFTabDialog* paParent); - bool IsPdfaSelected() const { return mxCbPDFA->get_active(); } + bool IsPdfaSelected() const; bool IsPdfUaSelected() const { return mxCbPDFUA->get_active(); } }; diff --git a/filter/uiconfig/ui/pdfgeneralpage.ui b/filter/uiconfig/ui/pdfgeneralpage.ui index f09113793d07..5a1819f0acd1 100644 --- a/filter/uiconfig/ui/pdfgeneralpage.ui +++ b/filter/uiconfig/ui/pdfgeneralpage.ui @@ -527,15 +527,15 @@ <property name="orientation">vertical</property> <property name="spacing">12</property> <child> - <object class="GtkFrame" id="frame4"> + <object class="GtkFrame" id="general_frame"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="margin-end">6</property> <property name="label-xalign">0</property> <property name="shadow-type">none</property> <child> - <!-- n-columns=1 n-rows=6 --> - <object class="GtkGrid" id="grid10"> + <!-- n-columns=1 n-rows=3 --> + <object class="GtkGrid" id="general_grid"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="margin-start">12</property> @@ -547,68 +547,167 @@ <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|embed|tooltip_text">Creates a PDF that is easily editable in %PRODUCTNAME</property> + <property name="tooltip-text" translatable="yes" context="pdfgeneralpage|embed|tooltip_text">Creates a PDF that embeds the original ODF file as an attachment.</property> <property name="halign">start</property> <property name="use-underline">True</property> <property name="draw-indicator">True</property> <child internal-child="accessible"> <object class="AtkObject" id="embed-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|embed">This setting enables you to export the document as a .pdf file containing two file formats: PDF and ODF.</property> + <property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|embed">This setting enables you to export the document as a .pdf file containing two file formats: PDF and ODF as an attachment. </property> </object> </child> </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">0</property> + <property name="top-attach">2</property> </packing> </child> <child> - <object class="GtkCheckButton" id="tagged"> - <property name="label" translatable="yes" context="pdfgeneralpage|tagged">_Tagged PDF (add document structure)</property> + <!-- n-columns=1 n-rows=1 --> + <object class="GtkGrid"> <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|tagged|tooltip_text">Includes a document's content structure information in a PDF</property> - <property name="halign">start</property> - <property name="use-underline">True</property> - <property name="draw-indicator">True</property> - <child internal-child="accessible"> - <object class="AtkObject" id="tagged-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|tagged">Select to write PDF tags. This can increase file size by huge amounts.</property> + <property name="can-focus">False</property> + <property name="row-spacing">6</property> + <child> + <!-- n-columns=2 n-rows=1 --> + <object class="GtkGrid" id="pdfagrid"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-start">18</property> + <property name="hexpand">True</property> + <property name="column-spacing">14</property> + <child> + <object class="GtkComboBoxText" id="pdf_version"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="tooltip-text" translatable="yes" context="pdfgeneralpage|pdf_version|tooltip_text">Select the PDF version. PDF/A version variants creates an ISO 19005 compliant PDF file, ideal for long-term document preservation.</property> + <property name="hexpand">True</property> + <property name="active">3</property> + <items> + <item id="17" translatable="yes" context="pdfgeneralpage|pdf_version">PDF 1.7</item> + <item id="20" translatable="yes" context="pdfgeneralpage|pdf_version">PDF 2.0</item> + <item id="1" context="pdfgeneralpage|pdf_version">PDF/A-1b (PDF 1.4 base)</item> + <item id="2" context="pdfgeneralpage|pdf_version">PDF/A-2b (PDF 1.7 base)</item> + <item id="3" context="pdfgeneralpage|pdf_version">PDF/A-3b (PDF 1.7 base)</item> + <item id="4" translatable="yes" context="pdfgeneralpage|pdf_version">PDF/A-4 (PDF 2.0 base)</item> + </items> + <accessibility> + <relation type="labelled-by" target="pdf_version_label"/> + </accessibility> + <child internal-child="accessible"> + <object class="AtkObject" id="pdf_version-atkobject"> + <property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|pdf_version">Versions can be either the "classic" PDF (i.e. PDF 1.7, PDF 2.0) or PDF/A conformant. PDF/A is defined as an electronic document file format for long term preservation and archiving. It allows only a subset of PDF features that are compatible with that use case. For example: All fonts that were used in the source document will be embedded into the generated PDF file. PDF tags will be written.</property> + </object> + </child> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="pdfabox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkLabel" id="pdf_version_label"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">start</property> + <property name="valign">baseline</property> + <property name="vexpand">True</property> + <property name="label" translatable="yes" context="pdfgeneralpage|pdfaversion">PDF_ Version:</property> + <property name="use-underline">True</property> + <accessibility> + <relation type="label-for" target="pdf_version"/> + </accessibility> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> + </child> </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> </child> </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">3</property> + <property name="top-attach">0</property> </packing> </child> <child> - <object class="GtkCheckButton" id="forms"> - <property name="label" translatable="yes" context="pdfgeneralpage|forms">Create PDF for_m</property> + <object class="GtkCheckButton" id="pdfua"> + <property name="label" translatable="yes" context="pdfgeneralpage|pdfua">Universal Accessibilit_y (PDF/UA)</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|forms|tooltip_text">Creates a PDF with fields that can be filled out</property> + <property name="tooltip-text" translatable="yes" context="pdfgeneralpage|pdfua|tooltip_text">Creates a universal accessibility-compliant PDF file that follows the requirements of PDF/UA (ISO 14289) specifications.</property> <property name="halign">start</property> <property name="use-underline">True</property> <property name="draw-indicator">True</property> <child internal-child="accessible"> - <object class="AtkObject" id="forms-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|forms">Choose to create a PDF form. This can be filled out and printed by the user of the PDF document.</property> + <object class="AtkObject" id="pdfua-atkobject"> + <property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|pdfua">Creates a universal accessibility-complying PDF file that follows the requirements of PDF/UA (ISO 14289) specifications.</property> </object> </child> </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">4</property> + <property name="top-attach">1</property> </packing> </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="general_label"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="pdfgeneralpage|general_label">General</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="forms_frame"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label-xalign">0</property> + <property name="shadow-type">none</property> + <child> + <!-- n-columns=1 n-rows=2 --> + <object class="GtkGrid" id="forms_grid"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="double-buffered">False</property> + <property name="margin-start">12</property> + <property name="margin-top">6</property> + <property name="row-spacing">3</property> <child> <!-- n-columns=2 n-rows=2 --> - <object class="GtkGrid" id="formsframe"> + <object class="GtkGrid" id="forms_options_grid"> <property name="visible">True</property> <property name="can-focus">False</property> + <property name="double-buffered">False</property> <property name="margin-start">18</property> <property name="hexpand">True</property> <property name="row-spacing">6</property> @@ -657,12 +756,12 @@ </packing> </child> <child> - <object class="GtkBox" id="submitformatbox"> + <object class="GtkBox" id="submitformatbox1"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="orientation">vertical</property> <child> - <object class="GtkLabel" id="label7"> + <object class="GtkLabel" id="submit_format_label"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="halign">start</property> @@ -687,136 +786,39 @@ </packing> </child> </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">5</property> - </packing> - </child> - <child> - <!-- n-columns=1 n-rows=2 --> - <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">Archival (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="halign">start</property> - <property name="use-underline">True</property> - <property name="draw-indicator">True</property> - <child internal-child="accessible"> - <object class="AtkObject" id="pdfa-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|pdfa">Converts to the PDF/A-2b or PDF/A-1b format. This is defined as an electronic document file format for long term preservation. All fonts that were used in the source document will be embedded into the generated PDF file. PDF tags will be written.</property> - </object> - </child> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">0</property> - </packing> - </child> - <child> - <!-- n-columns=2 n-rows=1 --> - <object class="GtkGrid" id="pdfagrid"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="margin-start">18</property> - <property name="hexpand">True</property> - <property name="column-spacing">14</property> - <child> - <object class="GtkComboBoxText" id="pdfaversion"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="hexpand">True</property> - <property name="active">3</property> - <items> - <item id="1" context="pdfgeneralpage|pdfaversion">PDF/A-1b</item> - <item id="2" context="pdfgeneralpage|pdfaversion">PDF/A-2b</item> - <item id="3" context="pdfgeneralpage|pdfaversion">PDF/A-3b</item> - </items> - <accessibility> - <relation type="labelled-by" target="pdfaversionlabel"/> - </accessibility> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">0</property> - </packing> - </child> - <child> - <object class="GtkBox" id="pdfabox"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkLabel" id="pdfaversionlabel"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="halign">start</property> - <property name="valign">baseline</property> - <property name="vexpand">True</property> - <property name="label" translatable="yes" context="pdfgeneralpage|pdfaversion">PDF_/A version:</property> - <property name="use-underline">True</property> - <accessibility> - <relation type="label-for" target="pdfaversion"/> - </accessibility> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - </object> - <packing> - <property name="left-attach">0</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> <child> - <object class="GtkCheckButton" id="pdfua"> - <property name="label" translatable="yes" context="pdfgeneralpage|pdfua">Universal Accessibilit_y (PDF/UA)</property> + <object class="GtkCheckButton" id="forms"> + <property name="label" translatable="yes" context="pdfgeneralpage|forms">Create PDF for_m</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|pdfua|tooltip_text">Creates a universal accessibility-compliant PDF file that follows the requirements of PDF/UA (ISO 14289) specifications.</property> + <property name="tooltip-text" translatable="yes" context="pdfgeneralpage|forms|tooltip_text">Creates a PDF with fields that can be filled out</property> <property name="halign">start</property> <property name="use-underline">True</property> <property name="draw-indicator">True</property> <child internal-child="accessible"> - <object class="AtkObject" id="pdfua-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|pdfua">Creates a universal accessibility-complying PDF file that follows the requirements of PDF/UA (ISO 14289) specifications.</property> + <object class="AtkObject" id="forms-atkobject"> + <property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|forms">Choose to create a PDF form. This can be filled out and printed by the user of the PDF document.</property> </object> </child> </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">2</property> + <property name="top-attach">0</property> </packing> </child> </object> </child> <child type="label"> - <object class="GtkLabel" id="label4"> + <object class="GtkLabel" id="forms_label"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="label" translatable="yes" context="pdfgeneralpage|label4">General</property> + <property name="label" translatable="yes" context="pdfgeneralpage|forms_label">Forms</property> <attributes> <attribute name="weight" value="bold"/> </attributes> @@ -826,18 +828,18 @@ <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">0</property> + <property name="position">1</property> </packing> </child> <child> - <object class="GtkFrame" id="frame7"> + <object class="GtkFrame" id="structure_frame"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="label-xalign">0</property> <property name="shadow-type">none</property> <child> - <!-- n-columns=1 n-rows=10 --> - <object class="GtkGrid" id="grid2"> + <!-- n-columns=1 n-rows=11 --> + <object class="GtkGrid" id="structure_grid"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="margin-start">12</property> @@ -849,10 +851,10 @@ <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|bookmarks|tooltip_text">Export headings along with hyperlinked entries in Table of Contents as PDF bookmarks.</property> <property name="halign">start</property> <property name="use-underline">True</property> <property name="draw-indicator">True</property> - <property name="tooltip-text" translatable="yes" context="pdfgeneralpage|bookmarks|tooltip_text">Export headings along with hyperlinked entries in Table of Contents as PDF bookmarks.</property> <child internal-child="accessible"> <object class="AtkObject" id="bookmarks-atkobject"> <property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|bookmarks">PDF bookmarks are created for all paragraphs with outline level 1 or greater and for all “Table of Contents” entries with hyperlinks.</property> @@ -861,7 +863,7 @@ </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">0</property> + <property name="top-attach">1</property> </packing> </child> <child> @@ -881,7 +883,7 @@ </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">1</property> + <property name="top-attach">2</property> </packing> </child> <child> @@ -901,7 +903,7 @@ </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">2</property> + <property name="top-attach">3</property> </packing> </child> <child> @@ -921,7 +923,7 @@ </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">8</property> + <property name="top-attach">9</property> </packing> </child> <child> @@ -941,7 +943,7 @@ </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">9</property> + <property name="top-attach">10</property> </packing> </child> <child> @@ -961,7 +963,7 @@ </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">6</property> + <property name="top-attach">7</property> </packing> </child> <child> @@ -981,7 +983,7 @@ </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">4</property> + <property name="top-attach">5</property> </packing> </child> <child> @@ -1002,7 +1004,7 @@ </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">5</property> + <property name="top-attach">6</property> </packing> </child> <child> @@ -1022,7 +1024,7 @@ </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">7</property> + <property name="top-attach">8</property> </packing> </child> <child> @@ -1042,16 +1044,37 @@ </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">3</property> + <property name="top-attach">4</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> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="tooltip-text" translatable="yes" context="pdfgeneralpage|tagged|tooltip_text">Includes a document's content structure information in a PDF</property> + <property name="halign">start</property> + <property name="use-underline">True</property> + <property name="draw-indicator">True</property> + <child internal-child="accessible"> + <object class="AtkObject" id="tagged-atkobject"> + <property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|tagged">Select to write PDF tags. This can increase file size by huge amounts.</property> + </object> + </child> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> </packing> </child> </object> </child> <child type="label"> - <object class="GtkLabel" id="label9"> + <object class="GtkLabel" id="structure_label"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="label" translatable="yes" context="pdfgeneralpage|label9">Structure</property> + <property name="label" translatable="yes" context="pdfgeneralpage|structure_label">Structure</property> <attributes> <attribute name="weight" value="bold"/> </attributes> @@ -1061,7 +1084,7 @@ <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> </object> @@ -1071,15 +1094,8 @@ </packing> </child> </object> - <object class="GtkSizeGroup" id="comboBoxSizegroup"> - <widgets> - <widget name="format"/> - <widget name="pdfaversion"/> - </widgets> - </object> <object class="GtkSizeGroup" id="pdfSizeGroup"> <widgets> - <widget name="submitformatbox"/> <widget name="pdfabox"/> </widgets> </object> @@ -1104,4 +1120,5 @@ <widget name="watermarkentry"/> </widgets> </object> + <object class="GtkSizeGroup" id="comboBoxSizegroup"/> </interface> diff --git a/sc/qa/uitest/calc_tests4/exportToPDF.py b/sc/qa/uitest/calc_tests4/exportToPDF.py index a2cd0e55a451..bf42f0458318 100644 --- a/sc/qa/uitest/calc_tests4/exportToPDF.py +++ b/sc/qa/uitest/calc_tests4/exportToPDF.py @@ -41,7 +41,7 @@ class exportToPDF(UITestCase): self.assertEqual("true", get_state_as_dict(xDialog.getChild(child))['Selected']) nonSelectedChildren = ['allowdups', 'center', 'comments', 'convert', 'embed', 'emptypages', 'export', 'exportplaceholders', - 'firstonleft', 'forms', 'hiddenpages', 'menubar', 'notes', 'onlynotes', 'open', 'pdfa', 'pdfua', 'resize', 'singlepagesheets', + 'firstonleft', 'forms', 'hiddenpages', 'menubar', 'notes', 'onlynotes', 'open', 'pdfua', 'resize', 'singlepagesheets', 'toolbar', 'usereferencexobject', 'viewpdf', 'watermark', 'window'] for child in nonSelectedChildren: diff --git a/sd/qa/uitest/impress_tests/exportToPDF.py b/sd/qa/uitest/impress_tests/exportToPDF.py index 2a521670209c..67d9f28b2201 100644 --- a/sd/qa/uitest/impress_tests/exportToPDF.py +++ b/sd/qa/uitest/impress_tests/exportToPDF.py @@ -43,7 +43,7 @@ class exportToPDF(UITestCase): self.assertEqual("true", get_state_as_dict(xDialog.getChild(child))['Selected']) nonSelectedChildren = ['allowdups', 'center', 'comments', 'convert', 'embed', 'emptypages', 'export', 'exportplaceholders', - 'firstonleft', 'forms', 'hiddenpages', 'menubar', 'notes', 'onlynotes', 'open', 'pdfa', 'pdfua', 'resize', 'singlepagesheets', + 'firstonleft', 'forms', 'hiddenpages', 'menubar', 'notes', 'onlynotes', 'open', 'pdfua', 'resize', 'singlepagesheets', 'toolbar', 'usereferencexobject', 'viewpdf', 'watermark', 'window'] for child in nonSelectedChildren: diff --git a/sw/qa/uitest/writer_tests4/exportToPDF.py b/sw/qa/uitest/writer_tests4/exportToPDF.py index 1d85ebd6d1a8..99b3b640dea7 100644 --- a/sw/qa/uitest/writer_tests4/exportToPDF.py +++ b/sw/qa/uitest/writer_tests4/exportToPDF.py @@ -39,7 +39,7 @@ class exportToPDF(UITestCase): self.assertEqual("true", get_state_as_dict(xDialog.getChild(child))['Selected']) nonSelectedChildren = ['allowdups', 'center', 'comments', 'convert', 'embed', 'emptypages', 'export', 'exportplaceholders', - 'firstonleft', 'forms', 'hiddenpages', 'menubar', 'notes', 'onlynotes', 'open', 'pdfa', 'pdfua', 'resize', 'singlepagesheets', + 'firstonleft', 'forms', 'hiddenpages', 'menubar', 'notes', 'onlynotes', 'open', 'pdfua', 'resize', 'singlepagesheets', 'toolbar', 'usereferencexobject', 'viewpdf', 'watermark', 'window'] for child in nonSelectedChildren:
