Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript打印本地文件_Javascript_Php_File_Printing - Fatal编程技术网

使用javascript打印本地文件

使用javascript打印本地文件,javascript,php,file,printing,Javascript,Php,File,Printing,今天,我在php+javascript+html+css方面遇到了一个严峻的挑战: 我正在创建一个“授权+打印”的应用程序:该应用程序必须在本地apache(最好在windows下)中运行,并且需要连接到云中的DB。那很容易。通过用户身份验证后,必须显示授权文件的列表,这也是一项简单的任务。它起作用了。但现在有一个疯狂的事情发生了:我想打印它们,而不让用户选择和查看任何打印选项,只有一个按钮“打印”。打印配置在一个.txt文件中,我需要配置打印,将文件和配置发送到打印机 我搜索了很多,但我只看到

今天,我在php+javascript+html+css方面遇到了一个严峻的挑战:

我正在创建一个“授权+打印”的应用程序:该应用程序必须在本地apache(最好在windows下)中运行,并且需要连接到云中的DB。那很容易。通过用户身份验证后,必须显示授权文件的列表,这也是一项简单的任务。它起作用了。但现在有一个疯狂的事情发生了:我想打印它们,而不让用户选择和查看任何打印选项,只有一个按钮“打印”。打印配置在一个.txt文件中,我需要配置打印,将文件和配置发送到打印机

我搜索了很多,但我只看到“打印此页面”按钮或shell解决方案(gsview和gsprint for windows,但我无法使用它们,因为我无法配置打印选项)。我需要更复杂的东西。你能帮我吗?(我现在正在尝试fpdf,但是……天哪,我不明白这是否可以用来做我想要的事情

非免费/已安装的解决方案也可以提供帮助

此外,我需要打印多个文件,但这是可选的(我可以执行“while”之类的任何操作)


PD:很抱歉我的英语水平。

从客户端打印=通过javascript形成浏览器

无法从客户端(即从浏览器内部)执行此操作。 有一些黑客的解决方案,可能适用于IE,比如这里的:,但通常“如果您尝试打印,对话框将弹出”=默认行为“window.print()”

从服务器端打印

基本上,您使用服务器端(PHP)来打印文档,而不是客户端。 因此,您可以使用Ajax请求(用户单击打印按钮)将要打印的文件名或内容传递到服务器上的“print.php”文件,该文件将内容推送到打印机

当然,您必须知道用户希望在哪台打印机上打印内容

从PHP打印有几种方法

一种选择是使用
php\u打印机
扩展:

$handle = printer_open(); 
printer_set_option($handle, PRINTER_MODE, "raw"); 
printer_write($handle,$myfile); 
printer_close($handle);
或者将
复制
打印
到打印机:

exec('copy C:\file.txt com1');
exec('copy C:\file.txt lpt1');
exec('print /d:LPT1: C:\file.txt');
如果您有网络打印机,您可以尝试将内容发送到网络地址。 有一些PHP实用程序可用于LPR:

参考:


评论中的问题:如何在Windows上从PHP设置打印机选项

这在Linux上非常容易,因为lpr接受选项
lpr
——但在Windows上不是这样。因此,以下是一些Windows特有的配置打印机的技巧:

exec('copy C:\file.txt com1');
exec('copy C:\file.txt lpt1');
exec('print /d:LPT1: C:\file.txt');
Windows7有
PRINTUI.EXE
——是
RUNDLL32 PRINTUI.DLL、printuitery的缩写

有关示例,请参见

您可以手动配置打印机,例如激活双面打印模式, 然后保存设置文件并在从PHP打印时重新使用。 这允许使用多个打印机配置文件

最简单的方法是在环境中配置打印机,然后按名称访问它,
“Printer-HP-XY-DuplexOn-2PagesOn1”。换句话说,它是在PHP外部配置的,而不是从PHP内部配置的,只能从那里访问。

除非这是一台联网打印机,否则无法在不显示打印对话框的情况下从浏览器打印。听起来他可能想从服务器端(apache/PHP)打印.@epascarello请不要告诉我:阅读以下内容:如何配置mozilla,使其不显示打印对话框,并在预定打印机中使用预先设置的首选项进行打印。这是我需要的一小部分。@DigitalChris:我不需要从服务器端打印,可以从客户端完成(这是一个本地安装的apache:服务器和客户端将是同一个CPU)@BarragánLouisenbairn您正在为特定用户更改浏览器。如果您想让任何页面开始随机打印100个文档,这很好。是的,这是主要的答案,现在我正在与“如何使用PHP打印到LPR”进行斗争。你知道你是否可以在发送文件之前配置打印?我已经附上了我的答案。好的,完美的答案,我会让你在有15个代表时投票。我只是补充一点信息:我发现了如何“在windows中配置驱动程序”。安装资源工具包工具windows Server 2003(从这里:可以使用兼容模式在win 7 x64中安装它,并选择windows->windows Server 2003的早期版本中的工作)。然后,您可以使用“setprinter.exe”命令来配置它。我现在正在学习如何使用它。(配置64台打印机,不谢谢:_D?“setprinter.exe”-旧时代的另一个好东西:)我发现您也可以使用PowerShell:Set PrintConfiguration-PowerShell 2.0是隐藏的,以前安装在Windows 7中:查看此链接:(您的内部有一个在Win7内部安装v3.0的链接: