Sử dụng tập lệnh shell làm máy in ảo


10

Tôi có một tập lệnh shell lấy tệp PDF làm đối số và in nó với các tùy chọn cụ thể của máy in. Làm cách nào tôi có thể thêm tập lệnh này dưới dạng máy in ảo có thể được chọn từ GUI?

Tập lệnh shell là tập lệnh song công thủ công lấy tệp PDF, in các trang chẵn, đưa ra lời nhắc người dùng bằng cách sử dụng zenity yêu cầu người dùng lật các trang và sau đó in các trang lẻ.

Quy trình làm việc hiện tại của tôi là:

  1. Tệp -> In -> Lưu vào tệp -> tmp.pdf
  2. my_duplex_script tmp.pdf
  3. rm tmp.pdf

Có cách nào để làm cho nó như:

  1. Tệp -> In -> my_script_as_virtual_printer

Lưu ý: Đây là trên Linux mint 13 quế. Tôi đã cố gắng gnome-manual-duplexnhưng nó không làm việc cho tôi.


Hộp thoại GUI mà tôi có thể in thành tệp PDF Hộp thoại in GTK tiêu chuẩn

my_duplex_script

#!/bin/bash

lp_args=
while getopts o: opt
do
    case "$opt" in
        o)  lp_args="$lp_args -o $OPTARG" ;;
        \?) echo >&2 Invalid argument; exit 1 ;;
    esac
done
shift `expr $OPTIND - 1`

file=$1
page_count=$(pdfinfo "$file" | grep Pages | awk '{print $2}')
is_odd=`expr $page_count % 2`

if [ $is_odd -eq 1 ]
then
    #outputting blank
    echo | lp -s -t "$file"-blank
fi

#printing even reversed
lp -s -o page-set=even -o outputorder=reverse $lp_args -t "$file"-even "$file"

if zenity --question --text="Flip and reinsert the entire stack when printing has finished." --ok-label="Proceed" --cancel-label="Cancel"
then
    #printing odd reversed
    lp -s -o page-set=odd -o outputorder=reverse $lp_args -t "$file"-odd "$file"
else
    echo >&2 User abort
    exit 1
fi

exit 0

Câu trả lời:


2

Tôi chưa bao giờ thử điều này nhưng có một công cụ được gọi là tea4cupsâm thanh mà bạn có thể thực hiện trước một kịch bản trước khi thực hiện việc in ấn. Sau đó, bạn có thể hủy bản in này và không thực sự đi đến một máy in thực qua cốc, cho phép tập lệnh của bạn thực hiện in thay thế.

đoạn trích

Khả năng là vô tận:

  • Gửi cùng một công việc cho một số máy in cùng một lúc, điều này là không thể với CUPS.
  • Tự động lưu trữ PDF của tất cả các công việc in.
  • Cấm các công việc in trùng lặp (một ví dụ đơn giản được hiển thị trong tệp cấu hình mẫu)
  • Tạo một giải pháp kế toán in trong 15 phút (CÓ, ĐÂY LÀ SỰ THẬT)
  • Vân vân...

Tea4cups cung cấp các điều kiện sau:

Tea4CUPS cung cấp ba cách để khởi chạy các lệnh:

  • bộ lọc: Bộ lọc có thể sửa đổi dữ liệu đầu vào trước khi chúng được gửi đến máy in hoặc được cung cấp cho các móc trước và sau được xác định bên dưới. Hiện tại một bộ lọc duy nhất có thể được xác định cho mỗi hàng đợi in.
  • prehooks: chúng được đảm bảo được khởi chạy trước khi lệnh in được gửi đến máy in thực. Bất kỳ prehook nào thoát -1 đều có thể hủy lệnh in. Bất kỳ số lượng prehooks có thể được xác định cho một hàng đợi in cụ thể.
  • posthooks: chúng được đảm bảo sẽ được khởi chạy sau khi lệnh in được gửi đến máy in thực, trừ khi công việc đó đã bị hủy trước bởi một prehook. Bất kỳ số lượng posthooks có thể được xác định cho một hàng đợi in cụ thể.

2

Làm cách nào tôi có thể thêm tập lệnh này dưới dạng máy in ảo có thể được chọn từ GUI?

Để quảng cáo một máy in ảo, chỉ cần chỉnh sửa của bạn /etc/printcap. Điều này không phải là rất dễ dàng, bởi vì cú pháp của PRINTCAP cần được làm quen.

Một ví dụ về cách thực hiện được hiển thị ở đây Dịch vụ PDF với Samba :

# /etc/printcap
# PDF Service entry

lp|pdf|PDF Printer:\
        :lp=/dev/null:sh:\
        :sd=/var/spool/lpd/pdf:\
        :af=/var/spool/lpd/pdf/acct:\
        :mx#0:sh:\
        :if=/usr/bin/smbprint:

Ở đây /usr/bin/smbprinttập lệnh được sử dụng làm bộ lọc in. Máy in chính nó là /dev/null.

Có lẽ bạn sẽ cần phải cài đặt cups-bsd, nhưng nó thường là cấu hình mặc định.


Lưu ý rằng đó printcaplà tệp cấu hình cho BSD lpr hoặc lprNG, không phải cho CUPS là tiêu chuẩn thực tế hiện nay và là tiêu chuẩn trên Mint.
Gilles 'SO- ngừng trở nên xấu xa'

Do đó, tôi đã đề cập đến cups-bsdgói, cũng có sẵn trên Mint, theo mặc định được cài đặt và cũng được hỗ trợ tốt. cups-bsdkhông phải là lprng! Nó chỉ là một trình bao bọc, cung cấp chức năng in BSD cho Cup để hỗ trợ các ứng dụng sử dụng lprđể in (ví dụ: xpdf).

0

Đến bữa tiệc muộn, nhưng tôi muốn làm điều tương tự và tôi không tìm thấy giải pháp nào khác.

Tôi sẽ viết ở đây cách tôi giải quyết nó, có thể những người khác sẽ tìm thấy giải pháp hữu ích.

  • tạo một bộ lọc cho cốc để bắt tập tin được in
  • thực hiện một phụ trợ để in tập tin
  • thực hiện một trình cài đặt tốt đẹp và dễ dàng.

mã nguồn có trên github: https://github.com/dentys03/manual_duplex_linux

Nó sẽ hoạt động trên mọi máy in HP. Dễ dàng thích nghi cho các máy in khác, tôi đoán.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.