아마 안드로이드 개발자 분들이 많을 것 같지만 프린터 관련 기능을 넣으며 제가 따로 적어놨던 프린트 흐름에 대해서 steemit에 공유하고 싶어 올리게 되었네요~
steemit을 시작한지 얼마 안되서 올려도 되는 글인지 아닌지 모르지만 올려봅니다!!
문제시 수정을 하거나 삭제하겠습니다~ steemit 선배님들 많이 알려주세요 ㅎㅎㅎ
프린터는 킷켓 (4.4)부터 할 수가 있다.
데이터를 출력해 주기 위한 PrintDocumentAdapter를 생성하여, PrintManager의 print()를 호출하면 PrintJob이 생성된다.
PrintJob이 생성되며 PrinterSpooler에 추가 되고 PrintDocumentAdapter의 onStart, onLayout, onWrite, onFinish를 호출한다.
호출 한 메소드들이 Printer로 출력할 정보를 받아 File로 저장한다.
저장된 File을 Printer로 출력하기 위해 PrinterSpooler는 PrintService의 onPrintJopQueued()를 호출해준다.
PrintService는 PrintJob으로 부터 PrintDocument를 얻어와 getData()를 호출한다.
getData()를 호출하면 PrinterSpooler가 보내는 데이터를 받을 수 있는 FileDescriptor를 획들할 수 있다.
받은 데이터를 이용하여 Printer로 출력한다.
Client에서 출력할 데이터의 생성
PrintDocumentAdapter의
onLayout()에서는 PrintDocumentInfo를 생성하여 Callback으로 전달
onWrite()에서는 PdfDocument를 이용하여 Print할 데이터를 만든 다음, 넘어온 FileDescriptor로 write를 하고, 완료되면 Callback으로 종료되었음을 알려준다.PrintService에서는 PrintDocument의 getData()로 얻은 FileDescriptor로 PdfRenderer를 생성한다.
마지막으로 PdfRenderer로 Bitmap을 생성하여 Printer로 출력한다.