blob: c2c5c3fe9a6e89cd14d548c3e831f08d91132673 [file] [log] [blame]
/**************************************************************
*
* 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
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef INCLUDED_PDFIADAPTOR_HXX
#define INCLUDED_PDFIADAPTOR_HXX
#include "xmlemitter.hxx"
#include "treevisitorfactory.hxx"
#include <com/sun/star/xml/XImportFilter.hpp>
#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/task/XStatusIndicator.hpp>
#include <com/sun/star/document/XFilter.hpp>
#include <com/sun/star/io/XInputStream.hpp>
#include <com/sun/star/io/XOutputStream.hpp>
#include <com/sun/star/document/XImporter.hpp>
#include <com/sun/star/frame/XModel.hpp>
#include <cppuhelper/compbase2.hxx>
#include <cppuhelper/basemutex.hxx>
namespace pdfi
{
typedef ::cppu::WeakComponentImplHelper2<
com::sun::star::document::XFilter,
com::sun::star::document::XImporter > PDFIHybridAdaptorBase;
class PDFIHybridAdaptor : private cppu::BaseMutex,
public PDFIHybridAdaptorBase
{
private:
com::sun::star::uno::Reference<
com::sun::star::uno::XComponentContext > m_xContext;
com::sun::star::uno::Reference<
com::sun::star::frame::XModel > m_xModel;
public:
explicit PDFIHybridAdaptor( const ::com::sun::star::uno::Reference<
::com::sun::star::uno::XComponentContext >& xContext );
// XFilter
virtual sal_Bool SAL_CALL filter( const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rFilterData ) throw(com::sun::star::uno::RuntimeException);
virtual void SAL_CALL cancel() throw();
// XImporter
virtual void SAL_CALL setTargetDocument( const com::sun::star::uno::Reference< com::sun::star::lang::XComponent >& xDocument )
throw( com::sun::star::lang::IllegalArgumentException );
};
typedef ::cppu::WeakComponentImplHelper2<
com::sun::star::xml::XImportFilter,
com::sun::star::document::XImporter > PDFIAdaptorBase;
/** Adapts raw pdf import to XImportFilter interface
*/
class PDFIRawAdaptor : private cppu::BaseMutex,
public PDFIAdaptorBase
{
private:
com::sun::star::uno::Reference<
com::sun::star::uno::XComponentContext > m_xContext;
com::sun::star::uno::Reference<
com::sun::star::frame::XModel > m_xModel;
TreeVisitorFactorySharedPtr m_pVisitorFactory;
bool m_bEnableToplevelText;
bool parse( const com::sun::star::uno::Reference<com::sun::star::io::XInputStream>& xInput,
const com::sun::star::uno::Reference<com::sun::star::task::XInteractionHandler>& xIHdl,
const rtl::OUString& rPwd,
const com::sun::star::uno::Reference<com::sun::star::task::XStatusIndicator>& xStatus,
const XmlEmitterSharedPtr& rEmitter,
const rtl::OUString& rURL );
public:
explicit PDFIRawAdaptor( const ::com::sun::star::uno::Reference<
::com::sun::star::uno::XComponentContext >& xContext );
/** Set factory object used to create the tree visitors
Used for customizing the tree to the specific output
format (writer, draw, etc)
*/
void setTreeVisitorFactory(const TreeVisitorFactorySharedPtr& rVisitorFactory);
/// TEMP - enable writer-like text:p on doc level
void enableToplevelText() { m_bEnableToplevelText=true; }
/** Export pdf document to ODG
@param xOutput
Stream to write the flat xml file to
@param xStatus
Optional status indicator
*/
bool odfConvert( const rtl::OUString& rURL,
const com::sun::star::uno::Reference<com::sun::star::io::XOutputStream>& xOutput,
const com::sun::star::uno::Reference<com::sun::star::task::XStatusIndicator>& xStatus );
// XImportFilter
virtual sal_Bool SAL_CALL importer( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rSourceData,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XDocumentHandler >& rHdl,
const com::sun::star::uno::Sequence< rtl::OUString >& rUserData ) throw( com::sun::star::uno::RuntimeException );
// XImporter
virtual void SAL_CALL setTargetDocument( const com::sun::star::uno::Reference< com::sun::star::lang::XComponent >& xDocument )
throw( com::sun::star::lang::IllegalArgumentException );
};
}
#endif