Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
;; This file:
;;   http://angg.twu.net/elisp/rcd-paps.el.html
;;   http://angg.twu.net/elisp/rcd-paps.el
;;           (find-angg "elisp/rcd-paps.el")
;; Author: Jean Louis <bugs@gnu.support>
;; Comments: Eduardo Ochs <eduardoochs@gmail.com>
;; Date: 2022dec18
;;
;; To test this, run
;;           (eval-buffer)
;;       or: (load (buffer-file-name))
;; and then: (rcd-paps-buffer-to-pdf-view)
;; with your favorite variant of `C-e C-x C-e'.

;; When I run this in my default system I get this error in evince:
;;
;;   Unable to open document “file:///home/edrx/tmp/Sunday-December-18-2022-19-08-23.pdf”.
;;   File type empty document (application/x-zerosize) is not supported.
;;
;; and when I run it in an emacs -Q I get this lisp error:
;;
;;   Debugger entered--Lisp error: (wrong-type-argument integer-or-marker-p nil)
;;   call-process-region(nil nil "paps" t (t nil) nil "--format" "pdf" "--landscape"
;;                       "--title" "rcd-paps.el" "--header")
;;   apply(call-process-region nil nil "paps" t (t nil) nil ("--format" "pdf" "--landscape"
;;         "--title" "rcd-paps.el" "--header"))

'("This is a test block that tests this in an emacs -Q
 (eepitch-shell)
 (eepitch-kill)
 (eepitch-shell)
emacs -fg bisque -bg black -Q -l /home/edrx/elisp/rcd-paps.el &

--")



;; These functions were taken from:
;; https://lists.gnu.org/archive/html/help-gnu-emacs/2022-12/msg00535.html

(defun rcd-command-output-from-input (program input &rest args)
  "Return output string from PROGRAM with given INPUT string and optional ARGS."
  (let* ((output (with-temp-buffer
                   (insert input)
                   (apply #'call-process-region nil nil program t '(t nil) nil args)
                   (buffer-string))))
    output))

(defun rcd-paps-process (text &optional format title &rest args)
  (let* ((format (or format "pdf"))
         (title (or title (buffer-name)))
         (length (length title))
         (max 45)
         (title (if (> length max) (substring title 0 max) title)))
    (apply 'rcd-command-output-from-input
	   "paps" text
	   "--format" format 
	   "--landscape"
	   "--title" title
	   "--header" args)))

(defun string-to-file-force (string file)
  "Prints string into file, matters not if file exists. Return FILE as file name."
  (with-temp-file file
    (insert string))
  file)

(defun rcd-paps-text-to-pdf (text &optional file-name title)
  (let* ((output (rcd-paps-process text "pdf" title))
         (file-name
	  (or file-name
	      (concat (file-name-as-directory (getenv "HOME"))
		      (read-string "File name without .pdf extension: ")
		      ".pdf"))))
    (string-to-file-force output file-name)))

(defun rcd-paps-buffer-to-pdf-view ()
  (interactive)
  (let ((output (rcd-paps-process-buffer))
        (file-name (rcd-temp-file-name nil "pdf")))
    (sleep-for 1)
    (start-process "evince" nil "evince"
		   (string-to-file-force output file-name))))


;; These other functions were taken from:
;; https://lists.gnu.org/archive/html/help-gnu-emacs/2022-12/msg00575.html

(defun rcd-paps-process-buffer (&rest args)
  (let ((text (buffer-substring-no-properties (point-min) (point-max))))
    (apply 'rcd-paps-process text args)))

(defcustom rcd-temp-file-directory "~/tmp/"
  "Temporary directory for other temporary files."
  :group 'rcd
  :type 'string)

(defun rcd-temp-file-name (&optional file-name extension)
  "Return temporary file name."
  (concat (file-truename (file-name-as-directory rcd-temp-file-directory))
          (or file-name (format-time-string "%A-%B-%d-%Y-%H-%M-%S"))
          "."
          (or extension "txt")))


;; Local Variables:
;; coding:  utf-8-unix
;; End: