From a524ca933d23cba089f89d60f160be7b06c4a13b Mon Sep 17 00:00:00 2001 From: henrikjust Date: Sun, 20 Feb 2011 16:06:55 +0000 Subject: [PATCH] EPUB changes: Revised internal structure of document, changed some defaults and started meta data editor git-svn-id: svn://svn.code.sf.net/p/writer2latex/code/trunk@89 f0f2a975-2e09-46c8-9428-3b39399b9f3c --- build.xml | 2 +- source/distro/changelog.txt | 16 ++ source/distro/doc/user-manual.odt | Bin 51729 -> 51671 bytes .../comp/writer2xhtml/EpubOptionsDialog.java | 92 ++++++++--- .../writer2latex/api/ConverterFactory.java | 6 +- .../java/writer2latex/base/ConverterBase.java | 6 +- .../java/writer2latex/epub/EPUBConverter.java | 2 +- source/java/writer2latex/epub/EPUBWriter.java | 6 +- source/java/writer2latex/epub/OPFWriter.java | 152 +++++++++--------- .../writer2latex/latex/ConverterPalette.java | 12 +- .../java/writer2latex/office/ImageLoader.java | 20 ++- source/java/writer2latex/xhtml/Converter.java | 71 +++++--- .../java/writer2latex/xhtml/CssDocument.java | 8 +- .../writer2latex/xhtml/StyleConverter.java | 24 +-- .../java/writer2latex/xhtml/XhtmlConfig.java | 73 +++++---- source/oxt/writer2latex/description.xml | 2 +- source/oxt/writer2xhtml/Options.xcs | 9 +- source/oxt/writer2xhtml/Options.xcu | 21 +-- .../writer2xhtml/W2XDialogs2/EpubOptions.xdl | 73 +++++---- source/oxt/writer2xhtml/description.xml | 2 +- .../epub_export.xhp | 44 ++--- source/oxt/writer4latex/description.xml | 2 +- .../oxt/xhtml-config-sample/description.xml | 2 +- 23 files changed, 381 insertions(+), 264 deletions(-) diff --git a/build.xml b/build.xml index 5a1e82e..8636ebc 100644 --- a/build.xml +++ b/build.xml @@ -35,7 +35,7 @@ - + diff --git a/source/distro/changelog.txt b/source/distro/changelog.txt index b0c5c06..155ee40 100644 --- a/source/distro/changelog.txt +++ b/source/distro/changelog.txt @@ -1,5 +1,21 @@ Changelog for Writer2LaTeX version 1.0 -> 1.2 +---------- version 1.1.7 ---------- + +[w2x] Standard meta data as well as custom meta data can now be edited directly from the EPUB export dialog + +[w2x] New option use_custom_metadata (default true) making the inclusion of custom meta data in EPUB export optional + +[w2x] Revised the internal structure of EPUB files: Text files are named chapter.xhtml, images are placed in the + subdirectory images and name image, styles are placed in the subdirectory styles and names styles.css (custom + style sheet) and styles1.css (generated style sheet) + +[w2x] Use relative font size is now selected per default in EPUB export dialog + +[w2x] Default value of the option formulas changed to image+starmath + +[w2x] Default value of the option use_default_font changed to false (was true by mistake) + ---------- version 1.1.6 ---------- [all] Changed w2l.bat to use %~dp0 as suggested by Dave Jarvis (this leaves out any (probably none) win 9x users) diff --git a/source/distro/doc/user-manual.odt b/source/distro/doc/user-manual.odt index 05a0d394f987fca527a211c8b670a12d27305162..73dba4e975252da6209b19c022b08635ab799916 100644 GIT binary patch delta 44767 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 delta 44781 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 bH-v$%APxTAuRuUZ-zVkw5MpuopR4}^wE-mN diff --git a/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java b/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java index 9f0d0d9..d49a78d 100644 --- a/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java +++ b/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java @@ -16,24 +16,29 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-12-29) + * Version 1.2 (2011-02-20) * */ -// TODO: Add to doc: -// New options relative_font_size, font_scaling, use_default_font, default_font_name, split_after, page_break_split, include_toc -// Also add to list of possible locked options external_toc_depth, display_hidden_text - package org.openoffice.da.comp.writer2xhtml; import java.awt.GraphicsEnvironment; import com.sun.star.awt.XDialog; +import com.sun.star.beans.PropertyValue; import com.sun.star.beans.XPropertySet; +import com.sun.star.frame.XDesktop; +import com.sun.star.frame.XDispatchHelper; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.frame.XFrame; +import com.sun.star.lang.XMultiComponentFactory; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.uno.Exception; +import com.sun.star.uno.UnoRuntime; import com.sun.star.uno.XComponentContext; import org.openoffice.da.comp.w2lcommon.helper.PropertyHelper; @@ -88,16 +93,17 @@ public class EpubOptionsDialog extends OptionsDialogBase { setListBoxStringItemList("DefaultFontName", GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()); - // Special content - loadCheckBoxOption(xProps, "DisplayHiddenText"); - loadCheckBoxOption(xProps, "Notes"); - loadCheckBoxOption(xProps, "UseDublinCore"); - // AutoCorrect loadCheckBoxOption(xProps, "IgnoreHardLineBreaks"); loadCheckBoxOption(xProps, "IgnoreEmptyParagraphs"); loadCheckBoxOption(xProps, "IgnoreDoubleSpaces"); + // Special content + loadCheckBoxOption(xProps, "DisplayHiddenText"); + loadCheckBoxOption(xProps, "Notes"); + loadCheckBoxOption(xProps, "UseDublinCore"); + loadCheckBoxOption(xProps, "UseCustomMetadata"); + // Document division loadCheckBoxOption(xProps, "Split"); loadListBoxOption(xProps, "SplitLevel"); @@ -135,16 +141,17 @@ public class EpubOptionsDialog extends OptionsDialogBase { saveCheckBoxOption(xProps, helper, "ConvertToPx", "convert_to_px"); saveCheckBoxOption(xProps, helper, "OriginalImageSize", "original_image_size"); - // Special content - saveCheckBoxOption(xProps, helper, "DisplayHiddenText", "display_hidden_text"); - saveCheckBoxOption(xProps, helper, "Notes", "notes"); - saveCheckBoxOption(xProps, helper, "UseDublinCore", "use_dublin_core"); - // AutoCorrect saveCheckBoxOption(xProps, helper, "IgnoreHardLineBreaks", "ignore_hard_line_breaks"); saveCheckBoxOption(xProps, helper, "IgnoreEmptyParagraphs", "ignore_empty_paragraphs"); saveCheckBoxOption(xProps, helper, "IgnoreDoubleSpaces", "ignore_double_spaces"); + // Special content + saveCheckBoxOption(xProps, helper, "DisplayHiddenText", "display_hidden_text"); + saveCheckBoxOption(xProps, helper, "Notes", "notes"); + saveCheckBoxOption(xProps, helper, "UseDublinCore", "use_dublin_core"); + saveCheckBoxOption(xProps, helper, "UseCustomMetadata", "use_custom_metadata"); + // Document division boolean bSplit = saveCheckBoxOption(xProps, "Split"); short nSplitLevel = saveListBoxOption(xProps, "SplitLevel"); @@ -202,6 +209,12 @@ public class EpubOptionsDialog extends OptionsDialogBase { else if (sMethod.equals("UseDefaultFontChange")) { useDefaultFontChange(); } + else if (sMethod.equals("EditMetadataClick")) { + editMetadataClick(); + } + else if (sMethod.equals("EditCustomMetadataClick")) { + editCustomMetadataClick(); + } else if (sMethod.equals("SplitChange")) { splitChange(); } @@ -216,6 +229,7 @@ public class EpubOptionsDialog extends OptionsDialogBase { @Override public String[] getSupportedMethodNames() { String[] sNames = { "ConfigChange", "RelativeFontSizeChange", "UseDefaultFontChange", + "EditMetadataClick", "EditCustomMetadataClick", "SplitChange", "UsePageBreakSplitChange", "UseSplitAfterChange" }; return sNames; } @@ -242,15 +256,16 @@ public class EpubOptionsDialog extends OptionsDialogBase { setControlEnabled("ConvertToPx",!isLocked("convert_to_px")); setControlEnabled("OriginalImageSize",!isLocked("original_image_size")); - // Special content - setControlEnabled("Notes",!isLocked("notes")); - setControlEnabled("UseDublinCore",!isLocked("use_dublin_core")); - // AutoCorrect setControlEnabled("IgnoreHardLineBreaks",!isLocked("ignore_hard_line_breaks")); setControlEnabled("IgnoreEmptyParagraphs",!isLocked("ignore_empty_paragraphs")); setControlEnabled("IgnoreDoubleSpaces",!isLocked("ignore_double_spaces")); + // Special content + setControlEnabled("Notes",!isLocked("notes")); + setControlEnabled("UseDublinCore",!isLocked("use_dublin_core")); + setControlEnabled("UseCustomMetadata",!isLocked("use_custom_metadata")); + // Document division boolean bSplit = getCheckBoxStateAsBoolean("Split"); setControlEnabled("Split",!isLocked("split_level")); @@ -289,6 +304,43 @@ public class EpubOptionsDialog extends OptionsDialogBase { setControlEnabled("DefaultFontName", bState); } } + + private void editMetadataClick() { + // Get the DispatchHelper service + XMultiComponentFactory xMCF = xContext.getServiceManager(); + XMultiServiceFactory xFactory = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, xMCF); + Object dispatchHelper; + try { + dispatchHelper = xFactory.createInstance("com.sun.star.frame.DispatchHelper"); + } catch (Exception e) { + // Failed to get dispatch helper, cannot execute dispatch + System.out.println("Failed to get dispatch helper"); + return; + } + XDispatchHelper helper = (XDispatchHelper) UnoRuntime.queryInterface(XDispatchHelper.class, dispatchHelper); + + // Get the current frame + Object desktop; + try { + desktop = xMCF.createInstanceWithContext("com.sun.star.frame.Desktop", xContext); + } catch (Exception e) { + // Failed to get desktop + System.out.println("Failed to get desktop"); + return; + } + XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface(com.sun.star.frame.XDesktop.class, desktop); + XFrame xFrame =xDesktop.getCurrentFrame(); + + // Get the DispatchProvider for the current frame + XDispatchProvider xDispatchProvider = (XDispatchProvider)UnoRuntime.queryInterface(XDispatchProvider.class, xFrame); + PropertyValue[] props = new PropertyValue[0]; + helper.executeDispatch(xDispatchProvider, ".uno:SetDocumentProperties","", 0, props); + } + + private void editCustomMetadataClick() { + // Stub, TODO + System.out.println("Edit custom metadata"); + } private void splitChange() { if (!isLocked("split_level")) { diff --git a/source/java/writer2latex/api/ConverterFactory.java b/source/java/writer2latex/api/ConverterFactory.java index 817011a..cdd7019 100644 --- a/source/java/writer2latex/api/ConverterFactory.java +++ b/source/java/writer2latex/api/ConverterFactory.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2011-02-14) + * Version 1.2 (2011-02-20) * */ @@ -32,8 +32,8 @@ package writer2latex.api; public class ConverterFactory { // Version information - private static final String VERSION = "1.1.6"; - private static final String DATE = "2011-02-14"; + private static final String VERSION = "1.1.7"; + private static final String DATE = "2011-02-20"; /** Return the Writer2LaTeX version in the form * (major version).(minor version).(patch level)
diff --git a/source/java/writer2latex/base/ConverterBase.java b/source/java/writer2latex/base/ConverterBase.java index e1624b1..3617dc5 100644 --- a/source/java/writer2latex/base/ConverterBase.java +++ b/source/java/writer2latex/base/ConverterBase.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-12-21) + * Version 1.2 (2011-02-19) * */ @@ -97,7 +97,7 @@ public abstract class ConverterBase implements Converter { odDoc.read(is); ofr = new OfficeReader(odDoc,false); metaData = new MetaData(odDoc); - imageLoader = new ImageLoader(odDoc,sTargetFileName,true); + imageLoader = new ImageLoader(odDoc,true); imageLoader.setGraphicConverter(graphicConverter); // Prepare output diff --git a/source/java/writer2latex/epub/EPUBConverter.java b/source/java/writer2latex/epub/EPUBConverter.java index 3f19968..5d1952c 100644 --- a/source/java/writer2latex/epub/EPUBConverter.java +++ b/source/java/writer2latex/epub/EPUBConverter.java @@ -45,7 +45,7 @@ public final class EPUBConverter extends Xhtml11Converter { @Override public ConverterResult convert(InputStream is, String sTargetFileName) throws IOException { setOPS(true); - ConverterResult xhtmlResult = super.convert(is, sTargetFileName); + ConverterResult xhtmlResult = super.convert(is, "chapter"); ConverterResultImpl epubResult = new ConverterResultImpl(); epubResult.addDocument(new EPUBWriter(xhtmlResult,sTargetFileName,getXhtmlConfig())); diff --git a/source/java/writer2latex/epub/EPUBWriter.java b/source/java/writer2latex/epub/EPUBWriter.java index b3a8118..e520533 100644 --- a/source/java/writer2latex/epub/EPUBWriter.java +++ b/source/java/writer2latex/epub/EPUBWriter.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2001-2010 by Henrik Just + * Copyright: 2001-2011 by Henrik Just * * All Rights Reserved. * - * version 1.2 (2010-12-20) + * version 1.2 (2011-02-17) * */ @@ -89,7 +89,7 @@ public class EPUBWriter implements OutputFile { zos.closeEntry(); // Then manifest - OPFWriter manifest = new OPFWriter(xhtmlResult, config.xhtmlUseDublinCore()); + OPFWriter manifest = new OPFWriter(xhtmlResult, config.xhtmlUseDublinCore(), config.useCustomMetadata()); ZipEntry manifestEntry = new ZipEntry("OEBPS/book.opf"); zos.putNextEntry(manifestEntry); writeZipEntry(manifest,zos); diff --git a/source/java/writer2latex/epub/OPFWriter.java b/source/java/writer2latex/epub/OPFWriter.java index 633e32c..4a82361 100644 --- a/source/java/writer2latex/epub/OPFWriter.java +++ b/source/java/writer2latex/epub/OPFWriter.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2001-2010 by Henrik Just + * Copyright: 2001-2011 by Henrik Just * * All Rights Reserved. * - * version 1.2 (2010-12-20) + * version 1.2 (2011-02-17) * */ @@ -51,7 +51,7 @@ import writer2latex.xmerge.NewDOMDocument; public class OPFWriter extends NewDOMDocument { private String sUID=null; - public OPFWriter(ConverterResult cr, boolean bUseDublinCore) { + public OPFWriter(ConverterResult cr, boolean bUseDublinCore, boolean bUseCustomMetadata) { super("book", "opf"); // create DOM @@ -108,84 +108,86 @@ public class OPFWriter extends NewDOMDocument { boolean bHasIdentifier = false; boolean bHasCreator = false; boolean bHasDate = false; - // First rearrange the user-defined meta data - Map userDefinedMetaData = cr.getMetaData().getUserDefinedMetaData(); - Map dc = new HashMap(); - for (String sKey : userDefinedMetaData.keySet()) { - if (sKey.length()>0) { - String[] sValue = new String[2]; - sValue[0] = userDefinedMetaData.get(sKey); - String sNewKey; - int nDot = sKey.indexOf("."); - if (nDot>0) { - sNewKey = sKey.substring(0, nDot).toLowerCase(); - sValue[1] = sKey.substring(nDot+1); - } - else { - sNewKey = sKey.toLowerCase(); - sValue[1] = null; - } - dc.put(sNewKey, sValue); - } - } - // Then export it - String[] sKeys = Misc.sortStringSet(dc.keySet()); - for (String sKey : sKeys) { - String sValue = dc.get(sKey)[0]; - String sAttributeValue = dc.get(sKey)[1]; - if (sKey.startsWith("identifier")) { - Element identifier = appendElement(contentDOM, metadata, "dc:identifier", sValue); - if (!bHasIdentifier) { // The first identifier is the unique ID - identifier.setAttribute("id", "BookId"); - sUID = sValue; - } - if (sAttributeValue!=null) { - identifier.setAttribute("opf:scheme", sAttributeValue); - } - bHasIdentifier = true; - } - else if (sKey.startsWith("creator")) { - Element creator = appendElement(contentDOM, metadata, "dc:creator", sValue); - if (sAttributeValue!=null) { - creator.setAttribute("opf:role", sAttributeValue); - } - bHasCreator = true; - } - else if (sKey.startsWith("contributor")) { - Element contributor = appendElement(contentDOM, metadata, "dc:contributor", sValue); - if (sAttributeValue!=null) { - contributor.setAttribute("opf:role", sAttributeValue); + if (bUseCustomMetadata) { + // First rearrange the user-defined meta data + Map userDefinedMetaData = cr.getMetaData().getUserDefinedMetaData(); + Map dc = new HashMap(); + for (String sKey : userDefinedMetaData.keySet()) { + if (sKey.length()>0) { + String[] sValue = new String[2]; + sValue[0] = userDefinedMetaData.get(sKey); + String sNewKey; + int nDot = sKey.indexOf("."); + if (nDot>0) { + sNewKey = sKey.substring(0, nDot).toLowerCase(); + sValue[1] = sKey.substring(nDot+1); + } + else { + sNewKey = sKey.toLowerCase(); + sValue[1] = null; + } + dc.put(sNewKey, sValue); } } - else if (sKey.startsWith("date")) { - Element date = appendElement(contentDOM, metadata, "dc:date", sValue); - if (sAttributeValue!=null) { - date.setAttribute("opf:event", sAttributeValue); + // Then export it + String[] sKeys = Misc.sortStringSet(dc.keySet()); + for (String sKey : sKeys) { + String sValue = dc.get(sKey)[0]; + String sAttributeValue = dc.get(sKey)[1]; + if (sKey.startsWith("identifier")) { + Element identifier = appendElement(contentDOM, metadata, "dc:identifier", sValue); + if (!bHasIdentifier) { // The first identifier is the unique ID + identifier.setAttribute("id", "BookId"); + sUID = sValue; + } + if (sAttributeValue!=null) { + identifier.setAttribute("opf:scheme", sAttributeValue); + } + bHasIdentifier = true; } - bHasDate = true; - } - // Remaining properties must be unique and has not attributes, hence - else if (sAttributeValue==null) { - if ("publisher".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:publisher", sValue); + else if (sKey.startsWith("creator")) { + Element creator = appendElement(contentDOM, metadata, "dc:creator", sValue); + if (sAttributeValue!=null) { + creator.setAttribute("opf:role", sAttributeValue); + } + bHasCreator = true; } - else if ("type".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:type", sValue); + else if (sKey.startsWith("contributor")) { + Element contributor = appendElement(contentDOM, metadata, "dc:contributor", sValue); + if (sAttributeValue!=null) { + contributor.setAttribute("opf:role", sAttributeValue); + } } - else if ("format".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:format", sValue); + else if (sKey.startsWith("date")) { + Element date = appendElement(contentDOM, metadata, "dc:date", sValue); + if (sAttributeValue!=null) { + date.setAttribute("opf:event", sAttributeValue); + } + bHasDate = true; } - else if ("source".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:source", sValue); - } - else if ("relation".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:relation", sValue); - } - else if ("coverage".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:coverage", sValue); - } - else if ("rights".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:rights", sValue); + // Remaining properties must be unique and has not attributes, hence + else if (sAttributeValue==null) { + if ("publisher".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:publisher", sValue); + } + else if ("type".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:type", sValue); + } + else if ("format".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:format", sValue); + } + else if ("source".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:source", sValue); + } + else if ("relation".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:relation", sValue); + } + else if ("coverage".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:coverage", sValue); + } + else if ("rights".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:rights", sValue); + } } } } diff --git a/source/java/writer2latex/latex/ConverterPalette.java b/source/java/writer2latex/latex/ConverterPalette.java index 668a16e..11d93c8 100644 --- a/source/java/writer2latex/latex/ConverterPalette.java +++ b/source/java/writer2latex/latex/ConverterPalette.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-11-21) + * Version 1.2 (2011-02-19) * */ @@ -124,9 +124,11 @@ public final class ConverterPalette extends ConverterBase { // fill out inner converter method public void convertInner() throws IOException { sTargetFileName = Misc.trimDocumentName(sTargetFileName,".tex"); - imageLoader.setOutFileName(new ExportNameCollection(true).getExportName(sTargetFileName)); - - imageLoader.setUseSubdir(config.saveImagesInSubdir()); + String sSafeTargetFileName = new ExportNameCollection(true).getExportName(sTargetFileName); + imageLoader.setBaseFileName(sSafeTargetFileName+"-img"); + if (config.saveImagesInSubdir()) { + imageLoader.setUseSubdir(sSafeTargetFileName+"-img"); + } // Set graphics formats depending on backend if (config.getBackend()==LaTeXConfig.PDFTEX || config.getBackend()==LaTeXConfig.XETEX) { diff --git a/source/java/writer2latex/office/ImageLoader.java b/source/java/writer2latex/office/ImageLoader.java index fe51593..bfa2cd3 100644 --- a/source/java/writer2latex/office/ImageLoader.java +++ b/source/java/writer2latex/office/ImageLoader.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2009 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2009-12-07) + * Version 1.2 (2011-02-19) * */ @@ -55,8 +55,8 @@ public final class ImageLoader { private OfficeDocument oooDoc; // Data for file name generation - private String sOutFileName; - private boolean bUseSubdir = false; + private String sBaseFileName = ""; + private String sSubDirName = ""; private int nImageCount = 0; private NumberFormat formatter; @@ -70,17 +70,16 @@ public final class ImageLoader { private String sDefaultVectorFormat = null; private HashSet acceptedFormats = new HashSet(); - public ImageLoader(OfficeDocument oooDoc, String sOutFileName, boolean bExtractEPS) { + public ImageLoader(OfficeDocument oooDoc, boolean bExtractEPS) { this.oooDoc = oooDoc; - this.sOutFileName = sOutFileName; this.bExtractEPS = bExtractEPS; this.formatter = new DecimalFormat("000"); } - public void setOutFileName(String sOutFileName) { this.sOutFileName = sOutFileName; } + public void setBaseFileName(String sBaseFileName) { this.sBaseFileName = sBaseFileName; } + + public void setUseSubdir(String sSubDirName) { this.sSubDirName = sSubDirName+"/"; } - public void setUseSubdir(boolean bUseSubdir) { this.bUseSubdir = bUseSubdir; } - public void setAcceptOtherFormats(boolean b) { bAcceptOtherFormats = b; } public void setDefaultFormat(String sMime) { @@ -146,8 +145,7 @@ public final class ImageLoader { if (blob==null) { return null; } // Assign a name (without extension) - String sName = sOutFileName+"-img"+formatter.format(++nImageCount); - if (bUseSubdir) { sName = sOutFileName + "-img/" + sName; } + String sName = sSubDirName+sBaseFileName+formatter.format(++nImageCount); BinaryGraphicsDocument bgd = null; diff --git a/source/java/writer2latex/xhtml/Converter.java b/source/java/writer2latex/xhtml/Converter.java index ad0fcf4..3d8c549 100644 --- a/source/java/writer2latex/xhtml/Converter.java +++ b/source/java/writer2latex/xhtml/Converter.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-12-21) + * Version 1.2 (2011-02-19) * */ @@ -60,7 +60,7 @@ import writer2latex.util.ExportNameCollection; import writer2latex.util.Misc; /** - *

This class converts an OpenDocument file to an XHTML(+MathML) document.

+ *

This class converts an OpenDocument file to an XHTML(+MathML) or EPUB document.

* */ public class Converter extends ConverterBase { @@ -87,7 +87,7 @@ public class Converter extends ConverterBase { // The included style sheet and associated resources private CssDocument styleSheet = null; private Set resources = new HashSet(); - + // The xhtml output file(s) protected int nType = XhtmlDocument.XHTML10; // the doctype private boolean bOPS = false; // Do we need to be OPS conforming? @@ -124,7 +124,7 @@ public class Converter extends ConverterBase { @Override public void readStyleSheet(InputStream is) throws IOException { if (styleSheet==null) { - styleSheet = new CssDocument("styles.css"); + styleSheet = new CssDocument("styles/styles.css"); } styleSheet.read(is); } @@ -201,7 +201,16 @@ public class Converter extends ConverterBase { l10n = new L10n(); - imageLoader.setUseSubdir(config.saveImagesInSubdir()); + if (isOPS()) { + imageLoader.setBaseFileName("image"); + imageLoader.setUseSubdir("images"); + } + else { + imageLoader.setBaseFileName(sTargetFileName+"-img"); + if (config.saveImagesInSubdir()) { + imageLoader.setUseSubdir(sTargetFileName+"-img"); + } + } imageLoader.setDefaultFormat(MIMETypes.PNG); imageLoader.addAcceptedFormat(MIMETypes.JPEG); @@ -272,13 +281,15 @@ public class Converter extends ConverterBase { } } - // Export styles (temp.) - for (int i=0; i<=nOutFileIndex; i++) { - Element head = outFiles.get(i).getHeadNode(); - if (head!=null) { - Node styles = styleCv.exportStyles(outFiles.get(i).getContentDOM()); - if (styles!=null) { - head.appendChild(styles); + // Export styles (XHTML) + if (!isOPS()) { + for (int i=0; i<=nOutFileIndex; i++) { + Element head = outFiles.get(i).getHeadNode(); + if (head!=null) { + Node styles = styleCv.exportStyles(outFiles.get(i).getContentDOM()); + if (styles!=null) { + head.appendChild(styles); + } } } } @@ -407,6 +418,12 @@ public class Converter extends ConverterBase { } } + // Export styles (EPUB) + if (isOPS()) { + CssDocument cssDoc = new CssDocument("styles/styles1.css"); + cssDoc.read(styleCv.exportStyles(false)); + converterResult.addDocument(cssDoc); + } } private void addNavigationLink(Document dom, Node node, String s, int nIndex) { @@ -617,7 +634,7 @@ public class Converter extends ConverterBase { } } - // Add link to stylesheet, if producing nomral XHTML + // Add link to custom stylesheet, if producing normal XHTML if (!bOPS && config.xhtmlCustomStylesheet().length()>0) { Element htmlStyle = htmlDOM.createElement("link"); htmlStyle.setAttribute("rel","stylesheet"); @@ -626,26 +643,28 @@ public class Converter extends ConverterBase { htmlStyle.setAttribute("href",config.xhtmlCustomStylesheet()); head.appendChild(htmlStyle); } - /* later.... - if (nSplit>0 && !config.xhtmlIgnoreStyles()) { - Element htmlStyle = htmlDOM.createElement("link"); - htmlStyle.setAttribute("rel","stylesheet"); - htmlStyle.setAttribute("type","text/css"); - htmlStyle.setAttribute("media","all"); - htmlStyle.setAttribute("href",oooDoc.getName()+"-styles.css"); - htmlHead.appendChild(htmlStyle); - }*/ - // Note: For single output file, styles are exported to the doc at the end. - + // Add link to included style sheet if producing OPS content if (bOPS && styleSheet!=null) { Element sty = htmlDOM.createElement("link"); sty.setAttribute("rel", "stylesheet"); sty.setAttribute("type", "text/css"); sty.setAttribute("media", "all"); - sty.setAttribute("href", styleSheet.getFileName()); + sty.setAttribute("href", "stylesheet/"+styleSheet.getFileName()); head.appendChild(sty); } + + // Add link to generated stylesheet if producing OPS content + if (isOPS() && config.xhtmlFormatting()>XhtmlConfig.IGNORE_STYLES) { + Element htmlStyle = htmlDOM.createElement("link"); + htmlStyle.setAttribute("rel","stylesheet"); + htmlStyle.setAttribute("type","text/css"); + htmlStyle.setAttribute("media","all"); + htmlStyle.setAttribute("href","styles/styles1.css"); + head.appendChild(htmlStyle); + } + // Note: For XHTML, generated styles are exported to the doc at the end. + } // Recreate nested sections, if any diff --git a/source/java/writer2latex/xhtml/CssDocument.java b/source/java/writer2latex/xhtml/CssDocument.java index 4be4f39..e8882dc 100644 --- a/source/java/writer2latex/xhtml/CssDocument.java +++ b/source/java/writer2latex/xhtml/CssDocument.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-04-12) + * Version 1.2 (2011-02-17) * */ @@ -82,6 +82,10 @@ public class CssDocument implements OutputFile { } sContent = buf.toString(); } + + public void read(String s) { + sContent = s; + } } diff --git a/source/java/writer2latex/xhtml/StyleConverter.java b/source/java/writer2latex/xhtml/StyleConverter.java index b962de5..a1ac1ed 100644 --- a/source/java/writer2latex/xhtml/StyleConverter.java +++ b/source/java/writer2latex/xhtml/StyleConverter.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-12-29) + * Version 1.2 (2011-02-17) * */ @@ -121,11 +121,10 @@ class StyleConverter extends ConverterHelper { applyStyle(info,node); } } - - // Export used styles to CSS - public Node exportStyles(Document htmlDOM) { - String sIndent = config.prettyPrint() ? " " : ""; - + + public String exportStyles(boolean bIndent) { + String sIndent = bIndent ? " " : ""; + StringBuffer buf = new StringBuffer(); // Export default style @@ -163,21 +162,26 @@ class StyleConverter extends ConverterHelper { buf.append(getFrameSc().getStyleDeclarations(sIndent)); buf.append(getPresentationSc().getStyleDeclarations(sIndent)); buf.append(getPageSc().getStyleDeclarations(sIndent)); + return buf.toString(); + } + + // Export used styles to CSS + public Node exportStyles(Document htmlDOM) { + String sStyles = exportStyles(config.prettyPrint()); // Create node - if (buf.length()>0) { + if (sStyles.length()>0) { Element htmlStyle = htmlDOM.createElement("style"); htmlStyle.setAttribute("media","all"); htmlStyle.setAttribute("type","text/css"); htmlStyle.appendChild(htmlDOM.createTextNode(config.prettyPrint() ? "\n" : " ")); - htmlStyle.appendChild(htmlDOM.createTextNode(buf.toString())); + htmlStyle.appendChild(htmlDOM.createTextNode(sStyles)); if (config.prettyPrint()) { htmlStyle.appendChild(htmlDOM.createTextNode(" ")); } return htmlStyle; } else { return null; } - } } \ No newline at end of file diff --git a/source/java/writer2latex/xhtml/XhtmlConfig.java b/source/java/writer2latex/xhtml/XhtmlConfig.java index ca249bc..f7ce56a 100644 --- a/source/java/writer2latex/xhtml/XhtmlConfig.java +++ b/source/java/writer2latex/xhtml/XhtmlConfig.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-12-28) + * Version 1.2 (2011-02-17) * */ @@ -41,7 +41,7 @@ import writer2latex.util.Misc; public class XhtmlConfig extends writer2latex.base.ConfigBase { // Implement configuration methods - protected int getOptionCount() { return 53; } + protected int getOptionCount() { return 54; } protected String getDefaultConfigPath() { return "/writer2latex/xhtml/config/"; } // Override setOption: To be backwards compatible, we must accept options @@ -106,36 +106,37 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { private static final int USE_DEFAULT_FONT = 20; private static final int DEFAULT_FONT_NAME = 21; private static final int USE_DUBLIN_CORE = 22; - private static final int NOTES = 23; - private static final int DISPLAY_HIDDEN_TEXT = 24; - private static final int CONVERT_TO_PX = 25; - private static final int SCALING = 26; - private static final int COLUMN_SCALING = 27; - private static final int RELATIVE_FONT_SIZE = 28; - private static final int FONT_SCALING = 29; - private static final int FLOAT_OBJECTS = 30; - private static final int TABSTOP_STYLE = 31; - private static final int FORMULAS = 32; - private static final int ENDNOTES_HEADING = 33; - private static final int EXTERNAL_TOC_DEPTH = 34; - private static final int INCLUDE_TOC = 35; - private static final int SPLIT_LEVEL = 36; - private static final int REPEAT_LEVELS = 37; - private static final int PAGE_BREAK_SPLIT = 38; - private static final int SPLIT_AFTER = 39; - private static final int CALC_SPLIT = 40; - private static final int DISPLAY_HIDDEN_SHEETS = 41; - private static final int DISPLAY_HIDDEN_ROWS_COLS = 42; - private static final int DISPLAY_FILTERED_ROWS_COLS = 43; - private static final int APPLY_PRINT_RANGES = 44; - private static final int USE_TITLE_AS_HEADING = 45; - private static final int USE_SHEET_NAMES_AS_HEADINGS = 46; - private static final int XSLT_PATH = 47; - private static final int SAVE_IMAGES_IN_SUBDIR = 48; - private static final int UPLINK = 49; - private static final int DIRECTORY_ICON = 50; - private static final int DOCUMENT_ICON = 51; - private static final int ZEN_HACK = 52; // temporary hack for ePub Zen Garden styles + private static final int USE_CUSTOM_METADATA = 23; + private static final int NOTES = 24; + private static final int DISPLAY_HIDDEN_TEXT = 25; + private static final int CONVERT_TO_PX = 26; + private static final int SCALING = 27; + private static final int COLUMN_SCALING = 28; + private static final int RELATIVE_FONT_SIZE = 29; + private static final int FONT_SCALING = 30; + private static final int FLOAT_OBJECTS = 31; + private static final int TABSTOP_STYLE = 32; + private static final int FORMULAS = 33; + private static final int ENDNOTES_HEADING = 34; + private static final int EXTERNAL_TOC_DEPTH = 35; + private static final int INCLUDE_TOC = 36; + private static final int SPLIT_LEVEL = 37; + private static final int REPEAT_LEVELS = 38; + private static final int PAGE_BREAK_SPLIT = 39; + private static final int SPLIT_AFTER = 40; + private static final int CALC_SPLIT = 41; + private static final int DISPLAY_HIDDEN_SHEETS = 42; + private static final int DISPLAY_HIDDEN_ROWS_COLS = 43; + private static final int DISPLAY_FILTERED_ROWS_COLS = 44; + private static final int APPLY_PRINT_RANGES = 45; + private static final int USE_TITLE_AS_HEADING = 46; + private static final int USE_SHEET_NAMES_AS_HEADINGS = 47; + private static final int XSLT_PATH = 48; + private static final int SAVE_IMAGES_IN_SUBDIR = 49; + private static final int UPLINK = 50; + private static final int DIRECTORY_ICON = 51; + private static final int DOCUMENT_ICON = 52; + private static final int ZEN_HACK = 53; // temporary hack for ePub Zen Garden styles protected ComplexOption xheading = addComplexOption("heading-map"); protected ComplexOption xpar = addComplexOption("paragraph-map"); @@ -174,9 +175,10 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { else { nValue = CSS1; } } }; - options[USE_DEFAULT_FONT] = new BooleanOption("use_default_font","true"); + options[USE_DEFAULT_FONT] = new BooleanOption("use_default_font","false"); options[DEFAULT_FONT_NAME] = new BooleanOption("default_font_name",""); options[USE_DUBLIN_CORE] = new BooleanOption("use_dublin_core","true"); + options[USE_CUSTOM_METADATA] = new BooleanOption("use_custom_metadata","true"); options[NOTES] = new BooleanOption("notes","true"); options[DISPLAY_HIDDEN_TEXT] = new BooleanOption("display_hidden_text", "false"); options[CONVERT_TO_PX] = new BooleanOption("convert_to_px","true"); @@ -187,7 +189,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { options[FLOAT_OBJECTS] = new BooleanOption("float_objects","true"); options[TABSTOP_STYLE] = new Option("tabstop_style",""); options[ENDNOTES_HEADING] = new Option("endnotes_heading",""); - options[FORMULAS] = new IntegerOption("formulas","starmath") { + options[FORMULAS] = new IntegerOption("formulas","image+starmath") { @Override public void setString(String sValue) { super.setString(sValue); if ("latex".equals(sValue)) { nValue = LATEX; } @@ -341,6 +343,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { public boolean useDefaultFont() { return ((BooleanOption) options[USE_DEFAULT_FONT]).getValue(); } public String defaultFontName() { return options[DEFAULT_FONT_NAME].getString(); } public boolean xhtmlUseDublinCore() { return ((BooleanOption) options[USE_DUBLIN_CORE]).getValue(); } + public boolean useCustomMetadata() { return ((BooleanOption) options[USE_CUSTOM_METADATA]).getValue(); } public boolean xhtmlNotes() { return ((BooleanOption) options[NOTES]).getValue(); } public boolean displayHiddenText() { return ((BooleanOption) options[DISPLAY_HIDDEN_TEXT]).getValue(); } public boolean xhtmlConvertToPx() { return ((BooleanOption) options[CONVERT_TO_PX]).getValue(); } diff --git a/source/oxt/writer2latex/description.xml b/source/oxt/writer2latex/description.xml index 3b88e5c..53802bc 100644 --- a/source/oxt/writer2latex/description.xml +++ b/source/oxt/writer2latex/description.xml @@ -5,7 +5,7 @@ - + diff --git a/source/oxt/writer2xhtml/Options.xcs b/source/oxt/writer2xhtml/Options.xcs index 75c7cfc..f8bb42a 100644 --- a/source/oxt/writer2xhtml/Options.xcs +++ b/source/oxt/writer2xhtml/Options.xcs @@ -62,14 +62,15 @@ - - - - + + + + + diff --git a/source/oxt/writer2xhtml/Options.xcu b/source/oxt/writer2xhtml/Options.xcu index ef66302..c2748f3 100644 --- a/source/oxt/writer2xhtml/Options.xcu +++ b/source/oxt/writer2xhtml/Options.xcu @@ -74,7 +74,7 @@ false - false + true 100 @@ -85,6 +85,15 @@ + + false + + + false + + + false + false @@ -94,14 +103,8 @@ true - - false - - - false - - - false + + true false diff --git a/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl b/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl index 368cbfd..efd7497 100755 --- a/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl +++ b/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl @@ -1,6 +1,6 @@ - + @@ -16,21 +16,21 @@ - + - - - - - - - - + + + + + + + + - - + + @@ -40,41 +40,41 @@ - - - - - + + + + + - + - - + + - + - - + + - - + + - - + + - - - - + + + + @@ -88,7 +88,14 @@ - - + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2xhtml/description.xml b/source/oxt/writer2xhtml/description.xml index f328c54..11e71af 100644 --- a/source/oxt/writer2xhtml/description.xml +++ b/source/oxt/writer2xhtml/description.xml @@ -5,7 +5,7 @@ - + diff --git a/source/oxt/writer2xhtml/help/en/org.openoffice.da.writer2xhtml.oxt/epub_export.xhp b/source/oxt/writer2xhtml/help/en/org.openoffice.da.writer2xhtml.oxt/epub_export.xhp index 77398eb..9323567 100644 --- a/source/oxt/writer2xhtml/help/en/org.openoffice.da.writer2xhtml.oxt/epub_export.xhp +++ b/source/oxt/writer2xhtml/help/en/org.openoffice.da.writer2xhtml.oxt/epub_export.xhp @@ -85,6 +85,23 @@ Check this to use the natural size of images rather than the size defined in the document + AutoCorrect + + + Ignore hard line breaks + Check this if you don't want to export hard (manual) line breaks + Sometimes hard (or manual) line breaks are used in Writer to optimize + the placement of the line breaks. Since line breaking in an EPUB reader is completely different, you may want to ignore + all hard line breaks by selecting this option. + + + Check this if you don't want to export empty paragraphs + + + + Check this to treat several spaces as a single space in the export + + @@ -105,26 +122,15 @@ Export optional document properties If you select this option, all the document properties (File – Properties) are exported, otherwise only the title is exported. - The EPUB format supports a number of additional meta data elements. - You can define these using user-defined properties. - + Click Edit to open the dialog to edit the document properties. - AutoCorrect - - - Ignore hard line breaks - Check this if you don't want to export hard (manual) line breaks - Sometimes hard (or manual) line breaks are used in Writer to optimize - the placement of the line breaks. Since line breaking in an EPUB reader is completely different, you may want to ignore - all hard line breaks by selecting this option. - - - Check this if you don't want to export empty paragraphs - - - - Check this to treat several spaces as a single space in the export - + + Check this if you want to export custom document properties + Export custom document properties + The EPUB format supports a number of additional document properties, which can be + defined using custom document properties in %PRODUCTNAME Writer. + If you select this option, these properties will be exported. + Click Edit to edit the custom document properties. Document division Technically an EPUB document consists of several document parts in XHTML format. diff --git a/source/oxt/writer4latex/description.xml b/source/oxt/writer4latex/description.xml index 0e56167..9f2c6de 100644 --- a/source/oxt/writer4latex/description.xml +++ b/source/oxt/writer4latex/description.xml @@ -4,7 +4,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> - + diff --git a/source/oxt/xhtml-config-sample/description.xml b/source/oxt/xhtml-config-sample/description.xml index a769646..6e42dc0 100644 --- a/source/oxt/xhtml-config-sample/description.xml +++ b/source/oxt/xhtml-config-sample/description.xml @@ -2,5 +2,5 @@ - +