瀏覽代碼

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 14 年之前
父節點
當前提交
9b820def5b
共有 2 個文件被更改,包括 14 次插入11 次删除
  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'."