Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从Java打印到PDF打印机_Java_Pdf_Printing - Fatal编程技术网

无法从Java打印到PDF打印机

无法从Java打印到PDF打印机,java,pdf,printing,Java,Pdf,Printing,我想将字符串“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.PrintServi

我想将字符串
“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阅读器PDF打印机”。打印作业似乎已提交,但我不知道在哪里可以找到打印的PDF文件。从理论上讲,打印机应该询问PDF文件的位置(因为从Paint和记事本打印时会询问)。但是没有对话。工作是沉默的


如何使我的代码在打印到PDF时显示标准的Windows“另存为”对话框?

可能想看看打印机打印PDF的功能。我试着也保持沉默。我发现我的特定打印机支持的docflavors不包含pdf。在做任何事情之前,你应该试着打印一个图像文件并检查它是否静止

其次,我知道一个事实,在PrinterJob库中有一个printDialog方法,如果您想尝试使用它进行更改的话。这将打开您请求的对话框,但对docprintjob不太确定。

尝试此首选项[此处]