as it is
我需要的是使用按钮将 PDF 文档直接发送到远程网络打印机,无需进行任何更改Print
。
在 Ubuntu 中我只使用Generic / Raw Queue
驱动程序,一切正常。
Windows 10 的问题是我找不到Generic / Raw Queue
驱动程序,这里只有Generic / Text only
驱动程序,无法打印 PDF。
我尝试使用Microsoft / PDF to file
驱动程序,但它改变了 PDF(改变了 PDF 结构,它用 1 张我不需要的图像替换所有内容)。
有什么建议吗?或者有人可以给我发送一个不会更改文件的驱动程序,然后重新发送它?
答案1
如果您的打印机直接理解 PDF(大多数打印机需要一些实用程序),您可以尝试使用以下命令将其发送到打印机:
LPR -S 打印机 IP 地址 -P 队列名称 文件名.PDF
队列名称参数是特定于打印机的。您可以尝试 PDF 或 RAW。如果这些不起作用,您需要查阅打印机的文档。
如果您不想输入命令,这里有一个用户友好的解决方案。使用记事本创建一个包含命令的文件
LPR -S 打印机 IP 地址 -P 队列名称 %1%
将此文件命名为 PrintPDF.bat 并将其(或指向它的链接)放在桌面上。现在您可以从 Windows 资源管理器中将 PDF 拖到此图标上,然后它将被发送到打印机。
答案2
以下是如何在 Windows 10 上设置 LPR/LPD 打印机。
安装 Windows 组件
- 单击“开始”按钮,然后控制面板
- 点击程序和特点然后单击左侧边栏中的**打开或关闭 Windows 功能
- 扩张打印和文件服务,并确保旁边的框LPD 打印服务和LPR 端口监控已检查
- 单击“确定”并按照屏幕上的说明进行操作,直到组件安装完成。
创建打印机
- 开始高级打印机设置
- 点击我想要的打印机未列出
- 查看使用手动设置添加本地打印机或网络打印机
- 点击下一个
- 查看创建新端口
- 在下拉列表中选择标准 TCP/IP 端口
- 点击下一个
- 输入 IP 地址
- 取消选中 查询打印机并自动选择要使用的驱动程序
- 点击下一个
- 离开标准通用网卡对于设备类型,然后单击下一个
- 选择通用的对于制造商并选择通用/仅限文本对于打印机类型,请单击下一个
- 输入打印机的名称
- 点击结束添加打印机
答案3
我需要的是将 PDF 文档直接发送到远程网络打印机,不做任何更改,使用“打印”按钮。
对于大多数应用程序来说,使用“打印”按钮无法实现这一点,因为您使用的应用程序正在尝试与非原始打印机驱动程序通信,而您明确希望绕过这些功能。相反,您应该直接将原始流发送到打印机。要在 Windows 中实现这一点(没有使用打印按钮)
- 在网络上共享打印机。
- 来自
cmd
(或 PowerShell 等):echo sample.pdf > \\computer\printer
或者使用以下编程语言JScript:
"use strict";
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFile("sample.pdf", "\\\\computer\\printer", true);
让应用程序以这种方式运行并不常见。大多数能够打开和呈现 PDF 的应用程序都没有绕过驱动程序的能力。这只是惯例。底层语言(例如 C++、Java)确实有针对原始数据风格的技术,但它并不是您描述的“打印”按钮通常所关联的东西。
在 Ubuntu 中我只需使用
Generic / Raw Queue driver
,一切正常。
Ubuntu 操作系统中的哪个应用程序允许这样做?一般来说,CUPS 将使用 Ghostscript,并且会遭受与 Microsoft PDF 驱动程序类似的转换。我不同意在 Ubuntu 上发送的 PDF 数据是“未修改”的说法。更有可能的是,它确实被修改了,但修改后的版本更受欢迎。如果您是对的,并且字节流未被修改,那么这似乎更像是 CUPS 的隐藏功能,而不是 WinSpool 的问题。