Apache PDFBox로 PDF 인쇄

Apache PDFBox를 일본어로 출력할 수 있습니다. 의 것도 있고, 지금까지 전혀 사용한 적이 없었지만 PDFBox 어떤 일을 할 수 있는 거야? 라는 것을 조금씩 조사하고 있습니다.

이번에는 PDF 인쇄 방법입니다.

아래의 공식 Document를 참고로 했습니다. (라고 할까 아래를 보면 이 페이지 보는 의미 없지만)
htps // pdf 보 x. 아파치. rg/2.0/미g라치온. html #pdfp 린칭g

PDF 파일 인쇄


    public static void main(String[] args) throws IOException, PrinterException {
        try (InputStream in = new FileInputStream("pdf.pdf")) {
            print(in);
        }
    }

    public static void print(InputStream in) throws IOException, PrinterException {
        try (PDDocument doc = PDDocument.load(in)) {

            PrinterJob job = PrinterJob.getPrinterJob();
            job.setPageable(new PDFPageable(doc));
            //プリンターのダイアログを開く
            if (job.printDialog()) {
                job.print();//印刷
            }
        }
    }

실행 결과



대화 상자가 열립니다. OK 누르면.


인쇄할 수 있는 모습. (이번에는 xps로 작성)


PDFBox로 자작하여 PDF 파일을 만들지 않고 인쇄



쓰는 방법 보면 당연히 할 수 있다고 생각합니다만, 일단 확인해 보았습니다.
    public static void print2() throws IOException, PrinterException {
        try (PDDocument doc = new PDDocument()) {
            float fontSize = 20;
            PDRectangle rectangle = PDRectangle.A6;

            PDFont font = loadFont(doc);
            float fontHeight = getFontHeight(font, fontSize);

            PDPage page = new PDPage(rectangle);
            doc.addPage(page);

            try (PDPageContentStream contents = new PDPageContentStream(doc, page)) {
                contents.setLineWidth(1F);
                contents.beginText();

                contents.setNonStrokingColor(Color.RED);
                contents.setStrokingColor(Color.BLUE);

                contents.setFont(font, fontSize);
                contents.setLeading(fontHeight);

                contents.setTextMatrix(Matrix.getTranslateInstance(10, rectangle.getHeight() - fontHeight - 10));
                contents.appendRawCommands(RenderingMode.FILL.intValue() + " Tr ");
                contents.showText("テキスト FILL");
                contents.newLine();
                contents.appendRawCommands(RenderingMode.STROKE.intValue() + " Tr ");
                contents.showText("テキスト STROKE");
                contents.newLine();
                contents.appendRawCommands(RenderingMode.FILL_STROKE.intValue() + " Tr ");
                contents.showText("テキスト FILL_STROKE");
                contents.endText();
            }

            PrinterJob job = PrinterJob.getPrinterJob();
            job.setPageable(new PDFPageable(doc));
            //プリンターのダイアログを開く
            if (job.printDialog()) {
                job.print();//印刷
            }
        }
    }

실행 결과



인쇄할 수 있었다.



후기



PrinterJob은 밝지 않습니다만, 다이얼로그 나오지 않고 인쇄도 할 수 있지요?
그래서 제대로 취급하면 서버 측에서 침묵에 인쇄하거나 할 수 있다고 생각합니다.

그런데 iText에도 인쇄 기능이 있었습니까?

좋은 웹페이지 즐겨찾기