12#include <com/sun/star/embed/ElementModes.hpp>
13#include <com/sun/star/embed/XStorage.hpp>
14#include <com/sun/star/embed/XTransactedObject.hpp>
15#include <com/sun/star/io/XSeekable.hpp>
16#include <com/sun/star/xml/sax/Writer.hpp>
17#include <com/sun/star/beans/XPropertySet.hpp>
18#include <com/sun/star/embed/XHierarchicalStorageAccess.hpp>
37 const sal_Int32 nOpenMode = embed::ElementModes::READWRITE | embed::ElementModes::TRUNCATE;
44 mxStorage->openStreamElementByHierarchicalName(
"mimetype", embed::ElementModes::READWRITE),
46 static constexpr OStringLiteral
aMimeType(
"application/epub+zip");
51 xTransactedObject->commit();
55 xPropertySet->setPropertyValue(
"Compressed",
uno::Any(
false));
62 xTransactedObject->commit();
72 OUString::fromUtf8(
pName), embed::ElementModes::READWRITE),
85 librevenge::RVNGPropertyList::Iter it(rAttributes);
86 for (it.rewind(); it.next();)
87 pAttributeList->AddAttribute(OUString::fromUtf8(it.key()),
88 OUString::fromUtf8(it()->getStr().cstr()));
102 mxOutputWriter->characters(OUString::fromUtf8(rCharacters.cstr()));
114 xTransactedObject->commit();
124 OUString::fromUtf8(
pName), embed::ElementModes::READWRITE),
129 const librevenge::RVNGPropertyList& rProperties)
134 std::stringstream aStream;
135 if (xSeekable->getPosition() != 0)
137 aStream << rSelector.cstr() <<
" {\n";
139 librevenge::RVNGPropertyList::Iter it(rProperties);
140 for (it.rewind(); it.next();)
143 aStream <<
" " << it.key() <<
": " << it()->getStr().cstr() <<
";\n";
147 std::string aString = aStream.str();
158 xTransactedObject->commit();
168 OUString::fromUtf8(
pName), embed::ElementModes::READWRITE),
189 xTransactedObject->commit();
195 SAL_WARN(
"writerperfect",
"EPUBPackage::openTextFile, " <<
pName <<
": implement me");
200 SAL_WARN(
"writerperfect",
"EPUBPackage::insertText: implement me");
205 SAL_WARN(
"writerperfect",
"EPUBPackage::insertLineBreak: implement me");
210 SAL_WARN(
"writerperfect",
"EPUBPackage::closeTextFile: implement me");
static css::uno::Reference< css::embed::XStorage > GetStorageOfFormatFromStream(const OUString &aFormat, const css::uno::Reference< css::io::XStream > &xStream, sal_Int32 nStorageMode=css::embed::ElementModes::READWRITE, const css::uno::Reference< css::uno::XComponentContext > &rxContext=css::uno::Reference< css::uno::XComponentContext >(), bool bRepairStorage=false)
void insertRule(const librevenge::RVNGString &rSelector, const librevenge::RVNGPropertyList &rProperties) override
void insertBinaryData(const librevenge::RVNGBinaryData &rData) override
css::uno::Reference< css::embed::XHierarchicalStorageAccess > mxStorage
void closeTextFile() override
void closeElement(const char *pName) override
void insertCharacters(const librevenge::RVNGString &rCharacters) override
css::uno::Reference< css::xml::sax::XWriter > mxOutputWriter
void openCSSFile(const char *pName) override
void insertText(const librevenge::RVNGString &rCharacters) override
css::uno::Reference< css::uno::XComponentContext > mxContext
void openXMLFile(const char *pName) override
void closeBinaryFile() override
void insertLineBreak() override
void openTextFile(const char *pName) override
void closeCSSFile() override
css::uno::Reference< css::io::XOutputStream > mxOutputStream
void closeXMLFile() override
void openBinaryFile(const char *pName) override
EPUBPackage(css::uno::Reference< css::uno::XComponentContext > xContext, const css::uno::Sequence< css::beans::PropertyValue > &rDescriptor)
void openElement(const char *pName, const librevenge::RVNGPropertyList &rAttributes) override
#define SAL_WARN(area, stream)
constexpr OUStringLiteral aData
const sal_Unicode *const aMimeType[]
constexpr OUStringLiteral ZIP_STORAGE_FORMAT_STRING