“나중에 인쇄”소프트웨어


12

랩톱에서 작업 할 때 때때로 프린터에 연결되어 있지 않기 때문에 나중에 인쇄하기 위해 몇 개의 문서를 대기열에 넣고 싶습니다.

그러나 실제 프린터 대기열은이를 위해 설계되지 않았습니다. 그들은 즉시 문서를 인쇄하려고 시도하고, 네트워크에 접속하자마자 갑자기 인쇄를 시작합니다. 또한 때로는 대기열의 문서 순서를 변경하고 싶습니다. 특히 일부 문서가 인쇄를 시작한 후에는 쉽지 않습니다.

또한 프린터에 용지 나 토너가 부족하여 문서를 다른 프린터로 다시 인쇄하고 싶기 때문에 인쇄에 실패하는 경우가 있습니다. 예를 들어 CUPS또는로 간단하지 않습니다 system-config-printer. 나는 일반적으로 돌아가서 PDF 리더를 다시 열고 다시 시작해야합니다. 내가 아는 PDF 리더 중 어느 것도 나중에 인쇄 할 문서 목록을 유지하도록 허용하지 않지만, 내가 모르는 PDF 리더의 숨겨진 기능 일 수 있습니다.

어쨌든, 내가하고 싶은 일은 다음과 같습니다.

  • 인쇄 할 PDF 목록을 지정하십시오.
  • 전체 목록을 잃지 않고 응용 프로그램을 닫거나 다시 부팅 할 수 있도록 해당 목록을 디스크에 보관하십시오.
  • 당시에 해당 프린터에 실제로 연결하지 않고 미리 보내려는 프린터를 지정하십시오.
  • 컬러, 양면 인쇄 및 인쇄 매수와 같은 인쇄 옵션을 지정하십시오.
  • 해당 프린터 할당 및 인쇄 옵션을 나중에 변경하십시오.
  • 실제로 버튼을 누르거나 명령을 실행하여 실제로 문서를 인쇄 할 때까지 기다리십시오.
  • 인쇄가되지 않거나 나중에 다시 인쇄하려는 경우를 대비하여 이미 인쇄 된 문서 목록을 별도로 보관하십시오.

쉘 스크립트, lpr텍스트 파일의 경로 목록과 함께 무언가를 해킹 할 수 있다는 것을 알고 있지만이 문제가 이미보다 강력하고 우아한 방식으로 해결되었다고 생각할 수 는 없습니다.

보너스 포인트 :

  • PDF 리더에서 문서를 열 필요는 없습니다. 인쇄하지 않고 찾아보기를 원하며 동일한 응용 프로그램이어야 할 이유가 없습니다.
  • 둘 이상의 목록.
  • Postscript, DjVu 및 기타 페이지 설명 형식에서도 작동합니다.
  • 파일 관리자에서 끌어서 놓기

어떤 제안?


명성이 충분하면 현상금을 시작하십시오.)
AB

내가 볼 수있는 한, 현재 구현 한 프린터 대기열을 간단히 수정하면됩니다 cups. 원하는 프린터 대기열로 간단히 인쇄하되 "해제"하기로 결정할 때까지 프린터 작업을 "대기"상태로 두십시오. "보류 중"버튼 만 있으면됩니다. 아니면 내가 뭔가를 그리워합니까?
Jos

@Jos 내 버전 system-config-printer-applet에서는 인쇄 작업을 보류 및 해제하고 다른 프린터로 옮길 수 있지만 작업을 제출 한 후 인쇄 작업 순서를 변경하거나 인쇄 옵션을 변경할 수 없습니다. 또한 그 시점에서 원본 문서의 경로는 오랫동안 사라졌습니다.
Nathaniel M. Beaver

@AB 불행하게도 현상금에는 75 인터넷 포인트가 필요하며 53 포인트가 낮습니다.
Nathaniel M. Beaver

답변:


10

내가하는 일은 다음과 같습니다 --- 당신이 요구 한 것만 큼 다재다능하지는 않지만 거의 정상적으로 작동합니다. 모든 프린터를 정의한 후 다음 두 스크립트가 필요합니다.

  1. stop_printers:

    #!/bin/bash -f
    #
    allp=(`cat /etc/printcap | tr "|" "\t" | cut -f 1 | grep -v "#"`)
    for i in ${allp[@]}; do 
        echo -n Printer $i:
        cupsdisable "$i"
        echo " " paused.
    done
    
  2. start_printers:

    #!/bin/bash -f
    #
    allp=(`cat /etc/printcap | tr "|" "\t" | cut -f 1 | grep -v "#"`)
    for i in ${allp[@]}; do 
        echo -n Printer $i:
        cupsenable "$i"
        echo " " restarted.
    done
    

당신은 그것들을 당신의 경로에 넣고 (예를 들어 ~/bin)로 실행 가능하게 만들어야합니다 chmod +x. 주의 사항 : 이름에 공백이있는 프린터가 없습니다. 이 경우 스크립트는 테스트되지 않습니다 (그러나 쉘 스크립트 전문가 중 하나가 스크립트를 플래시로 고칠 것이라고 확신합니다;-) ...)

이제 다음을 발행 할 수 있습니다.

[romano:~] % stop_printers
Printer PDF:  paused.
Printer ColorDEA:  paused.
Printer Deskjet_6980:  paused.
Printer fotocop5:  paused.

원하는 곳에서 인쇄 할 수 있으며 프린터가 일시 중지됩니다.

evince에서 프린터

당신은 당신의 대기열을 볼 수 있습니다 :

