ctw*_*els 17 php network-printers
在网络打印机上打印PDF文档,同时传递颜色,方向,双面等内容的打印参数.
我登录了其中一台打印机(192.168.0.10 - 理光MP C5503 [如果你真的必须知道])并添加了FTP访问权限
在Windows工作中使用命令提示符打印文档!
> ftp 192.168.0.10
> User (192.168.0.10:(none)): username
> Password: password
> put path\to\file.pdf filetype=PDF
> bye
Run Code Online (Sandbox Code Playgroud)
尝试1使用PHP的exec()函数
我已经尝试了很多方法使exec工作,但无济于事.我无法使用PHP的exec函数运行多行命令(理想情况下,运行以下命令).在exec()中运行以下命令时,我无法连接到FTP,因为必须在上一行运行后执行每一行.我在网上找不到任何内容(多次谷歌搜索没有结果[除了如何从cmd回显多个输出行 - 不是如何连续插入多个cmd行])
> ftp 192.168.0.10
> User (192.168.0.10:(none)): username
> Password: password
> put path\to\test.pdf filetype=PDF
> bye
Run Code Online (Sandbox Code Playgroud)
尝试2使用PHP的exec()函数
我尝试通过传递文本文件来运行ftp命令,因为这篇帖子的一些答案建议.此解决方案无法按预期工作.ftp -i -s:test.txt从命令提示符运行时,这是有效的; 在PHP中,它没有.
PHP文件
exec("ftp -i -s:test.txt");
Run Code Online (Sandbox Code Playgroud)
文本文件(test.txt)
open 192.168.0.10
username
password
put test.pdf filetype=PDF
bye
Run Code Online (Sandbox Code Playgroud)
尝试3使用PHP的FTP功能
我现在无法弄清楚,如何通过ftp将文件发送到打印机以及如何设置打印机设置
$ftp = [
'server' => gethostbyaddr('192.168.0.10'),
'username' => 'username',
'password' => 'password',
];
$conn = ftp_connect($ftp['server']);
$login = ftp_login($conn, $ftp['username'], $ftp['password']);
if (is_readable($file)) {
if (ftp_put($conn, $file, $file, FTP_ASCII)) {
echo 'Successfully executed command';
}
else {
echo 'Failed execution of command';
}
}
else {
echo 'File is not readable';
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找适用于Windows和Linux系统的解决方案,因为我们也正在从IIS迁移到NGINX(感谢上帝......).我认为最好的实现方法是使用ftpWindows和/ rcp或rshLinux(因为我附加的打印机文档在" 我正在尝试做的部分"中的更多信息部分提到了这些打印方法).
我也想,如果我们不必生成txt文件或其他文件类型来打印这些文档.我们的用户可能一次处理数百个文件,我知道我们可以唯一地命名每个txt文件,然后在脚本成功运行后删除,虽然我更喜欢一个干净的解决方案,我们可以传递参数,如打印机(来自gethostbyaddr()功能的IP或名称),用户名,密码,要打印的文件,选项(即颜色,双面打印,文件类型,方向,装订等).我们正在使用MDPF生成我们的PDF文件,因此放置文件而不在我们的服务器上实际创建文件的方法将是首选(即电子邮件的MPDF字符串附件),但这些不是必需的.
该解决方案必须与PHP一起使用.
我将继续研究更多在网络打印机上打印文档的方法,直到找到可行的解决方案并在每次尝试后相应地更新我的帖子.
对此有任何帮助非常感谢.
该打印机的功能也允许打印,但他们不允许在打印作业(选项,例如彩色/黑白打印,文件类型,双面打印等)控制.因此,这个选项(除非有人有"黑客",将无法工作)
尽管JavaScript/AJAX可用于打印(并允许打印设置),但我们将同时处理数百页,并且处理可能会将打印作业推送到多台打印机(即不同的办公室).我们的想法是为这个过程和未来的流程自动化我们的打印.
尝试这个:
$ftp = ftp_connect('192.168.0.10');
if(ftp_login($ftp,'username','password')){
if(ftp_put($ftp,'filetype=PDF','yourfile.pdf',FTP_BINARY)){
echo 'success';
}
}
Run Code Online (Sandbox Code Playgroud)
让我知道你得到了什么。
更新:从打印机手册第19页,您可以使用以下命令发送文件并同时设置设备选项:
ftp> put file1 filetype=postscript,tray=tray1,copies=3,resolution=600
Run Code Online (Sandbox Code Playgroud)
在该示例中,file1是要发送的本地文件名,filetype=postscript,tray=tray1,copies=3,resolution=600是远程文件名。准确来说,实际的FTP命令是:
STOR filetype=postscript,tray=tray1,copies=3,resolution=600
Run Code Online (Sandbox Code Playgroud)
使用PHP的FTP功能,PHP代码为:
ftp_put($ftp,'filetype=postscript,tray=tray1,copies=3,resolution=600','file1',FTP_BINARY);
Run Code Online (Sandbox Code Playgroud)
$ftp成功调用的连接句柄在哪里ftp_connect()。
将其放入我的第一个示例中,代码变为:
$ftp = ftp_connect('192.168.0.10');
if(ftp_login($ftp,'username','password')){
if(ftp_put($ftp,'filetype=postscript,tray=tray1,copies=3,resolution=600','file1',FTP_BINARY)){
echo 'success';
}
}
Run Code Online (Sandbox Code Playgroud)
试一试。
| 归档时间: |
|
| 查看次数: |
8896 次 |
| 最近记录: |