diff options
author | Justin Luth <jluth@mail.com> | 2023-05-11 15:28:55 -0400 |
---|---|---|
committer | Justin Luth <jluth@mail.com> | 2023-05-12 02:00:56 +0200 |
commit | 99a88c9e55872214ce01d89447d18708e47e956b (patch) | |
tree | 6a3dc53d07f5d7c276eb7ad3911b2033a2838f14 /sfx2 | |
parent | 6337348e9f51c6cf299ce0b9dc3eb221d8e07edb (diff) |
tdf#134901: update print statistics on PDF export
From a modern point of view,
a PDF export could be considered a print event.
If one agrees with that point of view,
then updating the print statistics whenever a PDF is generated
makes sense.
That is what the bug report requested, and what this patch does.
That is what MS Word does also.
Downsides:
-there is no setting for a user to disagree with this bug's POV.
-doesn't work for Send - Email a PDF
-open a doc: export to PDF: close -> "Do you want to save changes?"
-I tested on --headless --convert-to pdf -> no problems
-a setting does exist to avoid modified status by printing.
-that setting defaults to avoid modifying the status - YAY!
-the print date is changed even if the export fails
-NEEDS to be changed before export: time needed in PDF itself
-didn't seem important enough to waste the time coding it.
-for real printers the old print date is restored on failure.
Change-Id: I0d1387c1c2c925f3be772c5bdad7187f9f6a4d7c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151682
Reviewed-by: Justin Luth <jluth@mail.com>
Tested-by: Jenkins
Tested-by: Justin Luth <jluth@mail.com>
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/doc/guisaveas.cxx | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/sfx2/source/doc/guisaveas.cxx b/sfx2/source/doc/guisaveas.cxx index 3785585b44d8..b6d4ce61d8a6 100644 --- a/sfx2/source/doc/guisaveas.cxx +++ b/sfx2/source/doc/guisaveas.cxx @@ -70,7 +70,9 @@ #include <vcl/weld.hxx> #include <o3tl/char16_t2wchar_t.hxx> #include <unotools/tempfile.hxx> +#include <unotools/useroptions.hxx> +#include <sfx2/objsh.hxx> #include <sfx2/sfxsids.hrc> #include <sfx2/strings.hrc> #include <sfx2/sfxresid.hxx> @@ -1732,6 +1734,38 @@ bool SfxStoringHelper::FinishGUIStoreModel(::comphelper::SequenceAsHashMap::cons DocumentSettingsGuard aSettingsGuard( aModelData.GetModel(), aModelData.IsRecommendReadOnly(), nStoreMode & EXPORT_REQUESTED ); + // Treat attempted PDF export like a print: update document print statistics + if ((nStoreMode & PDFEXPORT_REQUESTED) && SfxViewShell::Current()) + { + SfxObjectShell* pDocShell = SfxViewShell::Current()->GetObjectShell(); + const bool bWasEnableSetModified = pDocShell && pDocShell->IsEnableSetModified(); + bool bResetESM = false; + + if (bWasEnableSetModified + && !officecfg::Office::Common::Print::PrintingModifiesDocument::get()) + { + pDocShell->EnableSetModified(false); // don't let export mark document as modified + bResetESM = true; + } + + uno::Reference<document::XDocumentPropertiesSupplier> xDPS( + aModelData.GetModel(), uno::UNO_QUERY_THROW); + uno::Reference<document::XDocumentProperties> xDocProps(xDPS->getDocumentProperties()); + xDocProps->setPrintDate(DateTime(DateTime::SYSTEM).GetUNODateTime()); + + OUString sPrintedBy(SfxResId(STR_SFX_FILTERNAME_PDF)); + if (pDocShell && pDocShell->IsUseUserData()) + { + const OUString& sFullName = SvtUserOptions().GetFullName(); + if (!sFullName.isEmpty()) + sPrintedBy += ": " + sFullName; + } + xDocProps->setPrintedBy(sPrintedBy); + + if (bResetESM) + pDocShell->EnableSetModified(true); + } + OSL_ENSURE( aModelData.GetMediaDescr().find( OUString( "Password" ) ) == aModelData.GetMediaDescr().end(), "The Password property of MediaDescriptor should not be used here!" ); if ( officecfg::Office::Common::Save::Document::EditProperty::get() && ( !aModelData.GetStorable()->hasLocation() |