2012-01-23 5 views
4

Java 데스크탑 응용 프로그램에서 도트 매트릭스 프린터 (Epson LX-300 II)로 보고서를 인쇄해야합니다. 보고서는 일부 그래픽 텍스트로 구성됩니다. 프린터는 USB를 통해 연결되며 CUPS를 사용하여 인쇄합니다. Printable 인터페이스 (Java에서 꽤 표준)를 사용하여 인쇄하고 있습니다.도트 매트릭스 프린터의 Linux Java 인쇄 품질

내 문제 :

텍스트 인쇄 품질이 모든 프린터 해상도 (60X60,는 120x60, 120x72)에 매우 낮다. 일부 프린터 드라이버에서는 글꼴 힌팅이 전혀없는 것처럼 보입니다. 편지는 매우 못생긴 보입니다. 필자는 같은 페이지에 그래픽을 인쇄해야하기 때문에 포트에 직접 텍스트 출력을 사용할 수 없습니다 (멋져 보입니다).

Java에서 문제가없는 것 같습니다. 동일한 응용 프로그램이 Windows에서 고품질의 텍스트와 그래픽을 인쇄하기 때문입니다. 또한 그것은 문제가 CUPS 시스템에 없기 때문에 OpenOffice 나 Abiword가 동일한 글꼴로 매우 좋은 품질의 텍스트를 인쇄합니다 (Windows보다 좋지만 여전히 좋음).

또한 글꼴에 문제가 없습니다. Windows에서 Tahoma 글꼴을 시험해 보았습니다.이 글꼴은 java/linux에서 인쇄 할 때 품질이 떨어집니다.

문제는 X.Org에서 BCI 힌팅이 아니라 화면에 표시하는 것이 좋습니다.

OpenOffice에서 PDF로 문서를 내보내고 해당 PDF를 인쇄하면 용지에 추악하지 않은 글꼴이 나타납니다. 동일한 문서가 Office에서 인쇄되면 모든 것이 정상입니다.

다른 Linux (Kubuntu 10.04, Puppy 2, Puppy 4.3.1)를 사용해 보았는데 어느 Linux에서나 동일한 효과를 얻었습니다.

어쩌면 문제는 Ghostscript에 있는데, 나는 Puppy에 9.x 버전이 있으며 여전히 동일합니다. 또는 CUPS 래스터 라이저 ('rastertoepson'또는 'foomatic-rip')에 문제가있을 수 있다고 생각합니다.

그것은 (이하 "모바일"- 품질의 사진 죄송합니다) 출력의 예입니다 :

enter image description here

난 그냥 무슨 일이 일어나고 있는지 아무 생각 없어, 제발 도움이됩니다.

- P. 내 마지막 해결책은 'ESCPrinter.java'오픈 소스 클래스를 사용하여 Epson 문서에 따라 이미지를 인쇄하는 기능을 추가하는 것입니다.

답변

0

내 생각에 자바에서 글꼴을 인식하지 못했기 때문일 수 있습니다. 다른 표준 글꼴로 기본 설정됩니다.

당신은 도움이 더 될 수있는 $JAVA_HOME/jre/lib/font 디렉토리에 java fonts에와 physical fonts

아마이 기사를 TTF 파일을 넣어해야합니다

+0

의견을 주셔서 감사합니다! Java 용 사용 가능한 모든 글꼴을 나열하는 코드를 사용하고 있습니다. 그리고 글꼴은 추한 형태의 엉성한 모양을 제외하고 Windows에서와 같은 모양입니다. 또한 어떤 응용 프로그램에서든 PDF를 인쇄 할 때와 같은 모양이없는 글꼴 때문에 Ghostscript 래스터 라이 제이션의 어딘가에서 문제를 생각할 수 있습니다. – Lord

1

당신은 setRenderingHint에게 시험을 줄 수 복사 한 일부 cal 함께 쉽게 타이핑 할 수 있습니다. TEXT_ANTIALIASING 일 수도 있지만 다른 것은 제외하지 않을 것입니다.

