手動両面印刷

手動両面印刷

私はプリンタを持っています(サムスンM2022W)は両面印刷をサポートしていません。

しかし、手動で両面を印刷したいと思います。つまり、偶数ページを印刷してから、そのページをプリンタに再挿入して奇数ページを起動します。問題は、私のDebianシステムに「手動二重」オプションがないことです。また、「奇数/偶数ページのみ」オプションもありません。

* unixで手動で両面に簡単に印刷するには?

答え1

OPの答えに答えるには少し遅れていることを知っていますが、これを探している人は誰でも私の答えを確認したいと思います。二重Sourceforgeでのプロジェクト。非両面プリンタの両面印刷をエミュレートするだけでなく、複数の印刷ジョブを一度に一括印刷することができるので、バッチ全体で一度だけページを削除して再挿入するだけです。

DuplexprはコマンドラインとGUIインターフェイスの両方をサポートします。 Bashで書かれており、再利用可能な機能が多く、比較的修正が簡単です。私は10年以上にわたり、さまざまなプリンタで毎日この機能を使用してきましたが、まだ開発を続けています。

両面印刷したい場合や、プリンタがサポートしているすべての便利な機能にアクセスする必要がある場合も確認してくださいxpp。プリンタができることはほとんどすべてできますが、毎回やりたいことを言う必要があります。

答え2

努力する

$ lp -o page-set=odd filename
# ... manually flip pages ...
$ lp -o page-set=even filename

ドキュメントからここ

答え3

.itというパッケージはgnome-manual-duplexデフォルトで多くのプリンタで動作します。それ以外の場合は手動設定が必要な場合があります。

答え4

手動両面印刷用の簡単なシェルスクリプトを作成しました。lpoptions -lプリンタでサポートされている印刷オプションを見つけるために使用されます。

Printer=DeskJet-2130-series
PageSize=A4
InputSlot=Main
ColorModel=KGray
MediaType=Plain
OutputMode=Normal

file_list=()
print_status=()
file_count=0

red=$'\e[1;31m'
grn=$'\e[1;32m'
yel=$'\e[1;33m'
blu=$'\e[1;34m'
mag=$'\e[1;35m'
cyn=$'\e[1;36m'
end=$'\e[0m'

current_file=0

for file in "$@"    
do
    echo "$file"
    file_list[$file_count]=$file
    print_status[$file_count]="pending"
    file_count=$((file_count+1))
done

function print_status_text() {
    fmt="%-100s%-12s\n"
    for ((i=0;i<$file_count;i++))
    do
        file=${file_list[$i]}
        status=${print_status[$i]}
        
        if [ $status == "pending" ]
        then
            printf "$fmt" "${blu}$file${end}" "${blu}$status${end}"
        elif [ $status == "ready" ]
        then
            printf "$fmt" "${mag}$file${end}" "${mag}$status${end}"
        elif [ $status == "printing" ] || [ $status == "processing" ]
        then
            printf "$fmt" "${yel}$file${end}" "${yel}$status${end}"
        elif [ $status == "skipped" ]
        then
            printf "$fmt" "${red}$file${end}" "${red}$status${end}"
        else
            printf "$fmt" "${grn}$file${end}" "${grn}$status${end}"
        fi
    done
}

trap ctrl_c INT

function ctrl_c() {
        for ((e=$current_file;e<$file_count;e++))
    do
        print_status[$e]="skipped"
    done
    clear
    print_status_text
    exit 0
}

for ((n=0;n<$file_count;n++))
do
    current_file=$n
    clear
    file=${file_list[$n]}
    print_status[$n]="ready"
    print_status_text
    echo ""
    echo -e "\e[93m\e[5mPress enter to START printing...\e[0m\e[0m"
    read -p ""
    clear
    print_status[$n]="processing"
    print_status_text
    # separate even and odd pages
    # remove old temp files
    if [ -f "/tmp/odd.pdf" ]; then
        rm "/tmp/odd.pdf"
    fi
    if [ -f "/tmp/even.pdf" ]; then
        rm "/tmp/even.pdf"
    fi
    pdftk "$file" cat odd output /tmp/odd.pdf && pdftk "/tmp/odd.pdf" cat end-1 output "/tmp/out.pdf" && rm /tmp/odd.pdf && mv /tmp/out.pdf /tmp/odd.pdf >> /dev/null
    pdftk "$file" cat even output /tmp/even.pdf && pdftk "/tmp/even.pdf" cat end-1 output "/tmp/out.pdf" && rm /tmp/even.pdf && mv /tmp/out.pdf /tmp/even.pdf >> /dev/null
    evenCount=$(pdfinfo /tmp/even.pdf | awk '/^Pages:/ {print $2}')
    oddCount=$(pdfinfo /tmp/odd.pdf | awk '/^Pages:/ {print $2}')
    
    if [ $evenCount -gt 0 ] && [ $evenCount -lt $oddCount ]; then
        # create blank pdf if not exists
        if [ ! -f "/tmp/blank.pdf" ]; then
            convert xc:none -page A4 /tmp/blank.pdf
        fi
        # join blank pdf and even pdf
        pdftk /tmp/blank.pdf /tmp/even.pdf cat output /tmp/out.pdf
        rm /tmp/even.pdf
        mv /tmp/out.pdf /tmp/even.pdf
    fi
    
    if [ $oddCount -lt $evenCount ]; then
        # create blank pdf if not exists
        if [ ! -f "/tmp/blank.pdf" ]; then
            convert xc:none -page A4 /tmp/blank.pdf
        fi
        # join blank pdf and even pdf
        pdftk /tmp/blank.pdf /tmp/odd.pdf cat output /tmp/out.pdf
        rm /tmp/odd.pdf
        mv /tmp/out.pdf /tmp/odd.pdf
    fi
    
    clear
    
    # print even pages
    if [ $evenCount -gt 0 ]; then
        lp -d "$Printer" -o PageSize="$PageSize" -o InputSlot="$InputSlot" -o ColorModel="$ColorModel" -o MediaType="$MediaType" -o OutputMode="$OutputMode" "/tmp/even.pdf" > /dev/null
        print_status[$n]="printing"
        print_status_text
        echo ""
        echo -e "\e[95m\e[5mPress enter to print SIDE TWO...\e[0m\e[0m"
        read -p ""
    fi
    clear
    
    # print odd pages
    if [ $oddCount -gt 0 ]; then
        lp -d "$Printer" -o PageSize="$PageSize" -o InputSlot="$InputSlot" -o ColorModel="$ColorModel" -o MediaType="$MediaType" -o OutputMode="$OutputMode" "/tmp/odd.pdf" > /dev/null
    fi
    print_status[$n]="completed"
    print_status_text
done

関連情報