म्यूट से सुंदर प्रिंट मेल?


16

मुझे पता है कि मैं एक प्रिंट कमांड को Mutt के माध्यम से कॉन्फ़िगर कर सकता हूं .muttrc, जैसे:

set print=ask-yes
set print_command="..."

लेकिन सुंदर मुद्रण के लिए मुझे किस प्रिंट कमांड का उपयोग करना चाहिए ?

खैर, शार्टकट से a2psभी आउटपुट थोड़ा संयमी लगता है -=mail। यह UTF8 का समर्थन नहीं करता है । वहाँ है papsजिसे ' यूटीएफ -8 के रूप में पंगो का उपयोग करके पोस्टस्क्रिप्ट कन्वर्टर ' के रूप में वर्णित किया गया है और वर्तमान में मार्जिन के लिए समर्थन, या ईमेल लेआउट या ऐसा कुछ शामिल नहीं है।

mp: अच्छा डिफ़ॉल्ट हैडर। फिर से कोई UTF8 समर्थन नहीं। डिफ़ॉल्ट मार्जिन हास्यास्पद रूप से छोटा है - यदि आप व्यापक मार्जिन निर्दिष्ट करते हैं तो शरीर पाठ पाद लेख के पीछे मुद्रित होता है।

enscript: -Gफैंसी पेज हेडर के लिए वास्तव में फैंसी है। कोई UTF8 सपोर्ट नहीं

21 वीं सदी में आप अपने मेल को मट से प्रिंट करने के लिए क्या उपयोग करते हैं?

(इसे UTF8, DIN A4 आउटपुट को PS और / या PDF के रूप में सपोर्ट करना चाहिए)


मैंने MIME के ​​बारे में नोट हटा दिए क्योंकि म्यूट MIME जानकारी को पाइप नहीं करता है print_command। इस प्रकार, यह |mutt में (पाइप) कमांड के माध्यम से print_commands का परीक्षण करने के लिए पर्याप्त नहीं है ।
maxschlepzig

टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
terdon

जवाबों:


19

म्यूटप्रिंट भी है । यह UTF-8 का समर्थन करता है और इसका आउटपुट डिफ़ॉल्ट रूप से सभ्य दिखता है। म्यूटप्रिंट LaTeX का उपयोग करता है और अनुकूलन के लिए हुक प्रदान करता है।

चूंकि मैं विभिन्न वातावरणों से मेलों को प्रिंट कर रहा हूं इसलिए मैं डिफ़ॉल्ट प्रिंटर का उपयोग नहीं कर सकता। इस प्रकार मैंने ~/.muttrcएक पीडीएफ दर्शक का उपयोग करने के लिए इसे (माध्यम से ) सेट किया है जहां मैं गतिशील रूप से एक प्रिंटर का चयन कर सकता हूं:

set print_command='set -e; f=`mktemp`; \
        muttprint -P A4 -p TO_FILE:"$f"; evince "$f"; rm "$f"'

/tmpडिफ़ॉल्ट रूप से Mktemp का उपयोग करता है । एक कस्टम कैश निर्देशिका का उपयोग करने के लिए:

set print_command='set -e; f=`mktemp -p "$HOME"/.cache/mutt`; \
        muttprint -P A4 -p TO_FILE:"$f"; evince "$f"; rm "$f"'

Btw, आप print_decodemuttrc को कॉन्फ़िगर करने के लिए सेट कर सकते हैं यदि Print_command MIME, एनकोडिंग्स आदि को अपने आप से डीकोड करने में सक्षम है। डिफ़ॉल्ट रूप से यह सेट है करने के लिए yesजो की तरह आदेश के लिए सही सेटिंग है muttprint, enscriptआदि

यूटीएफ -8 के मुद्दों के बारे में a2ps, एनस्क्रिप्ट और एम.पी. एक ही निष्कर्ष निकाल सकता है कि उन्हें अप्रचलित माना जाना चाहिए। वास्तव में, उन परियोजना पृष्ठों को देखते हुए जिन्हें वे बनाए नहीं रखते हैं (उदाहरण के लिए, एमपी पृष्ठ का अंतिम समाचार आइटम 2002 से है और इसमें सूर्य पर स्थित मेलिंग सूची का उल्लेख है)।


यह सुरक्षा दोष की ओर ले जाता है: /tmp/$USER.psअन्य उपयोगकर्ताओं द्वारा अत्यधिक अनुमानित है। mktempअस्थायी फ़ाइलों का उपयोग करें ! ( मेरा उत्तर देखें )।
एफ। होरी

@ F.Hauri, हाँ, भरोसा /tmp/$USER.psकरना मूर्खतापूर्ण है। मैंने अपना उत्तर अपडेट कर दिया है।
मैक्सक्लेपजिग

