summaryrefslogtreecommitdiff
path: root/filter/source/pdf/pdfexport.hxx
blob: 38a050d0d759e28faeb84be228e5713b9d0bc8d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* -*- 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 .
 */

#ifndef INCLUDED_FILTER_SOURCE_PDF_PDFEXPORT_HXX
#define INCLUDED_FILTER_SOURCE_PDF_PDFEXPORT_HXX

#include "pdffilter.hxx"
#include <tools/multisel.hxx>
#include <vcl/pdfwriter.hxx>
#include <vcl/pdfextoutdevdata.hxx>
#include <com/sun/star/view/XRenderable.hpp>

class GDIMetaFile;
class Size;

namespace vcl { class PDFWriter; }


// - PDFExport -


class PDFExport
{
private:

    Reference< XComponent > mxSrcDoc;
    Reference< uno::XComponentContext > mxContext;
    Reference< task::XStatusIndicator > mxStatusIndicator;
    Reference< task::XInteractionHandler > mxIH;

    bool                mbUseTaggedPDF;
    sal_Int32               mnPDFTypeSelection;
    bool                mbExportNotes;
    bool                mbViewPDF;
    bool                mbExportNotesPages;
    bool                mbUseTransitionEffects;
    bool                mbExportBookmarks;
    bool                mbExportHiddenSlides;
    sal_Int32               mnOpenBookmarkLevels;

    bool                mbUseLosslessCompression;
    bool                mbReduceImageResolution;
    bool                mbSkipEmptyPages;
    bool                mbAddStream;
    sal_Int32               mnMaxImageResolution;
    sal_Int32               mnQuality;
    sal_Int32               mnFormsFormat;
    bool                mbExportFormFields;
    bool                mbAllowDuplicateFieldNames;
    sal_Int32               mnProgressValue;
    bool                mbRemoveTransparencies;

    bool                mbWatermark;
    uno::Any                maWatermark;

//these variable are here only to have a location in filter/pdf to set the default
//to be used by the macro (when the FilterData are set by the macro itself)
    bool                mbHideViewerToolbar;
    bool                mbHideViewerMenubar;
    bool                mbHideViewerWindowControls;
    bool                mbFitWindow;
    bool                mbCenterWindow;
    bool                mbOpenInFullScreenMode;
    bool                mbDisplayPDFDocumentTitle;
    sal_Int32               mnPDFDocumentMode;
    sal_Int32               mnPDFDocumentAction;
    sal_Int32               mnZoom;
    sal_Int32               mnInitialPage;
    sal_Int32               mnPDFPageLayout;
    bool                mbFirstPageLeft;

    bool                mbEncrypt;
    bool                mbRestrictPermissions;
    sal_Int32               mnPrintAllowed;
    sal_Int32               mnChangesAllowed;
    bool                mbCanCopyOrExtract;
    bool                mbCanExtractForAccessibility;

    SvtGraphicFill          maCacheFill;

//--->i56629
    bool                mbExportRelativeFsysLinks;
    sal_Int32               mnDefaultLinkAction;
    bool                mbConvertOOoTargetToPDFTarget;
    bool                mbExportBmkToDest;
    bool                ImplExportPage( ::vcl::PDFWriter& rWriter, ::vcl::PDFExtOutDevData& rPDFExtOutDevData,
                                                const GDIMetaFile& rMtf );

    bool                mbSignPDF;
    OUString                msSignLocation;
    OUString                msSignContact;
    OUString                msSignReason;
    OUString                msSignPassword;
    Reference< security::XCertificate > maSignCertificate;

    void                    ImplWriteWatermark( ::vcl::PDFWriter& rWriter, const Size& rPageSize );
public:

                            PDFExport( const Reference< XComponent >& rxSrcDoc,
                                       const Reference< task::XStatusIndicator >& xStatusIndicator,
                                      const Reference< task::XInteractionHandler >& xIH,
                                       const Reference< uno::XComponentContext >& xFact );
                            ~PDFExport();

    bool                ExportSelection( vcl::PDFWriter& rPDFWriter,
                                Reference< com::sun::star::view::XRenderable >& rRenderable,
                                const Any& rSelection,
                                const StringRangeEnumerator& rRangeEnum,
                                Sequence< PropertyValue >& rRenderOptions,
                                sal_Int32 nPageCount );

    bool                Export( const OUString& rFile, const Sequence< PropertyValue >& rFilterData );

    void                    showErrors( const std::set<vcl::PDFWriter::ErrorCode>& );
};

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */