diff options
author | Tomas Hlavaty <tomas.hlavaty@knowledgetools.de> | 2014-06-03 12:42:47 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2014-06-04 12:50:36 +0200 |
commit | 45ba4d79d968f81f74ef0c4588fd15b1ce91153f (patch) | |
tree | 66615238a2d4b4a410d12ed68a664344b016eb29 /desktop | |
parent | c12a78e42e1cbaaf4ea021c82acbec5ea177b1f6 (diff) |
fdo#36313: allow passing FilterOptions via cli
Examples:
--infilter="Text (encoded):UTF8,LF,,,"
--convert-to "html:XHTML Writer File:UTF8"
--convert-to "txt:Text (encoded):UTF8"
Change-Id: I69a0524ef63f6d486637d68280331528d1001b56
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/source/app/cmdlinehelp.cxx | 7 | ||||
-rw-r--r-- | desktop/source/app/dispatchwatcher.cxx | 31 |
2 files changed, 33 insertions, 5 deletions
diff --git a/desktop/source/app/cmdlinehelp.cxx b/desktop/source/app/cmdlinehelp.cxx index 756dcab86c51..a956038c06f4 100644 --- a/desktop/source/app/cmdlinehelp.cxx +++ b/desktop/source/app/cmdlinehelp.cxx @@ -109,14 +109,17 @@ namespace desktop "--unaccept=<accept-string>\n"\ " Close an acceptor that was created with --accept=<accept-string>\n"\ " Use --unnaccept=all to close all open acceptors\n"\ - "--infilter=<filter>\n"\ + "--infilter=<filter>[:filter_options]\n"\ " Force an input filter type if possible\n"\ " Eg. --infilter=\"Calc Office Open XML\"\n"\ - "--convert-to output_file_extension[:output_filter_name] [--outdir output_dir] files\n"\ + " --infilter=\"Text (encoded):UTF8,LF,,,\"\n"\ + "--convert-to output_file_extension[:output_filter_name[:output_filter_options]] [--outdir output_dir] files\n"\ " Batch convert files.\n"\ " If --outdir is not specified then current working dir is used as output_dir.\n"\ " Eg. --convert-to pdf *.doc\n"\ " --convert-to pdf:writer_pdf_Export --outdir /home/user *.doc\n"\ + " --convert-to \"html:XHTML Writer File:UTF8\" *.doc\n"\ + " --convert-to \"txt:Text (encoded):UTF8\" *.doc\n"\ "--print-to-file [-printer-name printer_name] [--outdir output_dir] files\n"\ " Batch print files to file.\n"\ " If --outdir is not specified then current working dir is used as output_dir.\n"\ diff --git a/desktop/source/app/dispatchwatcher.cxx b/desktop/source/app/dispatchwatcher.cxx index 0a6145ec358e..41f7fdd05fde 100644 --- a/desktop/source/app/dispatchwatcher.cxx +++ b/desktop/source/app/dispatchwatcher.cxx @@ -375,7 +375,21 @@ bool DispatchWatcher::executeDispatchRequests( const DispatchList& aDispatchRequ sal_Int32 nIndex = aArgs.getLength(); aArgs.realloc(nIndex+1); aArgs[nIndex].Name = "FilterName"; - aArgs[nIndex].Value <<= aForcedInputFilter; + + sal_Int32 nFilterOptionsIndex = aForcedInputFilter.indexOf( ':' ); + if( 0 < nFilterOptionsIndex ) + { + aArgs[nIndex].Value <<= aForcedInputFilter.copy( 0, nFilterOptionsIndex ); + + nIndex = aArgs.getLength(); + aArgs.realloc(nIndex+1); + aArgs[nIndex].Name = "FilterOptions"; + aArgs[nIndex].Value <<= aForcedInputFilter.copy( nFilterOptionsIndex+1 ); + } + else + { + aArgs[nIndex].Value <<= aForcedInputFilter; + } } // This is a synchron loading of a component so we don't have to deal with our statusChanged listener mechanism. @@ -449,12 +463,23 @@ bool DispatchWatcher::executeDispatchRequests( const DispatchList& aDispatchRequ aFilter = impl_GuessFilter( aName, aOutFile ); } - Sequence<PropertyValue> conversionProperties( 2 ); + sal_Int32 nFilterOptionsIndex = aFilter.indexOf( ':' ); + Sequence<PropertyValue> conversionProperties( 0 < nFilterOptionsIndex ? 3 : 2 ); conversionProperties[0].Name = "Overwrite"; conversionProperties[0].Value <<= sal_True; conversionProperties[1].Name = "FilterName"; - conversionProperties[1].Value <<= aFilter; + if( 0 < nFilterOptionsIndex ) + { + conversionProperties[1].Value <<= aFilter.copy( 0, nFilterOptionsIndex ); + + conversionProperties[2].Name = "FilterOptions"; + conversionProperties[2].Value <<= aFilter.copy( nFilterOptionsIndex+1 ); + } + else + { + conversionProperties[1].Value <<= aFilter; + } OUString aTempName; FileBase::getSystemPathFromFileURL( aName, aTempName ); |