यदि फ़ाइल पहले से मौजूद है या निर्देशिका नहीं है तो mktemp विफल हो जाएगा। असफल होने पर, आपकी कैश निर्देशिका अवांछित मुद्रित मेलों से भर जाएगी। /tmp/*रीबूट पर हटाए जाने का मुख्य कारण यही है।
एफ। होरी

@ F.Hauri, raison mktempd'être फ़ाइल नाम टकराव से बचने के लिए है। यह अन्य कारणों से विफल हो सकता है, हालांकि। मैंने कमांड बदल दिया है जैसे कि म्यूटप्रिंट तभी निष्पादित होता है यदि मस्कैम्प सफल रहा (मुझे संदेह है कि म्यूटप्रिंट कुछ fखाली होने पर किसी अन्य फ़ाइलनाम पर डिफ़ॉल्ट होगा )। इस प्रकार, अब आप केवल एक लेफ्ट-ओवर टेम्प फाइल के साथ अंत करते हैं यदि एवेरियन या आरएम विफल हो जाते हैं। मैं इस संभावना पर विचार करता हूं - और अगर वे मानते हैं कि समस्याग्रस्त फ़ाइल ने समस्या को डीबग करने के लिए मदद बनाए रखी है। यकीन है, /tmpस्वचालित रूप से साफ किया जाता है। लेकिन $HOMEसंवेदनशील डॉक्स के लिए फायदेमंद है जब इसे एन्क्रिप्ट किया जाता है लेकिन /tmpऐसा नहीं है।
मैक्सक्लेपजिग

mktemp -p $HOME/.cache/mutt-XXXXXXXXXXइस मामले में उपयोग करें , लेकिन mktempसही उपकरण है।
एफ। होरी

3

आप paps का उपयोग करने पर भी विचार कर सकते हैं , जो UTF-8 एन्कोडेड फ़ाइल को पढ़ता है और फ़ाइल की एक पोस्टस्क्रिप्ट भाषा प्रदान करता है। प्रतिपादन pango ft2 बैकएंड के माध्यम से रूपरेखा घटता बनाकर किया जाता है।


3

अधिक सुरक्षित और कम कागज का उपयोग करके, एक बनाएँ wrapper:

इसके लिए मेरा प्रिंट कमांड है .muttrc:

set print_command="$HOME/bin/print_preview-wrapper.sh"

और की सामग्री है "$HOME/bin/print_preview-wrapper.sh"

#!/bin/bash

read tmpdir < <(mktemp -d /tmp/print_preview-$USER-XXXXXXXX)
cd $tmpdir || exit 1

trap "cd && rm -fR $tmpdir;exit" 0 1 2 3 6 9 15

cat >file.eml
muttprint -P A4 -p TO_FILE:file.ps <file.eml 

read numPages < <(sed '/^%%Pages/{s/%%Pages: //;q;};d' file.ps)
(( numPages > 1 )) &&
    muttprint -2 -P A4 -p TO_FILE:file.ps <file.eml 

gv file.ps

यह करेगा

  • वर्तमान प्रिंटिंग मेल को संग्रहीत करने के लिए सुरक्षित रूप से अस्थायी dir बनाएं,
  • उन्हें पोस्टस्क्रिप्ट में परिवर्तित करें, लेकिन
    • यदि 1 से अधिक पृष्ठ है,
    • उन्हें फिर से रूपांतरित करें, लेकिन शीट द्वारा 2 पृष्ठ डालते हैं।
  • दौड़ना gvक्योंकि मुझे यह पसंद है, लेकिन आप कोई अन्य उपकरण चला सकते हैं।
  • बाहर निकलने पर अस्थायी निर्देशिका हटाएं।

है read tmpdir < <(mktemp -d /tmp/print_preview-$USER-XXXXXXXX)से अधिक लाभ tmpdir=$(mktemp -d /tmp/print_preview-$USER-XXXXXXXX)?
मैक्सक्लेपजिग

केवल 1 चर के लिए @maxschlepzig, वास्तव में नहीं। यह वाक्यविन्यास एक साथ कई चर निर्दिष्ट करने के लिए उपयोगी हो सकता है:read host foo foo ip < <(host google.com); echo $ip $host
एफ। होरी

1

यहाँ एक सरल रसीद है जिसे मैं अलग-अलग यूनिक्स पर उपयोग करता हूँ:

set print_command="iconv --unicode-subst="_" -f utf-8 -t iso-8859-1 | enscript -P ••My_printer••"

••My_printer••प्रिंटर का नाम कहां है।


बुनियादी लैटिन -1 प्रदर्शनों की सूची के बाहर सभी यूनिकोड वर्णों को निचोड़ने से ऐसा लगता है कि शायद ओपी नहीं देख रहा है, और इसलिए अंतिम सहस्राब्दी।
ट्रिपलआई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.