diff --git a/source/distro/changelog.txt b/source/distro/changelog.txt index d04164d..4ddc128 100644 --- a/source/distro/changelog.txt +++ b/source/distro/changelog.txt @@ -2,6 +2,9 @@ Changelog for Writer2LaTeX version 1.0 -> 1.2 ---------- version 1.1.8 ---------- +[w2x] New option cover_image with values true and false (default). In EPUB export, if this option is set the true the very + first image found in the document is used as cover image + [w2x] New option image_split with values "none" or a percentage. In EPUB export, if image_size is "relative", an image of width greater than or equal to this percentage is placed in a separate file as a full screen image. This takes effect only if the aspect ratio is at least 3:4 diff --git a/source/distro/doc/user-manual.odt b/source/distro/doc/user-manual.odt index af4a3f0..e239ad2 100644 Binary files a/source/distro/doc/user-manual.odt and b/source/distro/doc/user-manual.odt differ diff --git a/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java b/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java index 6ab1038..ff25339 100644 --- a/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java +++ b/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2011-06-16) + * Version 1.2 (2011-06-19) * */ @@ -102,6 +102,7 @@ public class EpubOptionsDialog extends OptionsDialogBase { loadListBoxOption(xProps, "PageBreakSplit"); loadCheckBoxOption(xProps, "UseImageSplit"); loadNumericOption(xProps, "ImageSplit"); + loadCheckBoxOption(xProps, "CoverImage"); loadCheckBoxOption(xProps, "UseSplitAfter"); loadNumericOption(xProps, "SplitAfter"); @@ -175,6 +176,8 @@ public class EpubOptionsDialog extends OptionsDialogBase { helper.put("image_split", "none"); } } + + saveCheckBoxOption(xProps, helper, "CoverImage", "cover_image"); boolean bUseSplitAfter = saveCheckBoxOption(xProps, "UseSplitAfter"); int nSplitAfter = saveNumericOption(xProps, "SplitAfter"); @@ -206,9 +209,6 @@ public class EpubOptionsDialog extends OptionsDialogBase { else if (sMethod.equals("UseDefaultFontChange")) { useDefaultFontChange(); } - else if (sMethod.equals("ImageSizeChange")) { - imageSizeChange(); - } else if (sMethod.equals("EditMetadataClick")) { editMetadataClick(); } @@ -270,6 +270,8 @@ public class EpubOptionsDialog extends OptionsDialogBase { setControlEnabled("ImageSplit",!isLocked("image_split") && bUseImageSplit); setControlEnabled("ImageSplitPercentLabel",!isLocked("image_split") && bUseImageSplit); + setControlEnabled("CoverImage", !isLocked("cover_image")); + boolean bUseSplitAfter = getCheckBoxStateAsBoolean("UseSplitAfter"); setControlEnabled("UseSplitAfter",!isLocked("split_after")); setControlEnabled("SplitAfterLabel",!isLocked("split_after") && bUseSplitAfter); @@ -298,13 +300,6 @@ public class EpubOptionsDialog extends OptionsDialogBase { } } - private void imageSizeChange() { - if (!isLocked("image_split")) { - setControlEnabled("UseImageSplit", getListBoxSelectedItem("ImageSize")==1); - useImageSplitChange(); - } - } - private void editMetadataClick() { Object dialog; try { @@ -324,7 +319,7 @@ public class EpubOptionsDialog extends OptionsDialogBase { private void useImageSplitChange() { if (!isLocked("image_split")) { - boolean bEnable = getCheckBoxStateAsBoolean("UseImageSplit") && (getListBoxSelectedItem("ImageSize")==1); + boolean bEnable = getCheckBoxStateAsBoolean("UseImageSplit"); setControlEnabled("ImageSplitLabel",bEnable); setControlEnabled("ImageSplit",bEnable); setControlEnabled("ImageSplitPercentLabel",bEnable); diff --git a/source/java/writer2latex/api/ConverterFactory.java b/source/java/writer2latex/api/ConverterFactory.java index 453d2de..ec62e41 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-06-16) + * Version 1.2 (2011-06-19) * */ @@ -33,7 +33,7 @@ public class ConverterFactory { // Version information private static final String VERSION = "1.1.8"; - private static final String DATE = "2011-06-16"; + private static final String DATE = "2011-06-19"; /** Return the Writer2LaTeX version in the form * (major version).(minor version).(patch level)
diff --git a/source/java/writer2latex/api/ConverterResult.java b/source/java/writer2latex/api/ConverterResult.java index af3b96e..e38af10 100644 --- a/source/java/writer2latex/api/ConverterResult.java +++ b/source/java/writer2latex/api/ConverterResult.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-13) + * Version 1.2 (2011-06-19) * */ @@ -105,6 +105,14 @@ public interface ConverterResult { */ public ContentEntry getBibliographyFile(); + /** Get the entry which contains the cover image + * + * @return the entry or null if a cover image does not exist + */ + public ContentEntry getCoverImageFile(); + + + /** Write all files of the ConverterResult to a directory. * Subdirectories are created as required by the individual * OutputFiles. diff --git a/source/java/writer2latex/base/ConverterResultImpl.java b/source/java/writer2latex/base/ConverterResultImpl.java index 7cf218a..e55a519 100644 --- a/source/java/writer2latex/base/ConverterResultImpl.java +++ b/source/java/writer2latex/base/ConverterResultImpl.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-13) +* Version 1.2 (2011-06-19) * */ @@ -53,6 +53,7 @@ public class ConverterResultImpl implements ConverterResult { private ContentEntry lotFile; private ContentEntry indexFile; private ContentEntry bibliographyFile; + private ContentEntry coverImageFile; private MetaData metaData = null; @@ -77,6 +78,7 @@ public class ConverterResultImpl implements ConverterResult { lotFile = null; indexFile = null; bibliographyFile = null; + coverImageFile = null; metaData = null; nMasterCount = 0; } @@ -209,6 +211,18 @@ public class ConverterResultImpl implements ConverterResult { return bibliographyFile; } + /** Define the entry which contains the cover image + * + * @param entry the entry + */ + public void setCoverImageFile(ContentEntry entry) { + coverImageFile = entry; + } + + public ContentEntry getCoverImageFile() { + return coverImageFile; + } + /** Set the meta data of this ConverterResult * * @param metaData the meta data diff --git a/source/java/writer2latex/office/OfficeReader.java b/source/java/writer2latex/office/OfficeReader.java index 6757603..a5182ff 100644 --- a/source/java/writer2latex/office/OfficeReader.java +++ b/source/java/writer2latex/office/OfficeReader.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-10-27) + * Version 1.2 (2011-06-16) * */ @@ -308,6 +308,9 @@ public class OfficeReader { // The main content element private Element content = null; + + // The first image in the document + private Element firstImage = null; // Identify OASIS OpenDocument format private boolean bOpenDocument = false; @@ -705,6 +708,14 @@ public class OfficeReader { public TableReader getTableReader(Element node) { return new TableReader(this,node); } + + /** Get the very first image in this document, if any + * + * @return the first image, or null if no images exists + */ + public Element getFirstImage() { + return firstImage; + } /** Constructor; read a document */ public OfficeReader(OfficeDocument oooDoc, boolean bAllParagraphsAreSoft) { @@ -1122,6 +1133,11 @@ public class OfficeReader { } } // todo: other indexes + else if (firstImage==null && sName.equals(XMLString.DRAW_FRAME)) { + // This may be an image (note that a replacement image for an object is OK by this definition) + Element image = Misc.getChildByTagName(node, XMLString.DRAW_IMAGE); + if (image!=null) { firstImage=image; } + } // Traverse the children Node child = node.getFirstChild(); diff --git a/source/java/writer2latex/xhtml/Converter.java b/source/java/writer2latex/xhtml/Converter.java index 4307c74..862042f 100644 --- a/source/java/writer2latex/xhtml/Converter.java +++ b/source/java/writer2latex/xhtml/Converter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2011-06-07) + * Version 1.2 (2011-06-19) * */ @@ -217,6 +217,10 @@ public class Converter extends ConverterBase { converterResult.setIndexFile(new ContentEntryImpl(l10n.get(L10n.INDEX),1,htmlDoc,sTarget)); nAlphabeticalIndex = nOutFileIndex; } + + protected void setCoverImageFile(String sTarget) { + converterResult.setCoverImageFile(new ContentEntryImpl("Cover image",0,htmlDoc,sTarget)); + } protected Element createElement(String s) { return htmlDOM.createElement(s); } diff --git a/source/java/writer2latex/xhtml/DrawConverter.java b/source/java/writer2latex/xhtml/DrawConverter.java index 4dab3c8..5a96d2a 100644 --- a/source/java/writer2latex/xhtml/DrawConverter.java +++ b/source/java/writer2latex/xhtml/DrawConverter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2011-06-16) + * Version 1.2 (2011-06-19) * */ @@ -97,6 +97,7 @@ public class DrawConverter extends ConverterHelper { private boolean bConvertToPx; private int nImageSize; private String sImageSplit; + private boolean bCoverImage; // Frames in spreadsheet documents are collected here private Vector frames = new Vector(); @@ -106,7 +107,7 @@ public class DrawConverter extends ConverterHelper { // Large images (for full screen) in EPUB export are collected here private Vector fullscreenFrames = new Vector(); // This flag determines whether to collect full screen images or insert them immediately - private boolean bCollectFullscreenFrames = false; + private boolean bCollectFullscreenFrames = true; public DrawConverter(OfficeReader ofr, XhtmlConfig config, Converter converter) { super(ofr,config,converter); @@ -122,8 +123,9 @@ public class DrawConverter extends ConverterHelper { bConvertToPx = config.xhtmlConvertToPx(); nImageSize = config.imageSize(); sImageSplit = config.imageSplit(); + bCoverImage = config.coverImage(); } - + /////////////////////////////////////////////////////////////////////// // Complete Draw documents/presentations @@ -230,20 +232,36 @@ public class DrawConverter extends ConverterHelper { else return onode; } + // Add cover image (the first image in the document is taken out of context) + public Element insertCoverImage(Element hnode) { + Element currentNode = hnode; + if (bCoverImage) { + Element cover = ofr.getFirstImage(); + if (cover!=null) { + converter.setCoverImageFile(null); + bCollectFullscreenFrames = false; + handleDrawElement(cover,currentNode,null,FULL_SCREEN); + bCollectFullscreenFrames = true; + currentNode = getTextCv().doMaybeSplit(hnode, 0); + } + } + return currentNode; + } + // Flush all full screen images, returning the new document node public Element flushFullscreenFrames(Element hnode) { - Element currentFrame = hnode; + Element currentNode = hnode; if (converter.isTopLevel() && !fullscreenFrames.isEmpty()) { bCollectFullscreenFrames = false; - currentFrame = getTextCv().doMaybeSplit(hnode, 0); + currentNode = getTextCv().doMaybeSplit(hnode, 0); for (Element image : fullscreenFrames) { - handleDrawElement(image,currentFrame,null,FULL_SCREEN); - currentFrame = getTextCv().doMaybeSplit(hnode, 0); + handleDrawElement(image,currentNode,null,FULL_SCREEN); + currentNode = getTextCv().doMaybeSplit(hnode, 0); } fullscreenFrames.clear(); bCollectFullscreenFrames = true; } - return currentFrame; + return currentNode; } public void flushFrames(Element hnode) { @@ -400,23 +418,28 @@ public class DrawConverter extends ConverterHelper { private void handleDrawImage(Element onode, Element hnodeBlock, Element hnodeInline, int nMode) { Element frame = getFrame(onode); - // First check to see if we should treat this image as a "full screen" image - // This is only supported for EPUB documents with relative image size - // (Currently only images are handled like this, hence the code is here rather than in handleDrawElement) - if (bCollectFullscreenFrames && converter.isOPS() && nImageSize==XhtmlConfig.RELATIVE && !"none".equals(sImageSplit) - && converter.isTopLevel()) { - StyleWithProperties style = ofr.getFrameStyle(frame.getAttribute(XMLString.DRAW_STYLE_NAME)); - String sWidth = getFrameWidth(frame, style); - String sHeight = getFrameHeight(frame, style); - // It is if the image width exceeds a certain percentage of the current text width and the height is - // greater than 1.33*the width (recommended by Michel "Coolmicro") - if (sWidth!=null && sHeight!=null && - Misc.sub(Misc.multiply("133%",sWidth), sHeight).startsWith("-") && - Misc.sub(Misc.multiply(sImageSplit,converter.getContentWidth()), - Misc.multiply(sScale,Misc.truncateLength(sWidth))).startsWith("-")) { - fullscreenFrames.add(onode); + // For EPUB document some images require special treatment: Cover image and full screen images + if (bCollectFullscreenFrames && converter.isOPS()) { + // First check whether this is the cover image + if (bCoverImage && onode==ofr.getFirstImage()) { return; } + // Next check to see if we should treat this image as a "full screen" image + // (Currently only images are handled like this, hence the code is here rather than in handleDrawElement) + else if (!"none".equals(sImageSplit) && converter.isTopLevel()) { + StyleWithProperties style = ofr.getFrameStyle(frame.getAttribute(XMLString.DRAW_STYLE_NAME)); + String sWidth = getFrameWidth(frame, style); + String sHeight = getFrameHeight(frame, style); + // It is if the image width exceeds a certain percentage of the current text width and the height is + // greater than 1.33*the width (recommended by Michel "Coolmicro") + if (sWidth!=null && sHeight!=null && + Misc.sub(Misc.multiply("133%",sWidth), sHeight).startsWith("-") && + Misc.sub(Misc.multiply(sImageSplit,converter.getContentWidth()), + Misc.multiply(sScale,Misc.truncateLength(sWidth))).startsWith("-")) { + fullscreenFrames.add(onode); + return; + } + } } // Get the image from the ImageLoader @@ -462,7 +485,7 @@ public class DrawConverter extends ConverterHelper { StyleInfo info = new StyleInfo(); String sStyleName = Misc.getAttribute(frame, XMLString.DRAW_STYLE_NAME); if (nMode!=FULL_SCREEN) { getFrameSc().applyStyle(sStyleName,info); } - applyImageSize(frame,info.props,false); + applyImageSize(frame,info.props,nMode,false); // Apply placement applyPlacement(frame, hnodeBlock, hnodeInline, nMode, image, info); @@ -513,7 +536,7 @@ public class DrawConverter extends ConverterHelper { case INLINE: break; case ABSOLUTE: - sContentWidth = applyImageSize(frame,info.props,false); + sContentWidth = applyImageSize(frame,info.props,nMode,false); info.props.addValue("margin-left","auto"); info.props.addValue("margin-right","auto"); applyPosition(frame,info.props); @@ -523,10 +546,10 @@ public class DrawConverter extends ConverterHelper { info.props.addValue("margin-bottom","2px"); info.props.addValue("margin-left","auto"); info.props.addValue("margin-right","auto"); - sContentWidth = applyImageSize(frame,info.props,true); + sContentWidth = applyImageSize(frame,info.props,nMode,true); break; case FLOATING: - sContentWidth = applyImageSize(frame,info.props,true); + sContentWidth = applyImageSize(frame,info.props,nMode,true); StyleWithProperties style = ofr.getFrameStyle(sStyleName); if (style!=null) { String sPos = style.getProperty(XMLString.STYLE_HORIZONTAL_POS); @@ -918,28 +941,25 @@ public class DrawConverter extends ConverterHelper { // TODO: For absolute placement, only absolute size makes sense // TODO: How to handle NONE in case of text boxes? (currently using browser default, usually 100% width) - private String applyImageSize(Element node, CSVList props, boolean bOnlyWidth) { - if (bCollectFullscreenFrames) { // Normal image - switch (nImageSize) { - case XhtmlConfig.ABSOLUTE: - return applySize(node, props, bOnlyWidth); - case XhtmlConfig.RELATIVE: + private String applyImageSize(Element node, CSVList props, int nMode, boolean bOnlyWidth) { + switch (nImageSize) { + case XhtmlConfig.ABSOLUTE: + return applySize(node, props, bOnlyWidth); + case XhtmlConfig.RELATIVE: + if (nMode==FULL_SCREEN) { + props.addValue("max-width","100%"); + props.addValue("height","100%"); + } + else { String sWidth = getFrameWidth(node, ofr.getFrameStyle(node.getAttribute(XMLString.DRAW_STYLE_NAME))); if (sWidth!=null) { props.addValue("width", Misc.divide(Misc.multiply(sScale,Misc.truncateLength(sWidth)),converter.getContentWidth())); } return sWidth; - case XhtmlConfig.NONE: - // Nothing to do :-) - return getFrameWidth(node, ofr.getFrameStyle(node.getAttribute(XMLString.DRAW_STYLE_NAME))); } - } - else { // Full screen image - props.addValue("max-width","100%"); - props.addValue("height","100%"); - props.addValue("display","block"); - props.addValue("margin-left","auto"); - props.addValue("margin-right","auto"); + case XhtmlConfig.NONE: + // Nothing to do :-) + return getFrameWidth(node, ofr.getFrameStyle(node.getAttribute(XMLString.DRAW_STYLE_NAME))); } return null; } @@ -990,7 +1010,10 @@ public class DrawConverter extends ConverterHelper { break; case FULL_SCREEN: if (hnodeBlock!=null) { - hnodeBlock.appendChild(object); + Element div = converter.createElement("div"); + div.setAttribute("style", "text-align:center"); + hnodeBlock.appendChild(div); + div.appendChild(object); } break; case FLOATING: diff --git a/source/java/writer2latex/xhtml/TextConverter.java b/source/java/writer2latex/xhtml/TextConverter.java index 2a5fd51..21a03f2 100644 --- a/source/java/writer2latex/xhtml/TextConverter.java +++ b/source/java/writer2latex/xhtml/TextConverter.java @@ -189,6 +189,9 @@ public class TextConverter extends ConverterHelper { hnode = form; } } + + // Add cover image + hnode = getDrawCv().insertCoverImage(hnode); // Convert content hnode = (Element)traverseBlockText(onode,hnode); diff --git a/source/java/writer2latex/xhtml/XhtmlConfig.java b/source/java/writer2latex/xhtml/XhtmlConfig.java index 5f591ae..4ffac84 100644 --- a/source/java/writer2latex/xhtml/XhtmlConfig.java +++ b/source/java/writer2latex/xhtml/XhtmlConfig.java @@ -41,7 +41,7 @@ import writer2latex.util.Misc; public class XhtmlConfig extends writer2latex.base.ConfigBase { // Implement configuration methods - protected int getOptionCount() { return 55; } + protected int getOptionCount() { return 56; } protected String getDefaultConfigPath() { return "/writer2latex/xhtml/config/"; } // Override setOption: To be backwards compatible, we must accept options @@ -136,19 +136,20 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { private static final int PAGE_BREAK_SPLIT = 39; private static final int SPLIT_AFTER = 40; private static final int IMAGE_SPLIT = 41; - private static final int CALC_SPLIT = 42; - private static final int DISPLAY_HIDDEN_SHEETS = 43; - private static final int DISPLAY_HIDDEN_ROWS_COLS = 44; - private static final int DISPLAY_FILTERED_ROWS_COLS = 45; - private static final int APPLY_PRINT_RANGES = 46; - private static final int USE_TITLE_AS_HEADING = 47; - private static final int USE_SHEET_NAMES_AS_HEADINGS = 48; - private static final int XSLT_PATH = 49; - private static final int SAVE_IMAGES_IN_SUBDIR = 50; - private static final int UPLINK = 51; - private static final int DIRECTORY_ICON = 52; - private static final int DOCUMENT_ICON = 53; - private static final int ZEN_HACK = 54; // temporary hack for ePub Zen Garden styles + private static final int COVER_IMAGE = 42; + private static final int CALC_SPLIT = 43; + private static final int DISPLAY_HIDDEN_SHEETS = 44; + private static final int DISPLAY_HIDDEN_ROWS_COLS = 45; + private static final int DISPLAY_FILTERED_ROWS_COLS = 46; + private static final int APPLY_PRINT_RANGES = 47; + private static final int USE_TITLE_AS_HEADING = 48; + private static final int USE_SHEET_NAMES_AS_HEADINGS = 49; + private static final int XSLT_PATH = 50; + private static final int SAVE_IMAGES_IN_SUBDIR = 51; + private static final int UPLINK = 52; + private static final int DIRECTORY_ICON = 53; + private static final int DOCUMENT_ICON = 54; + private static final int ZEN_HACK = 55; // temporary hack for ePub Zen Garden styles protected ComplexOption xheading = addComplexOption("heading-map"); protected ComplexOption xpar = addComplexOption("paragraph-map"); @@ -258,6 +259,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { } }; options[IMAGE_SPLIT] = new Option("image_split","none"); + options[COVER_IMAGE] = new BooleanOption("cover_image","false"); options[CALC_SPLIT] = new BooleanOption("calc_split","false"); options[DISPLAY_HIDDEN_SHEETS] = new BooleanOption("display_hidden_sheets", "false"); options[DISPLAY_HIDDEN_ROWS_COLS] = new BooleanOption("display_hidden_rows_cols","false"); @@ -383,6 +385,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { public int pageBreakSplit() { return ((IntegerOption) options[PAGE_BREAK_SPLIT]).getValue(); } public int splitAfter() { return ((IntegerOption) options[SPLIT_AFTER]).getValue(); } public String imageSplit() { return options[IMAGE_SPLIT].getString(); } + public boolean coverImage() { return ((BooleanOption) options[COVER_IMAGE]).getValue(); } public boolean xhtmlCalcSplit() { return ((BooleanOption) options[CALC_SPLIT]).getValue(); } public boolean xhtmlDisplayHiddenSheets() { return ((BooleanOption) options[DISPLAY_HIDDEN_SHEETS]).getValue(); } public boolean displayHiddenRowsCols() { return ((BooleanOption) options[DISPLAY_HIDDEN_ROWS_COLS]).getValue(); } diff --git a/source/oxt/writer2xhtml/Options.xcs b/source/oxt/writer2xhtml/Options.xcs index b26acfc..b290684 100644 --- a/source/oxt/writer2xhtml/Options.xcs +++ b/source/oxt/writer2xhtml/Options.xcs @@ -75,6 +75,7 @@ + diff --git a/source/oxt/writer2xhtml/Options.xcu b/source/oxt/writer2xhtml/Options.xcu index 2c6b55f..9dbc3c5 100644 --- a/source/oxt/writer2xhtml/Options.xcu +++ b/source/oxt/writer2xhtml/Options.xcu @@ -115,6 +115,9 @@ 30 + + false + true diff --git a/source/oxt/writer2xhtml/W2XDialogs2/EpubMetadata.xdl b/source/oxt/writer2xhtml/W2XDialogs2/EpubMetadata.xdl index 06b562e..d4f13ec 100644 --- a/source/oxt/writer2xhtml/W2XDialogs2/EpubMetadata.xdl +++ b/source/oxt/writer2xhtml/W2XDialogs2/EpubMetadata.xdl @@ -76,7 +76,7 @@ - + \ No newline at end of file diff --git a/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl b/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl index 57f0ba5..61e6e89 100755 --- a/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl +++ b/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl @@ -1,6 +1,6 @@ - + @@ -16,15 +16,15 @@ - + - + - + - + @@ -36,23 +36,23 @@ - - - - + + + + - + - + - + - + @@ -61,14 +61,14 @@ - - + + - - - - + + + + @@ -82,25 +82,25 @@ - - - + + + - + - - + - - - + + + + \ No newline at end of file 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 6a628fb..43b1b65 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 @@ -139,15 +139,19 @@ Export optional document properties If you select this option, all the document properties (File – Properties) are exported, otherwise only the title is exported. - Click Edit to open the dialog to edit the document properties. - Document division - Technically an EPUB document consists of several document parts in XHTML format. - In principle you can have only one part, but this is not recommended. For performance reasons and because some EPUB readers have - a limitation on the size of the individual files in the doucment you should select one or more - of the following options to split the document. - + + Clik this to edit the document properties, e.g. author, title, date + Edit document properties + Click this button to open the dialog to edit the document properties such as + title, author or date. + Document division (page breaks) + These settings lets you insert page breaks at various places in the document. + It is recommended always to use one or more of these settings. One reason for this is that it enhances the readability of + your document. Another reason is technical: Page breaks splits the splits the internal structure into smaller parts. + This improves performance, and also some EPUB readers have a limitation on the size of the individual parts of the + doucment. Select the heading level at which spliting should occur, or "None" if you do not want to split at headings @@ -185,8 +189,9 @@ Use full screen for large images Select this option to show large images on full screen rather than embedded in the text - Select this option to show large images on full screen rather than embedded - in the text. + Images will normally be exported as an integrated part of the text. As EPUB readers + may have a relatively small screen, this may not be optimal for large images. + Select this option to split the document at large images, which means that they will be displayed on full screen. Minimum width @@ -194,6 +199,13 @@ Enter the minimum width for a large image. Only images with at least this relative width and an aspect ratio of 3:4 or higher will be export as full screen images. + + Use first image as cover image + Check this to use the first image found in the document as cover image + An EPUB document often include a cover image in analogy with the cover of a book. + Check this to use the first image found in the document as cover image. The position + of the image in the original document does not matter. + Automatic split of long documents Check this to enable automatic split of long documents based on the number of characters