다른 아이디어는 화면 해상도가 인쇄 해상도로 조정된다는 것입니다. do-it-yourself printing을 사용하는 작은 자바 응용 프로그램에서이를 보여줍니다.

rotate을 수행하지 않았습니까? (그냥 사진을보고).

public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { 
    Graphics2D g = (Graphics2D) graphics; 
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT); 
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); 
    g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT); 
    g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); 
    g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_OFF); 
    g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_DEFAULT); 
    g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); 
    g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED); 
    g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); 
    g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); 
    return Printable.PAGE_EXISTS; 
} 
+0

고마워! 월요일에해볼 게. 출력을 회전시키지 않고 테스트 용으로 동일한 용지를 다시 사용하고 용지가 때때로 기울어 져 있습니다. – Lord

0

[tl; dr : 실제로 불가능합니다. 다른 프린터를 사용하거나 텍스트 모드로 전환하십시오. ]

도트 매트릭스 프린터, 특히 9 핀 종류 (예 : Epson 's LX 시리즈)는 텍스트 인쇄에 다소 최적화되어 있습니다. 그래픽을 인쇄 할 수있는 이지만 실제 해상도는 현재의 표준 프린터보다 낮은보다 낮은 입니다. 과거에는 인쇄물을 최대한 충실히 재현 할 수 있도록 출력물을 최적화해야했습니다. 자신의 바른 마음에 아무도 그 프린터에서 그래픽 모드로 텍스트를 인쇄하려고 시도했을 것입니다. 실제로는 읽을 수없는 출력을 보장합니다. 프린터의 내장 글꼴은 가독성을 위해 최적화되었지만 프린터의 특성에 관계없이 프린터 드라이버에서 래스터 화를 수행하면 결과가 최적화되지 않습니다.

엡손의 LX 시리즈와 같은 9 핀 프린터의 해상도가 너무 낮습니다. 텍스트 모드로 인쇄하지 않는 한 (직접보고 응용 프로그램을 작성하지 않은 경우 거의 불가능합니다) 더 나은 결과를 얻을 수 없습니다. 24 핀 프린터는 여전히 충분한 인쇄물을 얻을 수있는 충분한 '예비'기능을 갖추고 있지만 9 핀 프린터는 이미 그 한계에서 작동하고 있습니다.

정말 큰 글꼴 (프린터의 낮은 해상도를 상쇄하기에 충분히 큰 글꼴)을 사용하지 않는 한 글꼴 힌팅이나 다른 방법으로 어떤 속임수를 쓰든간에 다른 프린터를 사용하지 않으면 할 수있는 일은 없습니다. 문제는 프린터의 물리적 한계에 맞지 않는 래스터 화입니다.

(도트 매트릭스 프린터에 대한 보고서를 작성하는 올바른 방법은 굵은 글씨, 밑줄 등의 다양한 ESC/P 서식 지정 명령을 사용하여 가능한 '순수한'텍스트로 인쇄하는 것입니다. 그래픽이 필요하다면 해당 그래픽에 그래픽 모드를 입력 한 다음 텍스트 모드로 계속 진행하십시오. 프린터 내장형 글꼴은 프린터 작동 방식의 한계를 고려하여 가능한 한 읽기 쉽도록 최적화되어 있습니다.)

나는 아직도 9 핀 및 여러 24 핀 프린터 (모두 Epsons)를 소유하고 있으며 대부분 텍스트 모드로 구동합니다. 24- 핀 프린터를 일반 Windows (또는 무엇이든) 프린터로 사용할 수는 있지만 실제로는 9 핀 프린터를 사용할 수 없습니다. 그러나 약간의 생각으로, 나는 더 많은 현대적인 프린터에 대한 더 많은 작업을 요구하는 꽤 좋은 결과를 얻을 수 있습니다.

관련 문제