[romano:~] % lpq -PDeskjet_6980
Deskjet_6980 is not ready
Rank    Owner   Job     File(s)                         Total Size
1st     romano  439     Bones_3+RG.pdf — Flesh depth  125952 bytes

(AFAIK, 인쇄 대기열은 재부팅 할 때마다 지속됩니다). 그리고 인쇄하고 싶을 때 :

[romano:~] % start_printers         
Printer PDF:  restarted.
Printer ColorDEA:  restarted.
Printer Deskjet_6980:  restarted.
Printer fotocop5:  restarted.

사용 lprm하여 필요한 경우 작업을 제거 할 수 있습니다; lpr명령 줄을 통해 문서를 대기열에 넣고 다른 "목록"을 원할 경우 다른 이름으로 동일한 프린터를 여러 번 정의하는 것을 금지하는 사람은 없습니다.

각 프린터를 손으로 다시 시작할 수도 있습니다 cupsenable <printername>. 프롬프트에서 실행하기 만하면 됩니다.

이 솔루션으로 할 수 없다고 생각하는 것은 사실 후에 인쇄 옵션을 변경하는 것입니다. --- 문서를 대기열에서 다시 대기열에 넣어야합니다.


2
당신이 당신의 이유가있을 수 있지만 +1 좋음, 그러나, 당신의 배열을 채우는 것은에서 적절한 구분 사용하여 간단하게 만들 수있는 cut부분을 : cat /etc/printcap | cut -d "|" -f 1 | grep -v "#". 번역을 제거하여 사이클 시간을 절약 할 수 tr있습니다. 첫 번째 필드 만 필요하면 작동합니다.
Cbhihe

1

내 패키지 (shameless plug), duplexpr 은 원하는 것을 수행하며 자신의 버전을 롤링하는 데 유용한 bash 함수를 포함합니다. (bash로 코딩되어 있으므로 비교적 쉽게 수정할 수 있어야하며 가능하면 도움이 될 것입니다.)

비 이중 프린터에서 양면 인쇄를 에뮬레이트하도록 설계되었으며 자체 간단한 인쇄 대기열 관리를 구현합니다. GUI와 CLI 인터페이스가 있습니다.

현재 버전은 양면으로 만 인쇄되며 비 양면 프린터에서만 작동하지만 새 버전은 양면 에뮬레이션 소프트웨어없이 프린터 및 대기열 관리 만하는 양면 하드웨어로 프린터를 처리하는 작업에 있습니다. (누구든지 프로젝트 등을 통해 저에게 직접 연락하고 싶다면 이미 작동하는 스크립트의 알파 버전이 있습니다.)

시스템은 현재 기본 프린터로 인쇄하지만 dplx 및 duplex 스크립트는 lp로 전달되는 추가 인수를 허용하며 lp가 프린터 및 기타 속성과 같이 이해하는 모든 옵션을 설정하는 데 사용할 수 있습니다.

시스템은 현재 PDF, PostScript 및 일반 텍스트 파일을 처리합니다.

하지 않는 한 가지는 Acroread 에서 파일로 인쇄 옵션을 사용하여 작성된 파일을 인쇄하는 것입니다. 그 파일은 lp와 함께 작동하지 않으며 문제가 무엇인지 파악하기 위해 업스트림 사람들의 관심을 끌 수 없었습니다.

개인적으로 프린터를 사용할 수있는 경우에도 대부분의 응용 프로그램에서 지원하는 파일로 인쇄 옵션을 사용하여 거의 모든 "오프라인"을 인쇄합니다. 내가하고있는 일에 집중하는 데 도움이됩니다. 나중에 적절한 중단 점에 도달하면 여러 작업을 인쇄합니다.

인쇄 대기열을 갖는 것은 무언가를 재생성하지 않고 다른 사본을 인쇄하려는 경우에도 매우 좋으며 용지 걸림이나 토너 부족과 같은 프린터 오류를 처리하는 데 필수적입니다.


그것은 흥미로운 패키지이지만 지금은 약간 거친 가장자리가있는 것처럼 보이며 무언가 잘못되었을 때 고칠 수 있을지 모르겠습니다. 그건 그렇고, 그것을 Github에 업로드하는 것을 고려 했습니까?
Nathaniel M. Beaver 1

@ bariumbitmap-나는 그것을 처음 쓴 이후로 10 년 이상 매일 그것을 사용해 왔습니다. 안정적입니다. 또한 개발중인 새 버전이 있습니다. 당신이 그것을 깨거나 추가 기능이 필요하고 나와 함께 일할 의사가 있다면, 나는 그것을 고칠 것입니다. 아직 git을 배우지 않았으므로 github을 최소한으로 사용합니다. Sourceforge는 매우 잘 알려져 있습니다.
Joe

0

이 문제에 대한 완벽한 해결책은 없지만 위 의 Rmano의 대답.bashrc 과 비슷한 기능 으로 자동 완성 기능이 추가되어 있습니다.

all-printers() {
    if [ "$*" = "" ]
    then
        # Print usage."
        printf "Usage:\n"
        printf "all-printers start\n"
        printf "all-printers stop\n"
        return 1
    elif ! [ "$1" = "stop" -o "$1" = "start" ]
    then
        printf "Unrecognized command: $1\n"
        return 1
    fi

    cut -f 1 -d '|' /etc/printcap |
    grep -v '^#' |
    while read printer_name
    do 
        if [ "$1" = "stop" ]
        then
            cupsdisable "$printer_name"
            printf "$printer_name stopped.\n"
        elif [ "$1" = "start" ]
        then
            cupsenable "$printer_name"
            printf "$printer_name started.\n"
        fi
    done
}
complete -W 'stop start' all-printers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.