1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef PDFEXPORT_HXX 25 #define PDFEXPORT_HXX 26 27 #include "pdffilter.hxx" 28 #include <tools/multisel.hxx> 29 #include <vcl/pdfwriter.hxx> 30 #include <vcl/pdfextoutdevdata.hxx> 31 #include <com/sun/star/view/XRenderable.hpp> 32 33 class SvEmbeddedObject; 34 class GDIMetaFile; 35 class VirtualDevice; 36 class PolyPolygon; 37 class Gradient; 38 class BitmapEx; 39 class Point; 40 class Size; 41 42 namespace vcl { class PDFWriter; } 43 44 // ------------- 45 // - PDFExport - 46 // ------------- 47 48 class PDFExport 49 { 50 private: 51 52 Reference< XComponent > mxSrcDoc; 53 Reference< lang::XMultiServiceFactory > mxMSF; 54 Reference< task::XStatusIndicator > mxStatusIndicator; 55 Reference< task::XInteractionHandler > mxIH; 56 57 sal_Bool mbUseTaggedPDF; 58 sal_Int32 mnPDFTypeSelection; 59 sal_Bool mbExportNotes; 60 sal_Bool mbExportNotesPages; 61 sal_Bool mbEmbedStandardFonts; 62 sal_Bool mbUseTransitionEffects; 63 sal_Bool mbExportBookmarks; 64 sal_Int32 mnOpenBookmarkLevels; 65 66 sal_Bool mbUseLosslessCompression; 67 sal_Bool mbReduceImageResolution; 68 sal_Bool mbSkipEmptyPages; 69 sal_Bool mbAddStream; 70 sal_Int32 mnMaxImageResolution; 71 sal_Int32 mnQuality; 72 sal_Int32 mnFormsFormat; 73 sal_Bool mbExportFormFields; 74 sal_Bool mbAllowDuplicateFieldNames; 75 sal_Int32 mnProgressValue; 76 sal_Bool mbRemoveTransparencies; 77 78 sal_Bool mbWatermark; 79 uno::Any maWatermark; 80 81 //these variable are here only to have a location in filter/pdf to set the default 82 //to be used by the macro (when the FilterData are set by the macro itself) 83 sal_Bool mbHideViewerToolbar; 84 sal_Bool mbHideViewerMenubar; 85 sal_Bool mbHideViewerWindowControls; 86 sal_Bool mbFitWindow; 87 sal_Bool mbCenterWindow; 88 sal_Bool mbOpenInFullScreenMode; 89 sal_Bool mbDisplayPDFDocumentTitle; 90 sal_Int32 mnPDFDocumentMode; 91 sal_Int32 mnPDFDocumentAction; 92 sal_Int32 mnZoom; 93 sal_Int32 mnInitialPage; 94 sal_Int32 mnPDFPageLayout; 95 sal_Bool mbFirstPageLeft; 96 97 sal_Bool mbEncrypt; 98 sal_Bool mbRestrictPermissions; 99 sal_Int32 mnPrintAllowed; 100 sal_Int32 mnChangesAllowed; 101 sal_Bool mbCanCopyOrExtract; 102 sal_Bool mbCanExtractForAccessibility; 103 104 SvtGraphicFill maCacheFill; 105 sal_Int32 mnCachePatternId; 106 107 //--->i56629 108 sal_Bool mbExportRelativeFsysLinks; 109 sal_Int32 mnDefaultLinkAction; 110 sal_Bool mbConvertOOoTargetToPDFTarget; 111 sal_Bool mbExportBmkToDest; 112 //<--- 113 sal_Bool ImplExportPage( ::vcl::PDFWriter& rWriter, ::vcl::PDFExtOutDevData& rPDFExtOutDevData, 114 const GDIMetaFile& rMtf ); 115 void ImplWriteWatermark( ::vcl::PDFWriter& rWriter, const Size& rPageSize ); 116 public: 117 118 PDFExport( const Reference< XComponent >& rxSrcDoc, 119 const Reference< task::XStatusIndicator >& xStatusIndicator, 120 const Reference< task::XInteractionHandler >& xIH, 121 const Reference< lang::XMultiServiceFactory >& xFact ); 122 ~PDFExport(); 123 124 sal_Bool ExportSelection( vcl::PDFWriter& rPDFWriter, Reference< com::sun::star::view::XRenderable >& rRenderable, Any& rSelection, 125 MultiSelection aMultiSelection, Sequence< PropertyValue >& rRenderOptions, sal_Int32 nPageCount ); 126 127 sal_Bool Export( const OUString& rFile, const Sequence< PropertyValue >& rFilterData ); 128 129 void showErrors( const std::set<vcl::PDFWriter::ErrorCode>& ); 130 }; 131 132 #endif 133