2013-04-17 79 views
1

我有一個php腳本,它需要一個發票號碼並生成一個帶有所有相關信息的PDF發票,當腳本完成後,PDF就會顯示在用戶瀏覽器的屏幕上。我很想知道如何才能自動打印PDF?我意識到,由於安全/垃圾郵件問題,可能沒有使用php或javascript的方法。用PHP自動打印網頁

不幸的是,手動打印頁面並不是一個真正的選擇,因爲用戶當前有兩臺打印機,在當前基於Access的系統中,一個發票被髮送到該顏色,兩個發票被髮送到黑白打印機。這一切都是自動完成的,但現在由於某些情況,我想使用PHP作爲系統的一大部分已經是基於PHP的。

我曾考慮過使用基於Linux的機器,並嘗試使用python webserver來獲取PDF並打印它,但我不知道這將需要什麼或如何去做。任何反饋都會很棒!

回答

0

你可以使用VBScript做嘗試這種

<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT> 
       <form> 
       Printing webpage without prompt window. As of now it's possible with VBScript(IE). 
       <br/> 
       <button onclick="Print()">Print Now</button> 
       <br/> 

       </form> 
       <script language="VBScript"> 
       Sub Print() 
        OLECMDID_PRINT = 6 
        OLECMDEXECOPT_DONTPROMPTUSER = 2 
        OLECMDEXECOPT_PROMPTUSER = 1 
        If DA Then 
        call WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1) 
        Else 
        call WebBrowser1.IOleCommandTarget.Exec _ 
         (OLECMDID_PRINT ,OLECMDEXECOPT_DONTPROMPTUSER,"","","") 
        End If 
       End Sub 
       </script> 
+0

那麼PHP實際上會將html轉換爲您看到的PDF文件,這是我需要的,因爲該文件將被打印,但也被保存並用於發送電子郵件等,因此PDF非常理想。我可以使用Print();功能在Javascript中,但只是打開對話框,並不會自動打印。 – Alex

+0

這個代碼直接打印 –

+0

這看起來很有趣,但似乎並沒有工作,可能是我的錯,但我需要安裝任何東西或設置任何東西? – Alex

0

嘗試此代碼對Java腳本

<A HREF="javascript:window.print()">Click to Print This Page</A> 


You can set it to print off of an image: 
    <A HREF="javascript:window.print()"> 
    <IMG SRC="print_image.gif" BORDER="0"</A> 

    And yes, you can set it to trigger off a button: 
<FORM> 
<INPUT TYPE="button" onClick="window.print()"> 
    </FORM> 

你不能得到任何想法鑑於這個網站

http://www.htmlgoodies.com/beyond/javascript/article.php/3471121/Print-a-Web-Page- Using-JavaScript.htm 
1

IMO你最好的選擇,因爲你所說的,將是使用Linux來打印它。

wget http://1.2.3.4/invoice.pdf 
pdf2ps invoice.pdf invoice.ps 
lpr -Pcolor invoice.ps 
lpr -Pbw -#2 invoice.ps 

類似的東西,也許應該工作。

+0

我認爲這是最好的方式,以及@DimeCadmium,我會嘗試這個選項。我相信這段代碼是完美的,但理想情況下會搜索一個文件夾,因爲發票網址每次都會有所不同。 – Alex

+1

您也可以使用例如'wget -O invoice.pdf http://1.2.4.5/invoice.php?id = 1234',將其保存爲不同的名稱。或者,如果pdf2ps接受STDIN(我不確定),你可以管它:'wget -O - http:// blabla/bla | pdf2ps - invoice.ps' – DimeCadmium

+0

+1,聽起來像是一個很好的解決方案。這絕對聽起來像「用戶」可能只是一個cron-job! – Geoff