2011-10-20 5 views
2

기본 또는 지정한 프린터로 웹 페이지 집합을 인쇄하는 CLI PHP 응용 프로그램을 설정하려고합니다. CLI에서 실행중인 PHP 5.2.11이 설치된 Windows 7 시스템에 있습니다. 인쇄 기능을 테스트하기 위해 PHP_printer.dll을로드하고 PRINTER_ENUM_LOCAL에 제공된 정확한 프린터 이름을 사용하여 Onenote (파일로 인쇄) 옵션으로 인쇄합니다.
업데이트 : 여기에 최신 코드입니다 : 내가 올바른 프린터에 빈 페이지를 인쇄하려면이 코드를 왔PHP에서 프린터로 인쇄

$handle = printer_open("Send To OneNote 2010"); 
printer_start_doc($handle, "My Document"); 
printer_start_page($handle); 

$filename='index.html'; 
$fhandle=fopen($filename, 'r'); 
$contents = fread($fhandle, filesize($filename)); 
fclose($fhandle); 

printer_set_option($handle, PRINTER_MODE, "RAW"); 
printer_write($handle,$contents); 

printer_end_page($handle); 
printer_end_doc($handle); 
printer_close($handle); 

,하지만 난 printer_write을 전달하는 문자열을 인쇄 할 수 없습니다입니다. $contents이 내 test html 파일의 내용으로 올바르게 채워 졌음을 확인했습니다. 아무리 두 번째 arg (인쇄 할 문자열)로 제공하더라도 빈 페이지가 나타납니다. 최소한 페이지에 텍스트를 인쇄 할 수 있도록 내가 놓친 것이 있습니까?

또는 PHP/javascript 파일을 사용하여 더 좋은 방법이 있습니까? 내가 뭘 하려는지 CLI 애플 리케이션을 통해 (CSS를 포함) 나타나는 것처럼 웹 페이지를 인쇄, 웹 사이트는 PHP로 작성된 및 복잡성을 최소화하기 위해 노력하고있어. 이들을 인쇄하는 더 좋은 방법이 있다면 (PDF로 변환하고 인쇄 옵션이 분명히 있습니다) 저는 열어 봤지만 이것이 PHP에서 가장 단순한/사실상의 방법이라고 생각합니다.

답변

0

나는 여러 해 동안 printer.dll로 엉망이되어서 아프다.

는 많이 사용하면 확인,하지만 난이 응용 프로그램을 구입하지 http://www.coolutils.com/TotalPDFPrinter

그리고 그것은 나를 위해 잘 작동 PHP에서 cmd를 라인에서 나에게 인쇄 PDF 파일을 할 수 있지만,이 팝업 화면을 가지고있는 서버 버전을 구입할 경우에만 제거 할 수 있습니다 (아파치가 서비스로 실행중인 경우 필요합니다). 분명히 비 팝업 버전은 비용이 많이 든다.

내가 고민하는 한 가지는 사용 가능한 프린터 목록을 얻는 것이 었습니다. 그래서 C#에서 프린터 목록을 일반 텍스트로 뱉어 내고 PHP를 호출하여 드롭으로 넣습니다. 내 웹 양식 목록.

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Drawing.Printing; 

namespace printerlist 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      foreach (String printer in PrinterSettings.InstalledPrinters) 
      { 
       Console.WriteLine(printer.ToString()); 
      } 
     } 
    } 
} 
+0

감사합니다. 팁은 없어지지 만 서버 버전을 자동화 된 프로세스로 가져와야합니다. –

2

알고있는 한 php_printer.dll을 사용해야합니다. here을 확인하십시오. 그런 다음, php_printer.dll 확장자를 php.ini에 추가하십시오. 네가 그 일을했다면 ...

프린터가 설치되어있는 곳에서 ip/route를 적격으로 입력하면 트릭을해야한다. printer_open('\\\\xx.x.xx.xx\\_printername_');과 같은 것입니다. (로컬 프린터는 수동으로 서버를 추가 할 필요가 없습니다.)

프린터를 확인하려면 printer_list(PRINTER_ENUM_LOCAL | PRINTER_ENUM_SHARED)과 같은 것을 시도하십시오. php.ini에는 printer.default_printer 지시어와 같은 것이 있습니다. 꽤 오래 전에 php 5.x 설치에서 테스트되었습니다. 행운을 빕니다.

+0

내가 지금 일하고 그 부분을 들어 왔 내가 올바른 프린터하지만 아무것도에 빈 페이지를 인쇄 할 수 있습니다, 내 현재 상황에 업데이트되었습니다 (죄송합니다 제가 질문을 writting에 조금 성급한했다) . –

+0

'printer_write'는 문자열을 출력하므로 업데이트 된 코드가 작동해야합니다. 외부 PHP/txt 파일로 테스트 할 때'fopen()','fread()'및'fclose()'를 사용해보십시오. 그래도'printer_open'이 로컬 (?) 프린터에 대해 올바르게 정의되었다고 생각한다면, 다른 곳을 봐야합니다. – AleksanderKseniya

+0

그냥 시도하고 파일에서 텍스트를 잘 얻지 만 페이지가 여전히 비어 있습니다, 내 질문에 내 코드를 업데이트했습니다. 또한 OneNote는 인쇄중인 "파일 형식"을 읽을 수는 없지만 인쇄 할 모든 화면/용지 프린터는 빈 페이지를 제공한다고 불평합니다.나는 이것을 작동 시키길 원했지만, 우리의 VB 애플리케이션을 대신 인쇄하는 것이 최선의 방법 인 것처럼 보였다. –

관련 문제