23 #include <com/sun/star/io/XInputStream.hpp>
24 #include <com/sun/star/uno/XComponentContext.hpp>
48 OUString aTypeName = aMediaDesc.getUnpackedValueOrDefault( MediaDescriptor::PROP_TYPENAME, OUString() );
49 uno::Reference< io::XInputStream > xInStream ( aMediaDesc[MediaDescriptor::PROP_INPUTSTREAM], uno::UNO_QUERY );
50 if ( !xInStream.is() )
58 if ( !pInStrm || pInStrm->
GetError() )
61 bool bIsDetected =
false;
63 if ( aTypeName ==
"writer_Rich_Text_Format" )
68 else if ( aTypeName ==
"writer_MS_WinWord_5" )
73 if (pInStrm->
ReadBytes(nBuffer, nBufSize) < nBufSize)
76 bIsDetected = (nBuffer[0] == 0x9B && nBuffer[1] == 0xA5 && nBuffer[2] == 0x21)
77 || (nBuffer[0] == 0x9C && nBuffer[1] == 0xA5 && nBuffer[2] == 0x21)
78 || (nBuffer[0] == 0xDB && nBuffer[1] == 0xA5 && nBuffer[2] == 0x2D)
79 || (nBuffer[0] == 0xDC && nBuffer[1] == 0xA5 && nBuffer[2] == 0x65);
96 bIsDetected = aStorage->
IsContained(
"WordDocument" );
97 if ( bIsDetected && aTypeName.startsWith(
"writer_MS_Word_97" ) )
103 if ( bIsDetected && aTypeName ==
"writer_MS_Word_97_Vorlage" )
111 xWordDocument->Seek( 10 );
112 if ( xWordDocument->Tell() == 10 )
115 xWordDocument->ReadUChar( aBits1 );
117 bIsDetected = ((aBits1 & 0x01) == 0x01);
138 return "com.sun.star.comp.writer.FormatDetector";
150 return {
"com.sun.star.frame.ExtendedTypeDetection",
"com.sun.star.text.FormatDetector",
"com.sun.star.text.W4WFormatDetector" };
153 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
155 css::uno::Sequence<css::uno::Any>
const &)
sal_uInt64 Seek(sal_uInt64 nPos)
bool IsContained(const OUString &rEleName) const
virtual ~SwFilterDetect() override
constexpr OUStringLiteral sServiceName
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
sal_uInt64 remainingSize()
#define STREAM_SEEK_TO_BEGIN
tools::SvRef< SotStorageStream > OpenSotStream(const OUString &rEleName, StreamMode=StreamMode::STD_READWRITE)
void UseInteractionHandler(bool)
virtual OUString SAL_CALL getImplementationName() override
std::size_t ReadBytes(void *pData, std::size_t nSize)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_comp_writer_FormatDetector_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
virtual sal_Bool SAL_CALL supportsService(const OUString &sServiceName) override
virtual OUString SAL_CALL detect(css::uno::Sequence< css::beans::PropertyValue > &lDescriptor) override
OString read_uInt8s_ToOString(SvStream &rStrm, std::size_t nLen)
void setStreamToLoadFrom(const css::uno::Reference< css::io::XInputStream > &xInputStream, bool bIsReadOnly)
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override