如何从目录自动打印 PDF 文件?

如何从目录自动打印 PDF 文件?

目前,我有一个名为 MY-SHARED 的目录,我需要发生以下情况:

  1. 打印我放入 MY-SHARED 的所有 PDF 文件
  2. 打印必须自动启动(无需人工干预)
  3. 打印后应自动删除文件

我怎样才能完成这样的任务?

顺便说一句,我是 Ubuntu 世界的新手。

答案1

  1. 安装包inoticoming

    sudo apt-get install inoticoming
    
  2. 安装该包trash-cli以使用垃圾文件夹,而不是删除 PDF

    sudo apt-get install trash-cli
    

    如果你更喜欢通过传统的方法删除文件rm,那么你不需要这个包,你必须用下面的代码替换

    lpr "$2/$1" && trash "$2/$1"
    

    lpr "$2/$1" && rm "$2/$1"
    

    在下面的脚本中。

  3. 创建包装器脚本printpdf

    mkdir -p ~/bin
    gedit ~/bin/printpdf
    
  4. 添加以下代码,保存文件并关闭编辑器

    #!/usr/bin/env bash
    FILE="$1"
    if [ "${FILE##*.}" = "pdf" ]
    then
        lpr "$2/$1" && trash "$2/$1"
    fi
    exit 0
    
  5. 使脚本可执行

    chmod +x ~/bin/printpdf
    
  6. 查看你的文件夹

    inoticoming /path/to/MY-SHARED ~/bin/printpdf {} /path/to/MY-SHARED \;
    

并作为@Rmano在评论中说

关于第 4 点,请注意,几乎不可能确定文件是否已打印。您可以检查它是否已发送到打印机,但打印要复杂得多,而且实际上永远无法确保万无一失(并且可能依赖于打印机)。

答案2

谢谢你,效果非常好。特别是如果你把它作为 cronjob 来激活inoticoming,它甚至可以打印各种图片和 PDF。

#!/usr/bin/bash
FILE="$1"

if [ "${FILE##*.}" = "jpg" ]
then
        lpr  "$2/$1" && rm "$2/$1"

elif [ "${FILE##*.}" = "jpeg" ]
then
        lpr  "$2/$1" && rm "$2/$1"

elif [ "${FILE##*.}" = "png" ]
then
        lpr  "$2/$1" && rm "$2/$1"

elif [ "${FILE##*.}" = "pdf" ]
then
        lpr  "$2/$1" && rm "$2/$1"

elif [ "${FILE##*.}" = "svg" ]
then
        lpr  "$2/$1" && rm "$2/$1"

else
 echo "finish"

fi

exit 0

相关内容