รองรับการเข้ารหัส utf-8 ด้วย lpr


11

ในขณะที่พยายามส่งไฟล์ข้อความไปยังเครื่องพิมพ์ผ่านlprจากxtermเนื้อหาที่ได้รับความเสียหายเกินกว่าการรับรู้สาเหตุของการที่ถูกโยงไปถึงการเข้ารหัสไฟล์ในที่สุด หากฉันประมวลผลข้อความด้วยiconv(เช่น, iconv -f utf-8 -t ascii//TRANSLIT) แสดงว่าไฟล์ถูกพิมพ์ตามปกติ ข้อเสนอแนะของฉันมาข้ามก็คือการตั้งค่ารูปแบบเอกสาร (เช่นlpr -o document-format=text/utf8) lpr: Unsupported document-format "text/utf8"แต่ผลตอบแทนนี้ข้อผิดพลาด ฉันสามารถนามแฝงlprคำสั่งเพื่อรวมการประมวลผลโดยiconvแต่มีวิธีทั่วไปมากขึ้นสำหรับการสนับสนุน utf-8 พื้นเมืองในระบบCUPS/ lpr?

แก้ไข:ระบบปฏิบัติการของฉันคือ Debian 8 และตัวจัดการหน้าต่างของฉันคือopenbox(ไม่มีสภาพแวดล้อมบนเดสก์ท็อป) ฉันสามารถพิมพ์ไฟล์นี้โดยไม่มีปัญหาจาก MacOS X รวมถึงจากระบบ Debian7 / Gnome3

จากระบบปัจจุบันของฉันฉันควรชี้ให้เห็นว่าแม้หลังจากเปลี่ยนการเข้ารหัสอักขระจาก UTF-8 เป็น ASCII แล้วอักขระบรรทัดใหม่จะไม่ได้รับการเคารพlprดังนั้นบรรทัดจะถูกต่อกันเข้าด้วยกันและพิมพ์จนกว่าจะถึงระยะขอบกระดาษ หลังจากการบันทึกและการทับศัพท์ด้วยiconvบน MacOS X การพิมพ์ยังคงใช้งานได้ตามปกติ


1
ฉันไม่ได้มีความรู้ใน CUPS อย่างลึกซึ้ง แต่ควรรวมถึงกฎการตรวจจับประเภทเอกสาร (ด้วย MIME type บนเอาท์พุท) และวิธีการแปลใด ๆ สำหรับเครื่องพิมพ์เป้าหมายซึ่งรวมถึง rasterisation การสร้างไฟล์ Postscript หรือ PCL เป็นต้นโปรดระบุ ประเภทเครื่องพิมพ์ของคุณ? คุณลองa2psไหม การเข้ารหัสแบบใดที่ใช้กับเอาต์พุตจริงๆเมื่อคุณลอง utf-8 (ฉันเดาว่ามันiso-8859-1)
Netch

@Netch: ขอบคุณสำหรับการชี้ให้เห็นa2psตัวกรอง ฉันไม่ได้ตระหนักถึงมัน เครื่องพิมพ์ที่ต้องสงสัยคือเครื่องพิมพ์เลเซอร์สแกน HP4650 หนึ่งจะกำหนดการเข้ารหัสที่ใช้โดยCUPS? ตัวละครที่พิมพ์จริงซึ่งไม่มีความสัมพันธ์ที่มองเห็นได้กับข้อมูลนั้นรวมถึงแกมม่าเมืองหลวงของกรีกเมืองหลวง C พร้อม cedilla, o กับหมวกและละตินทุน W และ T นอกเหนือจากนี้ความล้มเหลวในการเคารพผลการขึ้นบรรทัดใหม่ ในการตัดทอนผลลัพธ์ที่ระยะขอบกระดาษ
user001

ดูเหมือนว่าการเข้ารหัสที่ใช้คือ iso-8859-1 คุณสามารถตรวจสอบสิ่งนี้ได้อย่างง่ายดายโดยใช้ตารางของมัน บางการค้นหาแนะนำว่าการโทรlpr -o document-format='text/plain;charset=utf-8'จะเพียงพอที่จะพิมพ์ตามที่คุณต้องการ แต่นี่ไม่ได้เปลี่ยนค่าเริ่มต้นการติดตั้ง CUPS ซึ่งดูเหมือนว่าล้าสมัย
Netch

คำตอบ:


1

เดียวกันสามารถทำได้ด้วย paps;

#!/bin/bash
#This script converts UTF-8 txt to postscript
paps | lpr
Sometimes you need to specify the prinqueue;

#!/bin/bash
# This script converts UTF-8 txt to postscript
paps | lpr -P lj

Paps ทำงานได้ดีขึ้นกว่าเดิมมาก


ขอบคุณมากสำหรับคำตอบของคุณ ฉันรับรู้papsและต้องการทราบว่ามีความเป็นไปได้ที่จะได้รับการสนับสนุนภายในหรือไม่CUPSเพื่อให้การพึ่งพาจากภายนอกไม่จำเป็นต้องถูกเรียกใช้
user001

1

ฉันไม่รู้ว่าคุณคิดว่า HPLIP พึ่งพาภายนอกหรือไม่ แต่นี่เป็นคำแนะนำอย่างเป็นทางการของไดรเวอร์โดยตรงจาก CUPS

ไดรเวอร์เครื่องพิมพ์ CUPS: HP4650

และนี่คือข้อมูลแพ็คเกจในDebian Repo: HPLIPS

Thushi ระบุว่าระบบของคุณไม่ทราบวิธีการ rasterize เอกสารโดยไม่ต้องใช้เครื่องมือเช่น paps การติดตั้งแพ็กเกจ hplip และกำหนดค่าไว้ที่http://localhost:631เพื่อใช้ไดรเวอร์ที่แนะนำจะช่วยแก้ปัญหาของคุณ สำหรับข้อมูลเพิ่มเติมดูรายการ SystemPrinting ที่ DebianWiki


ขอบคุณ ฉันมี HPLIP เวอร์ชันล่าสุดแล้วในระบบของฉัน ฉันพยายามค้นหาว่ามีใครสามารถระบุสิ่งนี้ได้http://localhost:631แต่ฉันไม่พบสิ่งใดเกี่ยวกับการเลือกไดรเวอร์
user001



0

คุณควรมีสิ่งต่อไปนี้:

text/plain              application/postscript  33      texttops

ใน/etc/cups/mime.convsไฟล์ของคุณ ดังนั้นฉันคิดว่าสิ่งที่ต้องทำคือแก้ไขตัวกรองข้อความ ภายใต้ Debian มันคือ/usr/lib/cups/filter/texttopsซึ่งเป็นเชลล์สคริปต์ที่ใช้ตัวกรอง texttopdf และpdf2psคำสั่ง คุณสามารถลองแทนที่ texttopdf / pdf2ps papsได้ แต่โปรดทราบว่าข้อโต้แย้งนั้นไม่เหมือนกัน น้อยที่สุด (เนื่องจากข้อความมีให้กับอินพุตมาตรฐานและผลลัพธ์ ps ถูกส่งไปยังเอาต์พุตมาตรฐาน) จะเป็นบรรทัดที่มี:

paps

แต่คุณอาจต้องการเพิ่มตัวเลือกเช่น:

paps --font='Monospace 10'

หมายเหตุ: ฉันไม่ได้ลอง เพียงแค่การเก็งกำไร ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.