From 957a6f2652fc543c58d74aca237041cd6e0fe2fa Mon Sep 17 00:00:00 2001 From: Tassilo Horn Date: Tue, 12 Feb 2013 12:53:34 +0100 Subject: [PATCH] Improve previous patch to allow for multiple simultaneous ODF->PDF conversions. --- lisp/doc-view.el | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/lisp/doc-view.el b/lisp/doc-view.el index da0b728ce91..dcc28a52322 100644 --- a/lisp/doc-view.el +++ b/lisp/doc-view.el @@ -939,22 +939,21 @@ is named like ODF with the extension turned to pdf." "Convert ODF to PDF asynchronously and call CALLBACK when finished. The converted PDF is put into the current cache directory, and it is named like ODF with the extension turned to pdf." - (doc-view-start-process "odf->pdf" doc-view-odf->pdf-converter-program - (list - ;; FIXME: soffice doesn't work when there's - ;; another running LibreOffice instance, in - ;; which case it returns success without - ;; actually doing anything. See - ;; LibreOffice bug - ;; https://bugs.freedesktop.org/show_bug.cgi?id=37531. - ;; A workaround is to start soffice with a - ;; separate UserInstallation directory. - (concat "-env:UserInstallation=file://" - (expand-file-name (format "libreoffice-docview%d" (user-uid)) - temporary-file-directory)) - "--headless" "--convert-to" "pdf" - "--outdir" (doc-view-current-cache-dir) odf) - callback)) + ;; FIXME: soffice doesn't work when there's another running + ;; LibreOffice instance, in which case it returns success without + ;; actually doing anything. See LibreOffice bug + ;; https://bugs.freedesktop.org/show_bug.cgi?id=37531. A workaround + ;; is to start soffice with a separate UserInstallation directory. + (let ((tmp-user-install-dir (make-temp-file "libreoffice-docview" t))) + (doc-view-start-process "odf->pdf" doc-view-odf->pdf-converter-program + (list + (concat "-env:UserInstallation=file://" + tmp-user-install-dir) + "--headless" "--convert-to" "pdf" + "--outdir" (doc-view-current-cache-dir) odf) + (lambda () + (delete-directory tmp-user-install-dir t) + (funcall callback))))) (defun doc-view-pdf/ps->png (pdf-ps png) ;; FIXME: Fix name and docstring to account for djvu&tiff. -- 2.39.5