Browse Source

org-odt.el: Make LibreOffice the default converter

* lisp/org-lparse.el (org-lparse-do-convert): Replace
`call-process' with `shell-command-to-string'.

* lisp/org-odt.el (org-export-odt-convert-processes): Add a new
converter which depends solely on LibreOffice and nothing
else.
(org-export-odt-convert-process): Make the above native
converter the default.

Thanks to Giles for introducing the "--convert-to" option of
soffice.exe.  The option seems to be a fairly recent
development.

http://imperfectsoftware.blogspot.in/2012/01/one-of-my-less-enjoyable-tasks-is-to.html

With this change, one can export to pdf via odt by a simple
  (setq org-export-odt-preferred-output-format "pdf")
There is no need to install additional converters.
Jambunathan K 13 years ago
parent
commit
9b820def5b
2 changed files with 14 additions and 11 deletions
  1. 9 8
      lisp/org-lparse.el
  2. 5 3
      lisp/org-odt.el

+ 9 - 8
lisp/org-lparse.el

@@ -493,28 +493,29 @@ This is a helper routine for interactive use."
 	 (out-dir (file-name-directory in-file))
 	 (out-dir (file-name-directory in-file))
 	 (arglist (mapcar (lambda (arg)
 	 (arglist (mapcar (lambda (arg)
 			    (format-spec
 			    (format-spec
-			     arg `((?i . ,in-file)
+			     arg `((?i . ,(shell-quote-argument in-file))
 				   (?I . ,(browse-url-file-url in-file))
 				   (?I . ,(browse-url-file-url in-file))
 				   (?f . ,out-fmt)
 				   (?f . ,out-fmt)
 				   (?o . ,out-file)
 				   (?o . ,out-file)
 				   (?O . ,(browse-url-file-url out-file))
 				   (?O . ,(browse-url-file-url out-file))
-				   (?d . ,out-dir)
+				   (?d . , (shell-quote-argument out-dir))
 				   (?D . ,(browse-url-file-url out-dir)))))
 				   (?D . ,(browse-url-file-url out-dir)))))
-			  (cdr convert-process))))
+			  convert-process))
+	 (cmd (mapconcat 'identity arglist " ")))
     (when (file-exists-p out-file)
     (when (file-exists-p out-file)
       (delete-file out-file))
       (delete-file out-file))
 
 
-    (message "Executing %s %s" program (mapconcat 'identity arglist " "))
-    (apply 'call-process program nil nil nil arglist)
+    (message "Executing %s" cmd)
+    (let ((cmd-output (shell-command-to-string cmd)))
+      (message "%s" cmd-output))
+
     (cond
     (cond
      ((file-exists-p out-file)
      ((file-exists-p out-file)
       (message "Exported to %s using %s" out-file program)
       (message "Exported to %s using %s" out-file program)
       (when prefix-arg
       (when prefix-arg
 	(message "Opening %s..."  out-file)
 	(message "Opening %s..."  out-file)
 	(org-open-file out-file))
 	(org-open-file out-file))
-      out-file
-      ;; (set-buffer (find-file-noselect out-file))
-      )
+      out-file)
      (t
      (t
       (message "Export to %s failed" out-file)
       (message "Export to %s failed" out-file)
       nil))))
       nil))))

+ 5 - 3
lisp/org-odt.el

@@ -2402,8 +2402,10 @@ visually."
       (replace-match ""))))
       (replace-match ""))))
 
 
 (defcustom org-export-odt-convert-processes
 (defcustom org-export-odt-convert-processes
-  '(("BasicODConverter"
-     ("soffice" "-norestore" "-invisible" "-headless"
+  '(("LibreOffice"
+     ("soffice" "--headless" "--convert-to %f" "--outdir %d" "%i"))
+    ("BasicODConverter"
+     ("soffice" "--headless"
       "\"macro:///BasicODConverter.Main.Convert(%I,%f,%O)\""))
       "\"macro:///BasicODConverter.Main.Convert(%I,%f,%O)\""))
     ("unoconv"
     ("unoconv"
      ("unoconv" "-f" "%f" "-o" "%d" "%i")))
      ("unoconv" "-f" "%f" "-o" "%d" "%i")))
@@ -2436,7 +2438,7 @@ they are interpreted as below:
 	   :value-type (group (cons (string :tag "Executable")
 	   :value-type (group (cons (string :tag "Executable")
 				    (repeat (string :tag "Command line args")))))))
 				    (repeat (string :tag "Command line args")))))))
 
 
-(defcustom org-export-odt-convert-process nil
+(defcustom org-export-odt-convert-process "LibreOffice"
   "Use this converter to convert from \"odt\" format to other formats.
   "Use this converter to convert from \"odt\" format to other formats.
 During customization, the list of converter names are populated
 During customization, the list of converter names are populated
 from `org-export-odt-convert-processes'."
 from `org-export-odt-convert-processes'."