java 프린터 출력 예제

Java에서 스트리밍 인쇄 서비스를 사용하는 것은 매우 쉽습니다. 필요한 모든 작업: lookupPrintServices() 호출에서 지정할 수 있는 첫 번째 매개 변수는 인쇄할 데이터의 형식과 해당 데이터가 저장되는 방법을 설명하는 DocFlavor 클래스의 인스턴스입니다. 대부분의 경우 Java에는 미리 정의된 많은 인스턴스가 포함되어 있으므로 DocFlavor의 새 인스턴스를 만들 필요가 없으므로 해당 인스턴스 중 하나에 대한 참조를 조회인쇄서비스()로 간단히 전달할 수 있습니다. 그러나 DocFlavor 생성자 및 메서드를 살펴보고 인쇄 서비스에서 인스턴스를 사용하는 방법을 살펴보겠습니다. Java는 처음 도입 된 후 대부분의 면에서 매우 빠르게 성숙되었지만 오랫동안 인쇄는 Java의 가장 약한 점 중 하나였습니다. 사실, Java 1.0은 인쇄에 대한 지원을 전혀 제공하지 않았습니다. Java 1.1에는 java.awt 패키지에 PrintJob이라는 클래스가 포함되어 있지만 해당 클래스에서 지원하는 인쇄 기능은 다소 조잡하고 신뢰할 수 없었습니다. Java 1.2(또는 “Java 2”)가 도입되었을 때, 프린터작업 및 새로운 java.awt.print 패키지에 정의된 다른 클래스 및 인터페이스를 중심으로 설계된 인쇄를 위한 완전히 별도의 메커니즘(Java 2D 인쇄 API라고 함)이 포함되었습니다. 이렇게 하면 PrintJob 기반 인쇄 메커니즘(AWT 인쇄라고도 함)이 크게 사용되지 만 PrintJob은 더 이상 사용되지 않았으며 적어도 이 글의 경우 기술적으로 지원되는 클래스입니다. 예를 들어 문자 배열이나 문자열에 GIF 이미지의 표현을 저장하지 않으며 Reader 구현을 통해 액세스할 수 없습니다. 반면에 “character” 데이터는 특수한 유형의 이진 데이터일 뿐이므로 텍스트 정보를 바이트 배열에 저장하거나 InputStream또는 URL을 통해 액세스할 수 있도록 하는 것이 전적으로 적절합니다. PrintServiceLookup 클래스에 정의된 세 가지 정적 방법 중 하나를 사용하여 프린터를 찾습니다.

세 가지 방법 중 가장 간단한 방법은 lookupDefaultPrintService()이며, 이름에서 알 수 있듯이 기본 프린터를 나타내는 서비스에 대한 참조를 반환합니다: 표 2에 나열된 클래스는 DocFlavor.URL 클래스 내에 정의되어 있지만 다른 방법은 어떻습니까? DocFlavor 내에 정의된 6개의 내부 클래스? 다시 말하지만 나중에 SERVICE_FORMATTED에 대한 토론을 연기하지만 이진 데이터 형식과 관련된 클래스의 경우 세 가지 (BYTE_ARRAY, INPUT_STREAM 및 URL)에는 표 2에 표시된 이름이있는 내부 클래스가 포함됩니다. 예를 들어 gif 데이터를 바이트 배열에 로드한 경우 다음과 같은 코드를 사용할 수 있습니다. : DocFlavor 인스턴스를 만들 때 필요한 두 인수는 모두 문자열 인스턴스이며 하나는 MIME(다목적 인터넷 메일 확장) 형식을 나타내고 다른 하나는 표현 클래스의 이름입니다. MIME 형식은 DocFlavor에서 인쇄할 데이터의 유형을 설명하는 데 사용됩니다. 예를 들어 GIF 파일을 인쇄하는 경우 MIME 유형의 이미지/gif가 있는 DocFlavor를 사용해야 합니다. 마찬가지로 HTML 문서에 텍스트 정보 또는 텍스트/HTML을 인쇄하는 경우 MIME 유형의 텍스트/일반텍스트를 사용할 수 있습니다. 먼저 프린터 작업을 만듭니다. 프린터 작업 및 대부분의 다른 관련 클래스를 나타내는 클래스는 java.awt.print 패키지에 있습니다. J2SE 1.3에서 PrintJob의 기능이 확장되어 java.awt 패키지 내에서 적절하게 명명된 JobAttributes 및 PageAttributes 클래스를 사용하여 작업 및 페이지 속성을 설정할 수 있도록 확장되었습니다.

J2SE 1.3이 출시되면서 인쇄 기능은 상당히 견고했지만 완전히 분리된 두 개의 인쇄 시설과 관련된 혼동을 제외하고는 몇 가지 문제가 여전히 존재했습니다. 한 가지, 두 시설 모두 콘텐츠를 인쇄할 렌더링을 위해 java.awt.Graphics 클래스의 구현을 사용했기 때문에 인쇄해야 하는 모든 것을 그래픽 이미지로 렌더링해야 했습니다.

©2019 DemiJohn

Log in with your credentials

Forgot your details?