FPDF 可以直接列印嗎?

edited 十月 2013 in 進階PHP討論
一、請問FPDF可以不要產生一個PDF檔,顯示在瀏覽器上面;而是直接按下一個列印鈕(列印),直接由印表機印出。
二、簡單的說就是我在網頁上面寫出「列印」的文字,使用者按下後就可以直接由印表機列印,而不是先產生PDF做預覽的動作再使用者按下印表機的圖示才可以列印。
三、可否給一個範例,謝謝。例如印出今天的日期。
或許這個問題有點白痴,但是我由google找了好久,就是沒有直接列印的參考指令,以前我用delphi只要打QuickRep1.Print;即可列印,若要預覽才打QuickRep1.Preview;即可預覽,再自行決定是否要印。

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=2513

評論

  • edited 三月 2007
    剛才簡單看了一下, 目前還沒有直接列印的功能(如果我說錯, 請指正).
    網友建議的用法是, 用個SIZE=0的iframe (frame) 先接住PDF內容.
    然後再寫CODE把它印出. 供你參考先~
    如果有更好的方法, 歡迎一起分享討論!
  • edited 三月 2007
    一、因為我在delphi寫了一些套印的軟體,想轉來php,因為有delphi for php的軟體出現,所以想學php?試想如果套印支票的時候,每一次都要先預覽再列印,速度必定會大幅下降,使用者也會感到不便。
    二、那請問可以給一個簡單的範例嗎?因為我不會php
    三、我的網站,我用delphi寫的套印軟體 http://www.myhome.url.tw/我想可能的話我要改成php來寫,如果FPDF不行的話有無其他的報表程式可以作到?
  • edited 三月 2007
    可以,但不要忘了php 是在 server 端執行的,所以 php 將使用 server 端設定的印表機輸出列印資料。

    請把設計思維整個切換到 client-server 架構,然後想想你的軟體運作環境是否方便從 server 端的印表機輸出資料。如果是公司內部那就可以,因為公司內部大部份是將資料集中到網路印表機輸出,當然也可以讓 php 直接把 pdf 列印輸出到網路印表機。如果是公開環境,使用者坐在自己家裡上網,那就不行了。

    php 運行於 unix類系列時,請參考該系統的列印管理程式。例如 Linux 常見的 CUPS ,它支援pdf列印。所以令 php 執行 lp/lpr 指令即可。php 運行於 windows系統者,參考 Printer functions - 查詢 printer_open() 。
  • edited 三月 2007
    因為我才剛要踏入PHP的領域,所以才用之前Delphi的想法來問問題。
    我想現在php的執行環境之安裝不會太難,如果我寫了程式,希望使用者能單機、web讓他自由選擇。如果使用免安裝版php軟體甚至可以做到放入隨身碟即可執行,只是不知道他的率如何?
    我是用於公司內部只是想將套印的過程簡化。
    謝謝您的回答,我再去找相關的資料好了,謝謝您。
  • edited 三月 2007
    聰明的programmer 不喜歡包山包海,他們會儘可能調用現有工具完成工作。列印 pdf ?那就直接調用 pdf 的閱讀工具列印吧。但是...

    在 unix 底下列印 PDF 文件非常簡單,CUPS支援列印pdf,所以直接令 lp 列印 pdf 就對了,不用多說。

    在 windows 底下列印 PDF 文件... 可以,直接呼叫關聯程式(通常是 acrobat reader)列印,但是你要手動關閉 acrobat 視窗... 這是唯一的問題。
    <?php
    $pdfFile = 'c:\1.pdf';
    $printerName = 'FinePrint'; //印表機名稱
    
    $acroReaderFileName = 'acrord32.exe';
    $acroReaderDir = 'C:\Progra~1\Adobe\Acroba~1.0\Reader';
    
    $acroReaderFilePath =  $acroReaderDir . DIRECTORY_SEPARATOR . $acroReaderFileName;
    
    $printCommand =<<<PRINT_COMMAND
    $acroReaderFilePath /t "$pdfFile" "$printerName"
    PRINT_COMMAND;
    
    echo $printCommand, "\n";
    exec($printCommand);
    ?>
    

    同樣是呼叫外部程式列印pdf ,和 unix 相比,在 windows 下做這件事實在是笨拙到令人痛恨。這就是 GUI 的缺點,什麼事都要使用者親手去做。
  • edited 三月 2007
    您這個方法應該可行(我目前對PHP還很陌生看不太懂),我試試看,謝謝您,有勞你寫這個範例出來。
    我的網站有一些程式,如果您用的到,就免費送您。
    我看過您的網站,內容很廣,很不錯,加油!!
    再一次感謝您。
  • edited 三月 2007
    我想這個需求應該不只 php 用得到,python 或 ruby 等工具也都會有這種需求。所以我又去搜尋一遍 windows 平台上可以指令列工具列印 pdf 的工具。

    找到了兩套:
    http://www.pdf-tools.com/
    3-Heights™ PDF Printer and Printer Pro Shell
    這套是商業軟體,要付費購買。好處是它本身可獨立運作,不需要依賴 acrobat/acrobat reader 。

    http://www.esnips.com/web/PDFTools
    pdfp
    這是一個 front-end ,它會偵測 PDF 的關聯程式(通常是 acrobat reader) ,並呼叫它列印文件,且列印後會主動關閉。

    以上面的工具改寫:
    <?php
    $pdfFile = 'c:\1.pdf';
    $printerName = 'FinePrint';
    
    $acroReaderFilePath =  'c:\tools\pdfp.exe';
    
    $printCommand =<<<PRINT_COMMAND
    $acroReaderFilePath -p "$printerName" "$pdfFile"
    PRINT_COMMAND;
    
    echo $printCommand;
    exec($printCommand);
    
    ?>
    

    That's work. :)
  • edited 三月 2007
    您不但很熱心 而且功力很高,不知您住那裏在台灣嗎?如果是,真想有空去拜訪您。
    記得教我Delphi的師傅(網友),他也是很利害,所以我的Delphi才能小有成就。
    我準備這星期去買一本php的入門書,不知道您有沒有建議的書籍,等我php 稍具基礎時,一定會將您給我的這兩個範例,都試一次的。
    可不可以順便問您,您是用什麼開發php的?
    謝謝您。
  • edited 五月 2007
    如果你是寫 delphi 的, 那你可以用 fastreport server 版. 他有一份 demo 本身就很完整. 才 2mb 多的 exe. 有這份你就直接用他 exe 設計報表. 之後你就用網址叫用報表出來. 也可以在網址內加上參數傳進報表內. 報表第一次進去是秀 html 的版本. 比較快. 你要印時. 他就產生 pdf 在網頁內. 你就可以印了. pdf 就是希望他套表列印時比較準.
    要是其他不列印的報表. 可以用 php report maker. 完全不用寫程式就可以產生出很多分析報表.
    另外要是要寫 php, 你可以試試 php maker 產生出來的碼. 不過我想說的是用 ruby on rails 吧. 你遲早會要學的. 我以前寫很多 delphi 的程式. php 是用 php maker 產生出來再去修改. 可是 php 的碼太多了, 要改很累. 用 rails 程式少了10倍以上. 要改什麼都快. 我當初是為了將來能快速反應修改系統才連 delphi 都強制退休. delphi 寫的東西很好. 可是就是網頁上不行. 現在是什麼事務都在網上打一打就解決的時代, exe 是做不出服務網頁來的. rails 真是很快. 省下的時間可以多做很多事.
Sign In or Register to comment.