2013-01-17 1 views
2

일반 텍스트로 인쇄 된 이스케이프 코드 (예 : 프린터 명령)를 사용할 수있는 프린터를 다루고 있습니다.PS (postscript) 파일로 프린터에 이스케이프 코드 인쇄

예를 들어 일반 텍스트 파일을 만들고 "~ TR % 10 10 20 20?"이라고 쓰면 이것을 인쇄하면 프린터가이를 프린터로 인식하고 용지에 해당 텍스트를 인쇄하지 않습니다.

포스트 스크립트 파일 (PS module을 사용하여 PHP에서 작성)을 통해이 작업을 수행하려고하면 프린터가 명령과 동일한 텍스트를 인식하도록 만들 수 없습니다. 대신 종이에 인쇄됩니다.

이 텍스트가 프린터로 보내지는 데 사용할 수있는 PS 명령/형식이 있습니까?

감사

UPDATE : 나는 (PHP + TCPDF를 사용하여)뿐만 아니라 PDF 파일로 시도했지만 하나 운이 없었다.

업데이트 2 : 샘플 코드 나는이 작업을 것입니다 어떤 식 으로든 표시되지 않습니다

$ps = ps_new(); 

ps_open_file($ps, '/var/www/data/test.ps'); 

ps_set_info($ps, 'BoundingBox', '0 0 1011 638'); 
ps_set_info($ps, 'Orientation', 'Landscape'); 
ps_set_info($ps, "Creator", "PHP"); 
ps_set_info($ps, "Title", "Test"); 
ps_set_info($ps, "Keywords", "test"); 

ps_begin_page($ps, 1011, 638); 
ps_set_parameter($ps, 'SearchPath', '/var/www/data/font'); 
$psfont = ps_findfont($ps, "ARIALN_0", "", 1); // Arial Narrow font 
ps_setfont($ps, $psfont, 10.0); 

ps_show_xy($ps, "ABC", 10, 10); 
ps_show_xy($ps, "~TR%41 4 53 11?", 10, 50); 

ps_end_page($ps); 
ps_close($ps); 
ps_delete($ps); 

header('Content-type: application/postscript'); 
header('Content-Disposition: attachment; filename="test.ps"'); 

readfile('/var/www/data/test.ps'); 
+0

수행 한 작업의 PHP 코드 예제를 제공 할 수 있습니까? – hek2mgl

+1

@ hek2mgl 샘플 PHP 코드로 편집 – Jaepil

+0

테스트 용 글꼴을 공유 할 수 있습니까? – hek2mgl

답변

2

추가. 프린터가 PostScript를 해석하지 않을 때 프린터가 임의의 이스케이프 문자를 처리 할 수는 있지만 PostScript 인터프리터에 들어가면 그렇게 할 수 없습니다.

이것은 PostScript 프로그램의 본문에서 이진 데이터 (이스케이프 문자와 일치 함)를 완벽하게 가질 수 있기 때문입니다. 프린터 입력 처리기가 대신 해당 데이터를 처리하면 PostScript가 작동하지 않습니다.

포스트 스크립트 인터프리터가 시작되기 전에 이스케이프 코드를 프린터로 보내야합니다. 또는 완료 한 후에는 중간에 보낼 수 없습니다.

+0

프린터 설명서를 검토 할 경우 은 수행하려는 모든 작업을 수행하기위한 구현 특정 포스트 스크립트 명령 인 일 수 있습니다. – agentp

+0

@George 주석에는'*'* markdown-emphasis *'*'를 사용할 수 있지만 html은 사용할 수 없습니다. : –

4

글쎄, PHP에 대해서는 잘 모르지만, 확실히 ps_show_x_y을 사용하고 싶지는 않습니다. 이는 인쇄 된 페이지에 텍스트를 표시하는 작업 인 포스트 스크립트 show 운영자로 의심의 여지없이 매핑됩니다.

docs에서 원하는 방법은 ps_include_file입니다. 모든 ps_module 항목을 무시하고 바로 파일에 기록하십시오. 그리고 켄 (Ken)이 말했듯이, 프린터가 프린터를 인식하게하려면 다른 포스트 스크립트 코드보다 먼저 사용해야합니다. 특히 마술 번호 '%!'앞에 있어야합니다. 프린터가 포스트 스크립트 프로그램을 감지하고 적절한 모드로 들어가는 데 사용합니다.

물론 이렇게하면 ps 파일이 옮겨지지 않게됩니다. gs, distiller, 다른 프린터들 중 어느 누구도 이것을 postscript 문서로 받아들이려고하지 않을 것입니다.

george가 주석에 언급 한 것처럼,이 제어 코드가 수행 할 수도있는 (아직 공개하지 않은) 포스트 스크립트 쪽에서도 사용할 수 있습니다. 할 일은 프린터에 대한 PPD 파일을 찾는 것입니다 (Postscript Printer Definition). 이 파일에는 프린터 관련 작업을 수행하기위한 포스트 스크립트 스 니펫이 들어 있습니다. 심플한 DSC 주석과 겉으로는 기이 한 포맷으로 프로그램에 의해 해석 될 수 있도록되어 있지만 실제로는 사용 가능한 것으로 가정하고 필요한 모든 스 니펫을 쉽게 찾을 수 있어야합니다.

+1

좋은 대답! 당신은 또한 프린터가 OS가 주장하지 않는 Postscript를 직접 받아 들일 것이라고 가정하지만, OS 프린터 드라이버 스택을 통해 파일이 래스터 시퀀스로 프린터로 변환 될 수 있습니다. 이 경우에만 해결 방법은 프린터 드라이버 **에 ** 제어 코드를 보내어 OS 드라이버 스택을 거치지 않고 인쇄하는 것입니다 (다른 인쇄 작업에있을 것입니다). – jsbueno

+0

이것은 여러 가지 이유로 실행 가능하지 않을 수 있지만 OS를 거치지 않고 직접 "직접"프린터에 연결하는 방법이 있습니다. 예를 들어, JetDirect가있는 HP 프린터는 모두 포트 9100 IIRC에서 수신 대기합니다. 프린터 9100 또는 텔넷 프린터 9100 집행 '. –

+0

이것은 프린터의 사용 설명서입니다 [사용자 설명서] (http://intraproc.com/downloads/Datacard/SD%20360%20%20SD%20260/Manual/539957- 001_XPS__UserGuide.pdf) – Jaepil

관련 문제