Java中的PrintService一旦托管在heroku中将无法正常工作

时间:2018-09-07 11:53:20

标签: java heroku printing

我有这个printService片段:

public class MainTest {

    public static void main(String[] args) {
        DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
        //PrintService defPrnSrvc = PrintServiceLookup.lookupDefaultPrintService();
        PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();

        PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
        System.out.println("my printer found: " + services.length);
        // this step is necessary because I have several printers configured
        for (int i = 0; i < services.length; i++) {
            String svcName = services[i].toString();
            //
        }
    }
}

但是当我将其托管在heroku上时,它没有显示任何打印机,我知道原因是打印机服务在您的本地系统中查找,因此无法在heroku上运行,但是有解决方法,例如我从本地发送了一些详细信息,例如计算机的IP地址或Mac地址,然后它可以搜索该计算机中的打印机?

有没有一种方法可以将参数传递给printservice类以获取特定计算机的打印机?还是总是在本地主机中查看。

1 个答案:

答案 0 :(得分:0)

有趣。我认为Heroku没有可用于在给定位置连接到本地设备的插件,但是这里有一些想法:

  • 如果您的打印机启用了云功能,则可以检查打印机的制造商文档,以查看是否可以进行远程连接。可能还涉及翻转打印机本身的设置。
  • 您是否已为此目的调查过Google的项目,它是否适用于您的用例? https://www.google.com/cloudprint/#printers
  • 这是很长的路要走,但是您可以将Raspberry Pi连接到打印机,并使用它托管API端点,以便pi可以接收文档数据和所需的任何指令,然后将其传递给本地通过本地连接的打印机。

希望这会有所帮助!