Android Studio

[안드로이드] android Print에대해

i-moo 2017. 4. 26. 18:43
반응형

프린터는 킷켓 (4.4)부터 할 수가 있다.


1. 데이터를 출력해 주기 위한 PrintDocumentAdapter를 생성하여, PrintManager의 print()를 호출하면 PrintJob이 생성된다.

2PrintJob이 생성되며 PrinterSpooler에 추가 되고 PrintDocumentAdapter의 onStart, onLayout, onWrite, onFinish를 호출한다.

3. 호출 한 메소드들이 Printer로 출력할 정보를 받아 File로 저장한다.

4. 저장된 File을 Printer로 출력하기 위해 PrinterSpooler는 PrintService의 onPrintJopQueued()를 호출해준다.

5. PrintService는 PrintJob으로 부터 PrintDocument를 얻어와 getData()를 호출한다.

6. getData()를 호출하면 PrinterSpooler가 보내는 데이터를 받을 수 있는 FileDescriptor를 획들할 수 있다.

7. 받은 데이터를 이용하여 Printer로 출력한다.


8. Client에서 출력할 데이터의 생성

PrintDocumentAdapter의 

onLayout()에서는 PrintDocumentInfo를 생성하여 Callback으로 전달

onWrite()에서는 PdfDocument를 이용하여 Print할 데이터를 만든 다음, 넘어온 FileDescriptor로 write를 하고, 완료되면 Callback으로 종료되었음을 알려준다.

9. PrintService에서는 PrintDocument의 getData()로 얻은 FileDescriptor로 PdfRenderer를 생성한다.

10. 마지막으로 PdfRenderer로 Bitmap을 생성하여 Printer로 출력한다.

반응형