summaryrefslogtreecommitdiffstats
path: root/filter/source/pdf/impdialog.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'filter/source/pdf/impdialog.hxx')
-rw-r--r--filter/source/pdf/impdialog.hxx419
1 files changed, 419 insertions, 0 deletions
diff --git a/filter/source/pdf/impdialog.hxx b/filter/source/pdf/impdialog.hxx
new file mode 100644
index 000000000..219d47e6d
--- /dev/null
+++ b/filter/source/pdf/impdialog.hxx
@@ -0,0 +1,419 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#pragma once
+
+#include <sfx2/tabdlg.hxx>
+#include <svx/AccessibilityCheckDialog.hxx>
+
+#include <vcl/pdfwriter.hxx>
+#include <vcl/FilterConfigItem.hxx>
+#include <vcl/weld.hxx>
+
+#include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+
+class ImpPDFTabGeneralPage;
+class ImpPDFTabViewerPage;
+class ImpPDFTabOpnFtrPage;
+class ImpPDFTabLinksPage;
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+
+class ImplErrorDialog : public weld::MessageDialogController
+{
+private:
+ std::unique_ptr<weld::TreeView> m_xErrors;
+ std::unique_ptr<weld::Label> m_xExplanation;
+
+ DECL_LINK(SelectHdl, weld::TreeView&, void);
+
+public:
+ explicit ImplErrorDialog(weld::Window* pParent, const std::set<vcl::PDFWriter::ErrorCode>& rErrorCodes);
+};
+
+
+class ImpPDFTabSecurityPage;
+class ImpPDFTabLinksPage;
+
+
+/// Class tabbed dialog
+class ImpPDFTabDialog final : public SfxTabDialogController
+{
+ css::uno::Reference<css::lang::XComponent> mrDoc;
+ weld::Window* mpParent;
+
+ FilterConfigItem maConfigItem;
+ FilterConfigItem maConfigI18N;
+
+ Any maSelection;
+
+ DECL_LINK(CancelHdl, weld::Button&, void);
+ DECL_LINK(OkHdl, weld::Button&, void);
+
+ // the following data are the configuration used throughout the dialog and pages
+ bool mbIsPresentation;
+ bool mbIsSpreadsheet;
+ bool mbIsWriter;
+ bool mbSelectionPresent;
+ bool mbUseCTLFont;
+ bool mbUseLosslessCompression;
+ sal_Int32 mnQuality;
+ bool mbReduceImageResolution;
+ sal_Int32 mnMaxImageResolution;
+ bool mbUseTaggedPDF;
+ bool mbUseTaggedPDFUserSelection;
+ sal_Int32 mnPDFTypeSelection;
+ bool mbPDFUACompliance;
+ bool mbExportNotes;
+ bool mbViewPDF;
+ bool mbUseReferenceXObject;
+ bool mbExportNotesPages;
+ bool mbExportOnlyNotesPages;
+ bool mbUseTransitionEffects;
+ bool mbIsSkipEmptyPages;
+ bool mbIsExportPlaceholders;
+ bool mbAddStream;
+ sal_Int32 mnFormsType;
+ bool mbExportFormFields;
+ bool mbAllowDuplicateFieldNames;
+ bool mbExportBookmarks;
+ bool mbExportHiddenSlides;
+ bool mbSinglePageSheets;
+ sal_Int32 mnOpenBookmarkLevels;
+
+ bool mbHideViewerToolbar;
+ bool mbHideViewerMenubar;
+ bool mbHideViewerWindowControls;
+ bool mbResizeWinToInit;
+ bool mbCenterWindow;
+ bool mbOpenInFullScreenMode;
+ bool mbDisplayPDFDocumentTitle;
+ sal_Int32 mnMagnification;
+ sal_Int32 mnInitialView;
+ sal_Int32 mnZoom;
+ sal_Int32 mnInitialPage;
+
+ sal_Int32 mnPageLayout;
+ bool mbFirstPageLeft;
+
+ bool mbEncrypt;
+
+ bool mbRestrictPermissions;
+ css::uno::Sequence< css::beans::NamedValue > maPreparedOwnerPassword;
+ sal_Int32 mnPrint;
+ sal_Int32 mnChangesAllowed;
+ bool mbCanCopyOrExtract;
+ bool mbCanExtractForAccessibility;
+ css::uno::Reference< css::beans::XMaterialHolder > mxPreparedPasswords;
+
+ std::shared_ptr< svx::AccessibilityCheckDialog > mpAccessibilityCheckDialog;
+
+ bool mbIsRangeChecked;
+ OUString msPageRange;
+ bool mbSelectionIsChecked;
+
+ bool mbExportRelativeFsysLinks;
+ sal_Int32 mnViewPDFMode;
+ bool mbConvertOOoTargets;
+ bool mbExportBmkToPDFDestination;
+
+ bool mbSignPDF;
+ OUString msSignPassword;
+ OUString msSignLocation;
+ OUString msSignContact;
+ OUString msSignReason;
+ css::uno::Reference< css::security::XCertificate > maSignCertificate;
+ OUString msSignTSA;
+
+ OUString maWatermarkText;
+
+public:
+
+ friend class ImpPDFTabGeneralPage;
+ friend class ImpPDFTabViewerPage;
+ friend class ImpPDFTabOpnFtrPage;
+ friend class ImpPDFTabSecurityPage;
+ friend class ImpPDFTabLinksPage;
+ friend class ImpPDFTabSigningPage;
+
+ ImpPDFTabDialog(weld::Window* pParent, const Sequence< PropertyValue >& rFilterData,
+ const css::uno::Reference< XComponent >& rDoc);
+ virtual ~ImpPDFTabDialog() override;
+
+ Sequence< PropertyValue > GetFilterData();
+
+ ImpPDFTabSecurityPage* getSecurityPage() const;
+ ImpPDFTabLinksPage* getLinksPage() const;
+ ImpPDFTabGeneralPage* getGeneralPage() const;
+
+private:
+ virtual void PageCreated(const OString& rId, SfxTabPage& rPage) override;
+};
+
+
+/// Class tab page general
+class ImpPDFTabGeneralPage : public SfxTabPage
+{
+ friend class ImpPDFTabLinksPage;
+
+ bool mbUseTaggedPDFUserSelection;
+ bool mbIsPresentation;
+ bool mbIsSpreadsheet;
+ bool mbIsWriter;
+ ImpPDFTabDialog* mpParent;
+
+ std::unique_ptr<weld::RadioButton> mxRbAll;
+ std::unique_ptr<weld::RadioButton> mxRbRange;
+ std::unique_ptr<weld::RadioButton> mxRbSelection;
+ std::unique_ptr<weld::Entry> mxEdPages;
+ std::unique_ptr<weld::Label> mxSelectedSheets;
+ std::unique_ptr<weld::RadioButton> mxRbLosslessCompression;
+ std::unique_ptr<weld::RadioButton> mxRbJPEGCompression;
+ std::unique_ptr<weld::Widget> mxQualityFrame;
+ 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::CheckButton> mxCbTaggedPDF;
+ std::unique_ptr<weld::CheckButton> mxCbExportFormFields;
+ std::unique_ptr<weld::Widget> mxFormsFrame;
+ std::unique_ptr<weld::ComboBox> mxLbFormsFormat;
+ std::unique_ptr<weld::CheckButton> mxCbAllowDuplicateFieldNames;
+ std::unique_ptr<weld::CheckButton> mxCbExportBookmarks;
+ std::unique_ptr<weld::CheckButton> mxCbExportHiddenSlides;
+ std::unique_ptr<weld::CheckButton> mxCbSinglePageSheets;
+ std::unique_ptr<weld::CheckButton> mxCbExportNotes;
+ std::unique_ptr<weld::CheckButton> mxCbViewPDF;
+ std::unique_ptr<weld::CheckButton> mxCbUseReferenceXObject;
+ std::unique_ptr<weld::CheckButton> mxCbExportNotesPages;
+ std::unique_ptr<weld::CheckButton> mxCbExportOnlyNotesPages;
+ std::unique_ptr<weld::CheckButton> mxCbExportEmptyPages;
+ std::unique_ptr<weld::CheckButton> mxCbExportPlaceholders;
+ std::unique_ptr<weld::CheckButton> mxCbAddStream;
+ std::unique_ptr<weld::CheckButton> mxCbWatermark;
+ std::unique_ptr<weld::Label> mxFtWatermark;
+ std::unique_ptr<weld::Entry> mxEdWatermark;
+ std::unique_ptr<weld::Label> mxSlidesFt;
+ std::unique_ptr<weld::Label> mxSheetsFt;
+
+ DECL_LINK(ToggleAllHdl, weld::Toggleable&, void);
+ DECL_LINK(TogglePagesHdl, weld::Toggleable&, void);
+ DECL_LINK(ToggleSelectionHdl, weld::Toggleable&, void);
+ DECL_LINK(ToggleCompressionHdl, weld::Toggleable&, void);
+ DECL_LINK(ToggleReduceImageResolutionHdl, weld::Toggleable&, void);
+ DECL_LINK(ToggleWatermarkHdl, weld::Toggleable&, void);
+ DECL_LINK(ToggleAddStreamHdl, weld::Toggleable&, void);
+ DECL_LINK(ToggleExportFormFieldsHdl, weld::Toggleable&, void);
+ DECL_LINK(ToggleExportNotesPagesHdl, weld::Toggleable&, void);
+
+ void TogglePagesHdl();
+ void EnableExportNotesPages();
+
+ DECL_LINK(TogglePDFVersionOrUniversalAccessibilityHandle, weld::Toggleable&, void);
+
+public:
+
+ ImpPDFTabGeneralPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet);
+ virtual ~ImpPDFTabGeneralPage() override;
+
+ static std::unique_ptr<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet);
+
+ void GetFilterConfigItem(ImpPDFTabDialog* paParent);
+ void SetFilterConfigItem(ImpPDFTabDialog* paParent);
+ bool IsPdfaSelected() const { return mxCbPDFA->get_active(); }
+ bool IsPdfUaSelected() const { return mxCbPDFUA->get_active(); }
+};
+
+/// Class tab page viewer
+class ImpPDFTabOpnFtrPage : public SfxTabPage
+{
+ bool mbUseCTLFont;
+
+ std::unique_ptr<weld::RadioButton> mxRbOpnPageOnly;
+ std::unique_ptr<weld::RadioButton> mxRbOpnOutline;
+ std::unique_ptr<weld::RadioButton> mxRbOpnThumbs;
+ std::unique_ptr<weld::SpinButton> mxNumInitialPage;
+ std::unique_ptr<weld::RadioButton> mxRbMagnDefault;
+ std::unique_ptr<weld::RadioButton> mxRbMagnFitWin;
+ std::unique_ptr<weld::RadioButton> mxRbMagnFitWidth;
+ std::unique_ptr<weld::RadioButton> mxRbMagnFitVisible;
+ std::unique_ptr<weld::RadioButton> mxRbMagnZoom;
+ std::unique_ptr<weld::SpinButton> mxNumZoom;
+ std::unique_ptr<weld::RadioButton> mxRbPgLyDefault;
+ std::unique_ptr<weld::RadioButton> mxRbPgLySinglePage;
+ std::unique_ptr<weld::RadioButton> mxRbPgLyContinue;
+ std::unique_ptr<weld::RadioButton> mxRbPgLyContinueFacing;
+ std::unique_ptr<weld::CheckButton> mxCbPgLyFirstOnLeft;
+
+ DECL_LINK(ToggleRbPgLyContinueFacingHdl, weld::Toggleable&, void);
+ DECL_LINK(ToggleRbMagnHdl, weld::Toggleable&, void);
+
+ void ToggleRbPgLyContinueFacingHdl();
+
+public:
+ ImpPDFTabOpnFtrPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet);
+ virtual ~ImpPDFTabOpnFtrPage() override;
+
+ static std::unique_ptr<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet );
+
+ void GetFilterConfigItem( ImpPDFTabDialog* paParent);
+ void SetFilterConfigItem( const ImpPDFTabDialog* paParent );
+};
+
+/// Class tab page viewer
+class ImpPDFTabViewerPage : public SfxTabPage
+{
+ bool mbIsPresentation;
+
+ std::unique_ptr<weld::CheckButton> m_xCbResWinInit;
+ std::unique_ptr<weld::CheckButton> m_xCbCenterWindow;
+ std::unique_ptr<weld::CheckButton> m_xCbOpenFullScreen;
+ std::unique_ptr<weld::CheckButton> m_xCbDispDocTitle;
+ std::unique_ptr<weld::CheckButton> m_xCbHideViewerMenubar;
+ std::unique_ptr<weld::CheckButton> m_xCbHideViewerToolbar;
+ std::unique_ptr<weld::CheckButton> m_xCbHideViewerWindowControls;
+ std::unique_ptr<weld::CheckButton> m_xCbTransitionEffects;
+ std::unique_ptr<weld::RadioButton> m_xRbAllBookmarkLevels;
+ std::unique_ptr<weld::RadioButton> m_xRbVisibleBookmarkLevels;
+ std::unique_ptr<weld::SpinButton>m_xNumBookmarkLevels;
+
+ DECL_LINK(ToggleRbBookmarksHdl, weld::Toggleable&, void);
+
+public:
+ ImpPDFTabViewerPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet);
+ virtual ~ImpPDFTabViewerPage() override;
+
+ static std::unique_ptr<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet );
+
+ void GetFilterConfigItem( ImpPDFTabDialog* paParent);
+ void SetFilterConfigItem( const ImpPDFTabDialog* paParent );
+};
+
+/// Class security tab page
+class ImpPDFTabSecurityPage : public SfxTabPage
+{
+ OUString msStrSetPwd;
+ OUString msUserPwdTitle;
+ bool mbHaveOwnerPassword;
+ bool mbHaveUserPassword;
+ css::uno::Sequence< css::beans::NamedValue > maPreparedOwnerPassword;
+ OUString msOwnerPwdTitle;
+
+ css::uno::Reference< css::beans::XMaterialHolder > mxPreparedPasswords;
+
+ std::unique_ptr<weld::Button> mxPbSetPwd;
+ std::unique_ptr<weld::Widget> mxUserPwdSet;
+ std::unique_ptr<weld::Widget> mxUserPwdUnset;
+ std::unique_ptr<weld::Widget> mxUserPwdPdfa;
+ std::unique_ptr<weld::Widget> mxOwnerPwdSet;
+ std::unique_ptr<weld::Widget> mxOwnerPwdUnset;
+ std::unique_ptr<weld::Widget> mxOwnerPwdPdfa;
+ std::unique_ptr<weld::Widget> mxPrintPermissions;
+ std::unique_ptr<weld::RadioButton> mxRbPrintNone;
+ std::unique_ptr<weld::RadioButton> mxRbPrintLowRes;
+ std::unique_ptr<weld::RadioButton> mxRbPrintHighRes;
+ std::unique_ptr<weld::Widget> mxChangesAllowed;
+ std::unique_ptr<weld::RadioButton> mxRbChangesNone;
+ std::unique_ptr<weld::RadioButton> mxRbChangesInsDel;
+ std::unique_ptr<weld::RadioButton> mxRbChangesFillForm;
+ std::unique_ptr<weld::RadioButton> mxRbChangesComment;
+ std::unique_ptr<weld::RadioButton> mxRbChangesAnyNoCopy;
+ std::unique_ptr<weld::Widget> mxContent;
+ std::unique_ptr<weld::CheckButton> mxCbEnableCopy;
+ std::unique_ptr<weld::CheckButton> mxCbEnableAccessibility;
+ std::unique_ptr<weld::Label> mxPasswordTitle;
+
+ DECL_LINK(ClickmaPbSetPwdHdl, weld::Button&, void);
+
+ void enablePermissionControls();
+
+public:
+ ImpPDFTabSecurityPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet);
+ virtual ~ImpPDFTabSecurityPage() override;
+
+ static std::unique_ptr<SfxTabPage> Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet);
+
+ void GetFilterConfigItem( ImpPDFTabDialog* paParent);
+ void SetFilterConfigItem( const ImpPDFTabDialog* paParent );
+ void ImplPDFASecurityControl( bool bEnableSecurity );
+ bool hasPassword() const { return mbHaveOwnerPassword || mbHaveUserPassword; }
+};
+
+/// Implements the relative link stuff
+class ImpPDFTabLinksPage : public SfxTabPage
+{
+ bool mbOpnLnksDefaultUserState;
+ bool mbOpnLnksLaunchUserState;
+ bool mbOpnLnksBrowserUserState;
+
+ std::unique_ptr<weld::CheckButton> m_xCbExprtBmkrToNmDst;
+ std::unique_ptr<weld::CheckButton> m_xCbOOoToPDFTargets;
+ std::unique_ptr<weld::CheckButton> m_xCbExportRelativeFsysLinks;
+ std::unique_ptr<weld::RadioButton> m_xRbOpnLnksDefault;
+ std::unique_ptr<weld::RadioButton> m_xRbOpnLnksLaunch;
+ std::unique_ptr<weld::RadioButton> m_xRbOpnLnksBrowser;
+
+ DECL_LINK(ClickRbOpnLnksDefaultHdl, weld::Toggleable&, void);
+ DECL_LINK(ClickRbOpnLnksBrowserHdl, weld::Toggleable&, void);
+
+public:
+ ImpPDFTabLinksPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet);
+ virtual ~ImpPDFTabLinksPage() override;
+
+ static std::unique_ptr<SfxTabPage> Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet);
+
+ void GetFilterConfigItem( ImpPDFTabDialog* paParent);
+ void SetFilterConfigItem( const ImpPDFTabDialog* paParent );
+
+ void ImplPDFALinkControl( bool bEnableLaunch );
+};
+
+//class to implement the digital signing
+class ImpPDFTabSigningPage : public SfxTabPage
+{
+ css::uno::Reference< css::security::XCertificate > maSignCertificate;
+
+ std::unique_ptr<weld::Entry> mxEdSignCert;
+ std::unique_ptr<weld::Button> mxPbSignCertSelect;
+ std::unique_ptr<weld::Button> mxPbSignCertClear;
+ std::unique_ptr<weld::Entry> mxEdSignPassword;
+ std::unique_ptr<weld::Entry> mxEdSignLocation;
+ std::unique_ptr<weld::Entry> mxEdSignContactInfo;
+ std::unique_ptr<weld::Entry> mxEdSignReason;
+ std::unique_ptr<weld::ComboBox> mxLBSignTSA;
+
+ DECL_LINK(ClickmaPbSignCertSelect, weld::Button&, void);
+ DECL_LINK(ClickmaPbSignCertClear, weld::Button&, void);
+
+public:
+ ImpPDFTabSigningPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet);
+ virtual ~ImpPDFTabSigningPage() override;
+
+ static std::unique_ptr<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet );
+
+ void GetFilterConfigItem( ImpPDFTabDialog* paParent);
+ void SetFilterConfigItem( const ImpPDFTabDialog* paParent );
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */