emacs एक बफर को PDF w/line wrapping प्रिंट करने के लिए एएमएसीएस फ़ंक्शन में हेडर को फ़ॉर्मेट करना



pdf-generation elisp (1)

इसे इस्तेमाल करे:

(defun spool-buffer-given-name (name)
  (let ((ps-left-header (list (format "(%s)" name))))
    (ps-spool-buffer-with-faces)))

चर ps-left-header के लिए दस्तावेज़ीकरण देखें, जो मुझे ऊपर बताए गए हैं।

यह एक स्वच्छ क्षमता है; मैं इसे ps-print के बजाय निश्चित रूप से उपयोग करूंगा यह क्यू एमएक्स पीएस-प्रिंट-बफर-चेहरे के साथ अधिक काम करने के लिए अच्छा होगा; दो लापता विशेषताएं हैंडर में निर्देशिका नाम हैं, और उपयोगकर्ता को एक फ़ाइलनाम के लिए प्रांप्ट करते हैं। न तो बहुत मुश्किल है

रुपर्ट स्वरब्रिक को एमएक्सएस बफर को पीडीएफ में मुद्रित करने के लिए निम्नलिखित तीन कार्यों के साथ आया था जिसमें लाइनों को लपेटा जाता है (यह आमतौर पर ps-print* कार्यों का उपयोग करते समय नहीं है)।

समस्या यह है कि यह पंक्ति इस रैपिड रैपिंग को हासिल करने के लिए है, वर्तमान बफर की एक प्रतिलिपि बनाना है। परिणामस्वरूप पीडीएफ फाइल में प्रत्येक पृष्ठ के ऊपर एक सही हेडर प्रदर्शित करने के लिए यह ps-print-buffer-with-faces की क्षमता को प्रभावी ढंग से तोड़ता है।

अपने समाधान के एक हिस्से के रूप में रूपर्ट स्वरब्रिक ने एक ऐसा कार्य लिखा जो इस जानकारी को सुरक्षित रखता है। परिणामस्वरूप हेडर, हालांकि, हमेशा हेडर लाइंस लेफ्ट है

कौन गलती कर सकता है?

(defun harden-newlines ()
  (interactive)
  "Make all the newlines in the buffer hard."
  (save-excursion
    (goto-char (point-min))
    (while (search-forward "\n" nil t)
      (backward-char)
      (put-text-property (point) (1+ (point)) 'hard t)
      (forward-char))))

(defun spool-buffer-given-name (name)
  (load "ps-print")
  (let ((tmp ps-left-header))
    (unwind-protect
        (progn
          (setq ps-left-header
                (list (lambda () name) 'ps-header-dirpart))
          (ps-spool-buffer-with-faces))
      (setf ps-left-header tmp))))

(defun print-to-pdf ()
  "Print the current file to /tmp/print.pdf"
  (interactive)
  (let ((wbuf (generate-new-buffer "*Wrapped*"))
        (sbuf (current-buffer)))
    (jit-lock-fontify-now)
    (save-current-buffer
      (set-buffer wbuf)
      (insert-buffer sbuf)
      (setq fill-column 95)
      (longlines-mode t)
      (harden-newlines)
      (message (buffer-name sbuf))
      (spool-buffer-given-name (buffer-name sbuf))
      (kill-buffer wbuf)
      (switch-to-buffer "*PostScript*")
      (write-file "/tmp/print.ps")
      (kill-buffer (current-buffer)))
    (call-process "ps2pdf14" nil nil nil
                  "/tmp/print.ps" "/tmp/print.pdf")
    (delete-file "/tmp/print.ps")
    (message "PDF saved to /tmp/print.pdf")))




elisp