我想将字符串"Hello world"
打印到PDF。这是我的代码:
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.ServiceUI;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.event.PrintJobAdapter;
import javax.print.event.PrintJobEvent;
public class App {
public static void main(String[] args) throws Exception {
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null);
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
PrintService service = ServiceUI.printDialog(null, 200, 200, services, null, flavor, pras);
// prints the famous hello world! plus a form feed
InputStream is = new ByteArrayInputStream("hello world!\f".getBytes("UTF8"));
Doc doc = new SimpleDoc(is, flavor, null);
DocPrintJob job = service.createPrintJob();
job.print(doc, pras);
}
}
显示“打印”对话框时,选择“Foxif Reader PDF Printer”。打印作业似乎已提交,但我不知道在哪里可以找到打印的PDF文件。从理论上讲,打印机应询问PDF文件的位置(因为从Paint和Notepad打印时会询问)。但是没有对话框。这份工作是沉默的。
如何在打印到PDF时使我的代码显示标准Windows“另存为”对话框?
答案 0 :(得分:0)
可能想看看你的打印机打印pdf的能力。我也试过沉默。我发现我的特定打印机支持的docflavors不包括pdf。在此之前,您应该尝试打印图像文件并检查它是否仍然静音。
其次,我知道如果您想尝试使用它进行更改,那么PrinterJob lib中的printDialog方法。这会打开您请求的对话框,但不太确定docprintjob。