gpt4 book ai didi

java - 向 Java PrintService 打印作业提供多个文档?

转载 作者:行者123 更新时间:2023-12-01 04:44:30 26 4
gpt4 key购买 nike

我正在使用以下方法将 pdf 文档打印到我的打印机。如果我只想打印一次,效果很好,但多次打印则需要更长的时间。

public static void print() 
{
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null);
FileInputStream psStream = null;
try
{
psStream = new FileInputStream(System.getProperty("user.home")+"\\My Documents\\document.txt");
}
catch (FileNotFoundException e)
{
System.out.println(e);
}
if (psStream == null)
return;

if (services.length > 0)
{
PrintService myService = null;
for (PrintService service : services)
{
System.out.println(service.getName());
if (service.getName().contains("printer_name"))
{
myService = service;
break;
}
}
DocPrintJob printJob = myService.createPrintJob();
Doc document = new SimpleDoc(psStream, flavor, null);

try
{
printJob.print(document, null);
} catch (PrintException e)
{
System.out.println(e);
}
} else
{
System.out.println("No PDF printer available.");
}
}

因此,如果我想打印文档五次并将 print() 放入循环中,则每次打印文档之间会有相当长的延迟。这对我来说是有意义的,因为必须为每个文档重新建立与打印机的连接,并且必须重新发送文档。有什么方法可以使用此 API 多次为打印作业提供相同的文档吗?

我想值得注意的是,我尝试将 printJob.print(document,null) 命令放入生成 PrintException: 已打印 的循环中。也许如果有一种方法可以让它等到当前文档完成后再发送下一个文档,那么它可以工作吗?这里不知所措。谢谢。

@mthmulders:我尝试了以下方法,但只打印了一份副本。我做错了什么吗?

    Doc document = new SimpleDoc(psStream, flavor, null);
PrintRequestAttributeSet set = new HashPrintRequestAttributeSet();
set.add(new Copies(5));

try
{
printJob.print(document, set);
} catch (PrintException e)
{
System.out.println(e);
}

最佳答案

如果你想打印一个文档五次,我想你必须创建一个 PrintRequestAttributeSet并输入 Copies属性中包含您想要拥有的副本数量。

将此 PrintRequestAttributeSet 作为第二个属性提供给您的 printJob.print(...) 调用,应该没问题。

我现在无法尝试,但按照 Javadoc 这似乎是实现它的方法。

关于java - 向 Java PrintService 打印作业提供多个文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16061057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com