【问题标题】:How to write my own printer driver for a printer that is no longer supported by manufacturer?如何为制造商不再支持的打印机编写我自己的打印机驱动程序?
【发布时间】:2020-11-24 19:36:10
【问题描述】:

这个问题几乎说明了一切。我基本上想创建一个与我当前的 MacOS (Catalina) 兼容的驱动程序。我面临的问题是我的打印机(带扫描仪)目前只能扫描页面并将其打印出来。我希望能够使用我的扫描仪保存扫描文档的图像。

老实说,我不确定编写驱动程序是否是最好的方法,但制造商(佳能)不再有这款旧扫描仪的驱动程序。但它和我们拿到它的那天一样好用,所以我真的不想把这个扔出去买一个新的。

更新:目前遇到以下问题:

rabdelazin@rabdelazim Downloads % device=$(sane-find-scanner | awk '/Canon/{print $NF}')
rabdelazin@rabdelazim Downloads % echo $device                                          
libusb:020:029
rabdelazin@rabdelazim Downloads % scanimage --device Canon:$device -x 210 -y 297 --mode color --resolution 240 --format=tiff --depth 8 > ~/Downloads/scan.tiff       
scanimage: open of device Canon:libusb:020:029 failed: Operation not supported

【问题讨论】:

  • 出于好奇,佳能是什么型号的?
  • 佳能 Pixma MP140
  • SANE 项目 sane-project.org/sane-mfgs.html 支持该设备我有一个 EPSON 扫描仪并使用 homebrew 安装了 libusbsane-backends 并制作了一个简单的脚本来扫描。你也可以得到一个 Raspberry Pi 并将你的 Canon 连接到上面,然后运行你的 Mac 可能与之通信的 SANE 守护进程。如果你觉得这个概念很有趣,我明天会试着找到我的代码。
  • 是的,绝对有兴趣。这听起来像我在找什么。宁愿不购买任何额外的硬件来完成这项工作。

标签: macos printing driver macos-catalina


【解决方案1】:

我在 ma​​cOS 上有一张 EPSON Perfection 4990 Photo,因此我无法为您提供佳能的完整代码和示例,但它可以帮助您入门。我在终端中度过了我的一生,而不是使用 GUI 来做任何事情,所以我只需以全分辨率扫描平台的整个区域,然后在必要时使用 ImageMagick 或 Photoshop 做任何我需要的事情。

所以,我从here 安装了 homebrew。然后我安装了一些包:

brew install libusb
brew install sane-backends

然后我可以找到我的扫描仪:

sane-find-scanner

样本输出

found USB scanner (vendor=0x04b8 [EPSON], product=0x012a [EPSON Scanner]) at libusb:003:002

现在您需要该行的最后一个词,libusb:003:002 部分,我使用的是 EPSON:

sane-find-scanner | awk '/EPSON/{print $NF}'

你需要看看你得到了什么,然后稍微适应一下。

样本输出

libusb:003:002

因此,为了进行扫描,我将其捕获到名为 devicebash 变量中并执行以下操作:

device=$(sane-find-scanner | awk '/EPSON/{print $NF}')

scanimage --device epson:$device -x 210 -y 297 --mode color --resolution 240 --format=tiff --depth 8 > ~/Desktop/scan.tif

我将全部内容放在一个名为 scanbash 脚本中,如下所示:

#/bin/bash

TMP="$HOME/Desktop/scan.tif"

# Find libusb device name
device=$(sane-find-scanner | awk '/EPSON|HP/{print $NF}')
if [ -z $device ]; then
   echo ERROR: Unable to find libusb device
   exit 1
fi
echo Found scanner at: $device

# Now scan full-size, colour, hi res
scanimage --device epson:$device -x 210 -y 297 --mode color --resolution 240 --format=tiff --depth 8 > "$TMP"

# Check we got a file
if [ ! -s "$TMP" ]; then
   echo ERROR: Empty scan
   exit 1
fi

我的脚本最后还有一些可选的 ImageMagick 内容来创建可在 Web 上使用的 JPEG,如果您添加了这些内容,您需要这样做:

brew install imagemagick

然后将这个添加到上面的脚本中:

# Copy the file to User's Desktop and number nicely...
# ... save as hi-res 16-bit TIF
# ... and medium res, medium quality JPG for web use
cd ~/Desktop
i=0
while :; do
   base=$(printf "scan-%03d" $i)
   if [ ! -f "${base}.jpg" ]; then
      cp "$TMP" "${base}.tif"
      convert "$TMP" -resize 2000x2000 -quality 85% "${base}.jpg"
      break
   fi
   ((i++))
done

这里有一些资源,我发现在全力以赴时很有帮助。您可以使用以下命令调试scanimage 程序:

SANE_DEBUG_SNAPSCAN=128 scanimage -L

This resource 很有用。

您可以获得这样的帮助:

scanimage --help -d epson

请注意,您也可以使用 Raspberry Pi 或类似的小型低成本 Linux 机器作为“扫描仪服务器”。基本上,您可以通过 USB 将扫描仪连接到 Raspberry Pi 并在 Raspberry Pi 上运行 SANE。一旦你让它工作,你可以运行saned,这是一个守护进程服务,在树莓派上,它在网络上侦听其他设备(比如你的Mac)发出扫描请求。它使用其 Linux SANE 驱动程序进行扫描,并通过以太网将图像传送回 Mac(或其他)客户端。我知道你不喜欢这个选项,但可能会有未来的读者......

关键字:macOS、OSX、scan、scanner、scanning、EPSON、Canon、HP、libusb、SANE、sane-backends

【讨论】:

  • 这个运气好吗?
  • 我将命令更改为将设备名称大写,但现在我明白了:scanimage: open of device Canon:libusb:020:021 failed: Operation not supported 我将在下一条评论中发布命令。
  • 命令生成“不支持的错误”:scanimage --device Canon:$device -x 210 -y 297 --mode color --resolution 240 --format=tiff --depth 8 > ~/Downloads/scan.tiff
  • scanimage命令的相关输出如下:found USB scanner (vendor=0x04a9 [Canon], product=0x172b [MP140 series]) at libusb:020:029
【解决方案2】:

经过多次反复试验,我终于想出了一个解决方案。

TL;DR:我用 raspberry-pi 制作了一个打印服务器,安装了 cups,并将打印机设置为通过服务器共享。像魅力一样工作!

这需要进行大量调查,但作为修复旧笔记本电脑的一部分,我通过安装 Ubuntu 20.04 让它运行起来。只是为了好玩,我决定尝试从笔记本电脑上打印一些东西。我必须安装 CUPS 和其他一些软件包,但它确实有效。这让我想到我应该只制作一个知道如何与打印机对话的打印服务器,这样所有其他机器都可以来来去去,但我的打印机应该仍然可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 2013-03-25
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2021-10-11
    • 2017-08-31
    相关资源
    最近更新 更多