From ef05312e21d4b6b3c2adabfbb537401a387767b8 Mon Sep 17 00:00:00 2001 From: henrikjust Date: Tue, 7 Jun 2011 09:01:15 +0000 Subject: [PATCH] Support EPUB style resources (embed images and fonts used in custom CSS file) git-svn-id: svn://svn.code.sf.net/p/writer2latex/code/trunk@108 f0f2a975-2e09-46c8-9428-3b39399b9f3c --- source/distro/changelog.txt | 8 ++ source/distro/doc/user-manual.odt | Bin 52103 -> 52207 bytes .../filter/ConfigurationDialogBase.java | 73 +++++++------- .../w2lcommon/filter/FilterDataParser.java | 94 ++++++++++++++---- .../w2lcommon/filter/OptionsDialogBase.java | 50 +++++++--- .../writer2xhtml/ConfigurationDialog.java | 92 ++++++++++++++++- .../comp/writer2xhtml/EpubOptionsDialog.java | 3 +- source/java/writer2latex/Application.java | 34 ++++++- source/java/writer2latex/api/Converter.java | 8 +- .../writer2latex/api/ConverterFactory.java | 4 +- source/java/writer2latex/xhtml/Converter.java | 19 +++- source/oxt/writer2xhtml/Options.xcs | 4 +- .../writer2xhtml/W2XDialogs2/Stylesheets.xdl | 18 ++-- .../Configuration/Stylesheets.xhp | 32 +++++- 14 files changed, 342 insertions(+), 97 deletions(-) diff --git a/source/distro/changelog.txt b/source/distro/changelog.txt index edaa205..0835c1c 100644 --- a/source/distro/changelog.txt +++ b/source/distro/changelog.txt @@ -2,6 +2,14 @@ Changelog for Writer2LaTeX version 1.0 -> 1.2 ---------- version 1.1.8 ---------- +[w2x] The EPUB export now supports additional resource files (e.g. images, fonts) to the custom style sheet + - using the readResource method of the converter API + - using the -resource method of the command line application + - using the ResourceURL or Resources property of the filter API + - by specifying the resource files in a custom configuration + +[all] API change: Added the method readResource to the Converter interface (only used by EPUB export currently) + [w2x] Crossed out headings are ignored in EPUB export, but retained in the external toc [all] Added Farsi translation from Mostafa Barmshory diff --git a/source/distro/doc/user-manual.odt b/source/distro/doc/user-manual.odt index 0883b81febc55b6803dd6db3407c2911c881e015..0620ee4ffe31cd773c8e37e35e1f7c6010de84f5 100644 GIT binary patch delta 38807 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 z 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 XDs45ahXn=zNFN^dhdDG1{B8X|`UMc4 delta 38796 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 Ufb_p2tGgjx11#wB@ZYQd18aiuVgLXD diff --git a/source/java/org/openoffice/da/comp/w2lcommon/filter/ConfigurationDialogBase.java b/source/java/org/openoffice/da/comp/w2lcommon/filter/ConfigurationDialogBase.java index 447aafd..1824c77 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/filter/ConfigurationDialogBase.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/filter/ConfigurationDialogBase.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-09) +* Version 1.2 (2011-06-06) * */ @@ -79,13 +79,13 @@ public abstract class ConfigurationDialogBase extends WeakBase implements XConta protected XComponentContext xContext; // File picker wrapper - private FilePicker filePicker = null; + protected FilePicker filePicker = null; // UNO simple file access service protected XSimpleFileAccess2 sfa2 = null; // UNO path substitution - private XStringSubstitution xPathSub = null; + protected XStringSubstitution xPathSub = null; // The configuration implementation protected Config config; @@ -287,6 +287,38 @@ public abstract class ConfigurationDialogBase extends WeakBase implements XConta config.setOption(sConfigName, sConfigValues[dlg.getListBoxSelectedItem(sListBoxName)]); } + // Method to get a named dialog + protected XDialog getDialog(String sDialogName) { + XMultiComponentFactory xMCF = xContext.getServiceManager(); + try { + Object provider = xMCF.createInstanceWithContext( + "com.sun.star.awt.DialogProvider2", xContext); + XDialogProvider2 xDialogProvider = (XDialogProvider2) + UnoRuntime.queryInterface(XDialogProvider2.class, provider); + String sDialogUrl = "vnd.sun.star.script:"+sDialogName+"?location=application"; + return xDialogProvider.createDialog(sDialogUrl); + } + catch (Exception e) { + return null; + } + } + + // Method to display delete dialog + protected boolean deleteItem(String sName) { + XDialog xDialog=getDialog(getDialogLibraryName()+".DeleteDialog"); + if (xDialog!=null) { + DialogAccess ddlg = new DialogAccess(xDialog); + String sLabel = ddlg.getLabelText("DeleteLabel"); + sLabel = sLabel.replaceAll("%s", sName); + ddlg.setLabelText("DeleteLabel", sLabel); + boolean bDelete = xDialog.execute()==ExecutableDialogResults.OK; + xDialog.endExecute(); + return bDelete; + } + return false; + } + + } protected abstract class CustomFileHandler extends PageHandler { @@ -373,7 +405,7 @@ public abstract class ConfigurationDialogBase extends WeakBase implements XConta // Helpers for sfa2 // Checks that the file exists - private boolean fileExists(String sFileName) { + protected boolean fileExists(String sFileName) { try { return sfa2!=null && sfa2.exists(sFileName); } @@ -385,7 +417,7 @@ public abstract class ConfigurationDialogBase extends WeakBase implements XConta } // Delete a file if it exists, return true on success - private boolean killFile(String sFileName) { + protected boolean killFile(String sFileName) { try { if (sfa2!=null && sfa2.exists(sFileName)) { sfa2.kill(sFileName); @@ -453,35 +485,6 @@ public abstract class ConfigurationDialogBase extends WeakBase implements XConta protected abstract class UserListPageHandler extends PageHandler { // Methods to handle user controlled lists - protected XDialog getDialog(String sDialogName) { - XMultiComponentFactory xMCF = xContext.getServiceManager(); - try { - Object provider = xMCF.createInstanceWithContext( - "com.sun.star.awt.DialogProvider2", xContext); - XDialogProvider2 xDialogProvider = (XDialogProvider2) - UnoRuntime.queryInterface(XDialogProvider2.class, provider); - String sDialogUrl = "vnd.sun.star.script:"+sDialogName+"?location=application"; - return xDialogProvider.createDialog(sDialogUrl); - } - catch (Exception e) { - return null; - } - } - - private boolean deleteItem(String sName) { - XDialog xDialog=getDialog(getDialogLibraryName()+".DeleteDialog"); - if (xDialog!=null) { - DialogAccess ddlg = new DialogAccess(xDialog); - String sLabel = ddlg.getLabelText("DeleteLabel"); - sLabel = sLabel.replaceAll("%s", sName); - ddlg.setLabelText("DeleteLabel", sLabel); - boolean bDelete = xDialog.execute()==ExecutableDialogResults.OK; - xDialog.endExecute(); - return bDelete; - } - return false; - } - protected boolean deleteCurrentItem(DialogAccess dlg, String sListName) { String[] sItems = dlg.getListBoxStringItemList(sListName); short nSelected = dlg.getListBoxSelectedItem(sListName); diff --git a/source/java/org/openoffice/da/comp/w2lcommon/filter/FilterDataParser.java b/source/java/org/openoffice/da/comp/w2lcommon/filter/FilterDataParser.java index 1e3f09a..94140aa 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/filter/FilterDataParser.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/filter/FilterDataParser.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2011-01-15) + * Version 1.2 (2011-06-07) * */ @@ -38,6 +38,7 @@ import com.sun.star.io.XOutputStream; import com.sun.star.ucb.CommandAbortedException; import com.sun.star.ucb.XSimpleFileAccess2; import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Exception; import com.sun.star.uno.UnoRuntime; import com.sun.star.uno.XComponentContext; import com.sun.star.util.XStringSubstitution; @@ -109,7 +110,7 @@ public class FilterDataParser { PropertyHelper props = new PropertyHelper(filterData); - // Get the special properties TemplateURL, StyleSheetURL, Resources, ConfigURL and AutoCreate + // Get the special properties TemplateURL, StyleSheetURL, ResourceURL, Resources, ConfigURL and AutoCreate Object tpl = props.get("TemplateURL"); String sTemplate = null; if (tpl!=null && AnyConverter.isString(tpl)) { @@ -132,7 +133,19 @@ public class FilterDataParser { } } - // This property accepts a semicolon separated list of !! (not very elegant) + // This property accepts an URL pointing to a folder containing the resources to include + Object resourcedir = props.get("ResourceURL"); + String sResourceURL = null; + if (resourcedir!=null && AnyConverter.isString(resourcedir)) { + try { + sResourceURL = substituteVariables(AnyConverter.toString(resourcedir)); + } + catch (com.sun.star.lang.IllegalArgumentException e) { + // Failed to convert to String; should not happen - ignore + } + } + + // This property accepts a semicolon separated list of [[::]::] Object resources = props.get("Resources"); String[] sResources = null; if (resources!=null && AnyConverter.isString(resources)) { @@ -218,33 +231,70 @@ public class FilterDataParser { } } + // Load the resource from the specified folder URL, if any + if (sfa2!=null && sResourceURL!=null && sResourceURL.length()>0) { + String[] sURLs; + try { + sURLs = sfa2.getFolderContents(sResourceURL, false); // do not include folders + for (String sURL : sURLs) { + XInputStream xIs = sfa2.openFileRead(sURL); + if (xIs!=null) { + String sFileName = sURL.substring(sURL.lastIndexOf('/')+1); + InputStream is = new XInputStreamToInputStreamAdapter(xIs); + converter.readResource(is,sFileName,null); + is.close(); + xIs.closeInput(); + } + } + } catch (IOException e) { + // ignore + } catch (CommandAbortedException e1) { + // ignore + } catch (Exception e1) { + // ignore + } + } + // Load the resources from the specified URLs, if any if (sfa2!=null && sResources!=null) { for (String sResource : sResources) { - try { - String[] sParts = sResource.split("!"); + // Format is [[::]::] + String[] sParts = sResource.split("::"); + if (sParts.length>0) { + String sURL=sParts[0]; + String sFileName; + String sMediaType=null; if (sParts.length==3) { - // Format is !! - XInputStream xIs = sfa2.openFileRead(sParts[2]); + sFileName = sParts[1]; + sMediaType = sParts[2]; + } + else { + sFileName = sURL.substring(sURL.lastIndexOf('/')+1); + if (sParts.length==2) { + sMediaType = sParts[1]; + } + } + try { + XInputStream xIs = sfa2.openFileRead(sURL); if (xIs!=null) { InputStream is = new XInputStreamToInputStreamAdapter(xIs); - converter.readResource(is, sParts[1], sParts[0]); + converter.readResource(is, sFileName, sMediaType); is.close(); xIs.closeInput(); - } - } // otherwise wrong format, ignore - } - catch (IOException e) { - // ignore - } - catch (NotConnectedException e) { - // ignore - } - catch (CommandAbortedException e) { - // ignore - } - catch (com.sun.star.uno.Exception e) { - // ignore + } // otherwise wrong format, ignore + } + catch (IOException e) { + // ignore + } + catch (NotConnectedException e) { + // ignore + } + catch (CommandAbortedException e) { + // ignore + } + catch (com.sun.star.uno.Exception e) { + // ignore + } } } } diff --git a/source/java/org/openoffice/da/comp/w2lcommon/filter/OptionsDialogBase.java b/source/java/org/openoffice/da/comp/w2lcommon/filter/OptionsDialogBase.java index 57199a8..c222932 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/filter/OptionsDialogBase.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/filter/OptionsDialogBase.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2011-02-23) + * Version 1.2 (2011-06-07) * */ @@ -393,21 +393,39 @@ public abstract class OptionsDialogBase extends DialogBase implements short nConfig = getListBoxSelectedItem("Config"); int nStdConfigs = getListBoxStringItemList("Config").length - sConfigNames.length; if (nConfig>=nStdConfigs) { // only handle registry configurations - int i = nConfig-nStdConfigs; - try { - Object config = xNameAccess.getByName(sConfigNames[i]); - XPropertySet xCfgProps = (XPropertySet) - UnoRuntime.queryInterface(XPropertySet.class,config); - MacroExpander expander = new MacroExpander(xContext); - filterData.put("ConfigURL",expander.expandMacros(XPropertySetHelper.getPropertyValueAsString(xCfgProps,"ConfigURL"))); - filterData.put("TemplateURL",expander.expandMacros(XPropertySetHelper.getPropertyValueAsString(xCfgProps,"TargetTemplateURL"))); - filterData.put("StyleSheetURL",expander.expandMacros(XPropertySetHelper.getPropertyValueAsString(xCfgProps,"StyleSheetURL"))); - // TODO: Resources... - XPropertySetHelper.setPropertyValue(xProps,"ConfigName",sConfigNames[i]); - bFound = true; - } - catch (Exception e) { - } + int i = nConfig-nStdConfigs; + try { + Object config = xNameAccess.getByName(sConfigNames[i]); + XPropertySet xCfgProps = (XPropertySet) + UnoRuntime.queryInterface(XPropertySet.class,config); + MacroExpander expander = new MacroExpander(xContext); + filterData.put("ConfigURL",expander.expandMacros(XPropertySetHelper.getPropertyValueAsString(xCfgProps,"ConfigURL"))); + filterData.put("TemplateURL",expander.expandMacros(XPropertySetHelper.getPropertyValueAsString(xCfgProps,"TargetTemplateURL"))); + filterData.put("StyleSheetURL",expander.expandMacros(XPropertySetHelper.getPropertyValueAsString(xCfgProps,"StyleSheetURL"))); + + // The resources are provided as a set + Object resources = XPropertySetHelper.getPropertyValue(xCfgProps,"Resources"); + XNameAccess xResourceNameAccess = (XNameAccess) UnoRuntime.queryInterface(XNameAccess.class,resources); + if (xResourceNameAccess!=null) { + StringBuffer buf = new StringBuffer(); + String[] sResourceNames = xResourceNameAccess.getElementNames(); + for (String sName : sResourceNames) { + Object resource = xResourceNameAccess.getByName(sName); + XPropertySet xResourceProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,resource); + String sURL = expander.expandMacros(XPropertySetHelper.getPropertyValueAsString(xResourceProps,"URL")); + String sFileName = expander.expandMacros(XPropertySetHelper.getPropertyValueAsString(xResourceProps,"FileName")); + String sMediaType = expander.expandMacros(XPropertySetHelper.getPropertyValueAsString(xResourceProps,"MediaType")); + if (buf.length()>0) { buf.append(';'); } + buf.append(sURL).append("::").append(sFileName).append("::").append(sMediaType); + } + filterData.put("Resources",buf.toString()); + + XPropertySetHelper.setPropertyValue(xProps,"ConfigName",sConfigNames[i]); + bFound = true; + } + } + catch (Exception e) { + } } XPropertySetHelper.setPropertyValue(xProps,"Config",nConfig); if (!bFound) { XPropertySetHelper.setPropertyValue(xProps,"ConfigName",""); } diff --git a/source/java/org/openoffice/da/comp/writer2xhtml/ConfigurationDialog.java b/source/java/org/openoffice/da/comp/writer2xhtml/ConfigurationDialog.java index 8efea47..e7aa123 100644 --- a/source/java/org/openoffice/da/comp/writer2xhtml/ConfigurationDialog.java +++ b/source/java/org/openoffice/da/comp/writer2xhtml/ConfigurationDialog.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * -* Version 1.2 (2011-03-08) +* Version 1.2 (2011-06-06) * */ @@ -30,11 +30,16 @@ import java.util.Map; import org.openoffice.da.comp.w2lcommon.filter.ConfigurationDialogBase; import org.openoffice.da.comp.w2lcommon.helper.DialogAccess; +import org.openoffice.da.comp.w2lcommon.helper.FilePicker; +import com.sun.star.container.NoSuchElementException; import com.sun.star.lang.XServiceInfo; +import com.sun.star.ucb.CommandAbortedException; +import com.sun.star.uno.Exception; import com.sun.star.uno.XComponentContext; public class ConfigurationDialog extends ConfigurationDialogBase implements XServiceInfo { + private String sResourceDirName; // Implement the interface XServiceInfo @@ -70,6 +75,14 @@ public class ConfigurationDialog extends ConfigurationDialogBase implements XSer public ConfigurationDialog(XComponentContext xContext) { super(xContext); + // Create the resource dir name + try { + sResourceDirName = xPathSub.substituteVariables("$(user)/writer2xhtml-resources", false); + } + catch (NoSuchElementException e) { + sResourceDirName = "writer2xhtml-resources"; + } + pageHandlers.put("General", new GeneralHandler()); pageHandlers.put("Template", new TemplateHandler()); pageHandlers.put("Stylesheets", new StylesheetsHandler()); @@ -84,7 +97,8 @@ public class ConfigurationDialog extends ConfigurationDialogBase implements XSer public String[] getSupportedMethodNames() { String[] sNames = { "EncodingChange", // General "CustomTemplateChange", "LoadTemplateClick", // Template - "UseCustomStylesheetChange", "IncludeCustomStylesheetClick", "LoadStylesheetClick", // Stylesheet + "UseCustomStylesheetChange", "IncludeCustomStylesheetClick", "LoadStylesheetClick", + "NewResourceClick", "DeleteResourceClick", // Stylesheet "StyleFamilyChange", "StyleNameChange", "NewStyleClick", "DeleteStyleClick", "LoadDefaultsClick" // Styles1 }; return sNames; @@ -198,6 +212,11 @@ public class ConfigurationDialog extends ConfigurationDialogBase implements XSer } protected void useCustomInner(DialogAccess dlg, boolean bEnable) { + dlg.setControlEnabled("ResourceLabel", bEnable); + dlg.setControlEnabled("Resources", bEnable); + dlg.setControlEnabled("NewResourceButton", bEnable); + dlg.setControlEnabled("DeleteResourceButton", bEnable); + updateResources(dlg); } @@ -207,6 +226,8 @@ public class ConfigurationDialog extends ConfigurationDialogBase implements XSer textFieldFromConfig(dlg, "CustomStylesheetURL", "custom_stylesheet"); linkCustomStylesheetChange(dlg); + + updateResources(dlg); } @Override protected void getControls(DialogAccess dlg) { @@ -227,15 +248,80 @@ public class ConfigurationDialog extends ConfigurationDialogBase implements XSer linkCustomStylesheetChange(dlg); return true; } + else if (sMethod.equals("NewResourceClick")) { + newResourceClick(dlg); + return true; + } + else if (sMethod.equals("DeleteResourceClick")) { + deleteResourceClick(dlg); + return true; + } return false; } - private void linkCustomStylesheetChange(DialogAccess dlg) { + private void linkCustomStylesheetChange(DialogAccess dlg) { boolean bLinkCustomStylesheet = dlg.getCheckBoxStateAsBoolean("LinkCustomStylesheet"); dlg.setControlEnabled("CustomStylesheetURLLabel", bLinkCustomStylesheet); dlg.setControlEnabled("CustomStylesheetURL", bLinkCustomStylesheet); } + private void newResourceClick(DialogAccess dlg) { + FilePicker filePicker = new FilePicker(xContext); + String sFileName=filePicker.getPath(); + if (sFileName!=null) { + createResourceDir(); + String sBaseFileName = sFileName.substring(sFileName.lastIndexOf('/')); + try { + String sTargetFileName = sResourceDirName+"/"+sBaseFileName; + if (fileExists(sTargetFileName)) { killFile(sTargetFileName); } + sfa2.copy(sFileName, sTargetFileName); + } catch (CommandAbortedException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + updateResources(dlg); + } + } + + private void deleteResourceClick(DialogAccess dlg) { + int nItem = dlg.getListBoxSelectedItem("Resources"); + if (nItem>=0) { + String sFileName = dlg.getListBoxStringItemList("Resources")[nItem]; + if (deleteItem(sFileName)) { + killFile(sResourceDirName+"/"+sFileName); + updateResources(dlg); + } + } + } + + private void createResourceDir() { + try { + if (!sfa2.isFolder(sResourceDirName)) { + sfa2.createFolder(sResourceDirName); + } + } catch (CommandAbortedException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void updateResources(DialogAccess dlg) { + try { + String[] sFiles = sfa2.getFolderContents(sResourceDirName, false); // do not include folders + int nCount = sFiles.length; + for (int i=0; i-config[=]filename *
  • -template[=]filename *
  • -stylesheet[=]filename + *
  • -resource[=]filename[::media type] *
  • -option[=]value * *

    where option can be any simple option known to Writer2LaTeX @@ -72,6 +75,7 @@ public final class Application { private Vector configFileNames = new Vector(); private String sTemplateFileName = null; private String sStyleSheetFileName = null; + private Set resources = new HashSet(); private Hashtable options = new Hashtable(); private String sSource = null; private String sTarget = null; @@ -194,6 +198,30 @@ public final class Application { System.out.println(" "+e.getMessage()); } } + + // Step 5c: Read style resources + for (String sResource : resources) { + String sMediaType; + String sFileName; + int nSeparator = sResource.indexOf("::"); + if (nSeparator>-1) { + sFileName = sResource.substring(0,nSeparator); + sMediaType = sResource.substring(nSeparator+2); + } + else { + sFileName = sResource; + sMediaType = null; + } + System.out.println("Reading resource file "+sFileName); + try { + byte [] resourceBytes = Misc.inputStreamToByteArray(new FileInputStream(sFileName)); + converter.readResource(new ByteArrayInputStream(resourceBytes),sFileName,sMediaType); + } catch (IOException e) { + System.out.println("--> Failed to read the resource file!"); + System.out.println(" "+e.getMessage()); + } + + } // Step 6: Read config for (int i=0; i"); System.out.println(" -stylesheet[=]