우선 Clojure를 처음 사용했습니다. 나는 문자열을 프린터로 출력하는 방법을 궁금해했다. 이해하기 때문에 Java interop을 사용해야합니다. 나는 코드 줄을 자바 코드를 검색하고 발견Clojure에서 기본 시스템 프린터로 문자열을 보내는 방법
import java.awt.*;
import java.awt.print.*;
public class foo implements Printable {
private static Font sFont = new Font("Serif", Font.PLAIN , 64);
public int print(Graphics g, PageFormat Pf, int pageIndex)
throws PrinterException {
if (pageIndex > 0) return NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D)g;
g2.setFont(sFont);
g2.setPaint(Color.black);
g2.drawString("Save a tree!", 96, 144);
return PAGE_EXISTS;
}
public static void main(String[] args) {
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(new foo());
if (job.printDialog()) {
try {
job.print();
}
catch (PrinterException e) {}
}
System.exit(0);
}
}
내가이 PrinterJob
를 작성하고 인쇄 설정 그 이후 proxy
및 으로 Printable
인터페이스를로드 할 필요가 있음을 이해하지만, 내가 때를 혼란 이걸 Clojure로 번역하려고합니다. 내 시도가 지금까지 이것이다 : Graphics 클래스가 Clojure에 해당 번역 왜, 난 그냥 그래픽을 전달할 수 있음을 의미 일어나고있는 방법의 Graphics2D에 전달되는 첫 번째 샘플 코드 또한
(ns controller.core
(:gen-class)
(:require [clj-http.client :as client]
[cheshire.core :refer :all]
[clojure.edn :as edn]
[clojure.java.io :as io]
[clojure.string :as str]
)
(:import [java.awt.print PrinterJob Printable PrinterException]
[java.awt Graphics2D Color]
)
)
(defn make-page []
(proxy [Printable] []
(print
[graphics page-format page-index]
(if (> page-index 0)
Printable/NO_SUCH_PAGE
(let [g2 graphics]
(.drawstring g2 ("foooooooo" 96 144))
Printable/PAGE_EXISTS
))
)
(defn prnt []
(let [print-j (PrinterJob/getPrinterJob)]
(.setPrintable print-j (make-page))
(.print print-j)))
(defn -main
[& args]
(prnt)
)
? 또한 Color 클래스와 Font를 설정하지 않으면 기본값으로 설정됩니까? 누구든지 설명 할 수 있다면 나는 감사 할 것이다!
을! 나는 그것을 시험해 보았지만 행운이 없었다. Java에 대한 지식이 부족하여 Java interop에 뭔가 빠져 있다고 생각합니다. : / – narocath