Portál AbcLinuxu, 3. května 2025 08:44

CUPS - vlastní filtr

28.4.2008 12:46 | Přečteno: 1168× | Praxe | Výběrový blog | poslední úprava: 27.5.2008 12:43

Byl jsem postaven před problém jak odčeštit text přicházející do tiskové fronty CUPS. Nejrychlejší my přišlo napsat si wrapper pro textový filtr "/usr/lib/cups/filter/texttops".

Protože nemá smysl psát vše znovu, vlastně jen provedu své úpravy vstupu a předám vstup filtru "texttops" z balíku CUPS. Wrapper je univerzální, stačí nahradit akce mezi "######## Modify #########".

soubor "/usr/lib/cups/filter/texttoasciips"
#!/bin/bash

# Defaults
TTAP_DEBUG=false

[ -f /etc/cups/texttoasciips.conf ] && . /etc/cups/texttoasciips.conf

DBG_FILE=/tmp/texttoasciips.dbg

$TTAP_DEBUG && echo ======================================= >> ${DBG_FILE}
$TTAP_DEBUG && echo ======================================= >> ${DBG_FILE}
$TTAP_DEBUG && date >> ${DBG_FILE}
$TTAP_DEBUG && echo "Params($#): $@" >> ${DBG_FILE}
$TTAP_DEBUG && echo ======================================= >> ${DBG_FILE}
$TTAP_DEBUG && set >> ${DBG_FILE}
$TTAP_DEBUG && echo ======================================= >> ${DBG_FILE}

$TTAP_DEBUG && echo /usr/lib/cups/filter/texttops "${1}" \
"${2}" "${3}" "${4}" "${5}" "${6}" >> ${DBG_FILE}
$TTAP_DEBUG && echo ======================================= >> ${DBG_FILE}

######## Modify #########

# change the print job directly
iconv -f "${CHARSET}" -t "ASCII//TRANSLIT" "${6}"
######## Modify #########

if ( $TTAP_DEBUG ) ; then
    /usr/lib/cups/filter/texttops "${1}" "${2}" "${3}" "${4}" \
            "${5}" "${6}" 2>> ${DBG_FILE}
else
    /usr/lib/cups/filter/texttops "${1}" "${2}" "${3}" "${4}" \
            "${5}" "${6}"
fi

soubor "/etc/cups/texttoasciips.conf"
## comment for not to have debug output
#TTAP_DEBUG=true
A toto je příslušná úprava souboru "/etc/cups/mime.convs"
--- mime.convs.orig     2008-04-28 10:14:26.000000000 +0200
+++ mime.convs  2008-04-28 10:15:05.000000000 +0200
@@ -44,8 +44,10 @@
 application/x-csource  application/postscript  33      texttops
 application/x-perl     application/postscript  33      texttops
 application/x-shell    application/postscript  33      texttops
-text/plain             application/postscript  33      texttops
-text/html              application/postscript  33      texttops
+#text/plain            application/postscript  33      texttops
+#text/html             application/postscript  33      texttops
+text/plain             application/postscript  33      texttoasciips
+text/html              application/postscript  33      texttoasciips
 image/gif              application/vnd.cups-postscript 66      imagetops
 image/png              application/vnd.cups-postscript 66      imagetops
 image/jpeg             application/vnd.cups-postscript 66      imagetops
Pozn.: Až po napsání jsem narazil na toto Using_Your_Own_Filters_to_Print_with_CUPS Pozn2.: přidáno //TRANSLIT do iconv a odstraněn komentář podle doporučení p. Watzkeho ...        

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

28.4.2008 14:01 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše paps
Odpovědět | Sbalit | Link | Blokovat | Admin
Pokud diakritiku likvidujete kvůli neschopnosti dostat ji do PS, tak vyzkoušejte paps.
David Watzke avatar 28.4.2008 17:00 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: CUPS - vlastní filtr
Odpovědět | Sbalit | Link | Blokovat | Admin
# iconv likes upperchars
iconv doesn't care
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
28.4.2008 19:03 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: CUPS - vlastní filtr
Odpovědět | Sbalit | Link | Blokovat | Admin
Mě by spíš zajímalo, jak zdroják PS, který obsahuje UTF8 znaky (hlavně české), neboť je generovaný programem, převést na korektní postscript. Vím skoro určitě, že už se jsem to kdysi vyřešil, ale zaboha to teď nemůžu najít...
28.4.2008 20:51 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: CUPS - vlastní filtr
Vzhledem k tomu, že mezi Unicode a 8b znakovou sadou bijekci neuděláte, tak nevím, o co se snažíte.
28.4.2008 21:18 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: CUPS - vlastní filtr
Vím, že takovou konverzi nelze univerzálně provést. Situace je následující: mám program, jehož výstupem je postscriptový soubor. Text, který se vyskytuje v tomto PS souboru je zpracovaný vstup od uživatele. Pokud uživatel zadá nějaký text v UTF8, pak se takto (tedy např. znaky 'ěščřžý' atd.) přenesou i do postscriptu. Takovýto soubor se samozřejmě nezobrazí, není platným postscriptem, neboť ten předpokladá defaultně kódování Latin1. Tedy, jde mi o to, nějakým filtrem tento soubor PS se znaky v UTF8 'převést' do platného kódování, aby se správně zobrazovali háčky, čárky, ... Nevím jestli je to jasné vysvětlení.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.