李堇 2024-08-02 09:40 采纳率: 48.7%
浏览 5

android调用接口打印机遇到问题

项目中使用android设备调用兄弟打印机打印网络pdf文件,其中使用了多份打印功能,但是遇到出纸为每一页多份打完后再打印第二页,这样效果不太好(理想效果是循环打印整个文件),其中使用了重要的命令,请问哪位能读懂,看看是哪里的问题,

String rcPath = PrintUtil.this.dataFilesPath + "/rc";
PrintUtil.this.replaceFile(rcPath1, rcPath, copies);主要替换了copies=1,替换为copies=copies

String  cmdline = new String[]{"sh", "-c", gsPath + " -dBATCH -dSAFER -dNOPAUSE   -r600 -g" + w + "x" + h + " -q  -sDEVICE=bit -sOutputFile=" + PrintUtil.this.rawFilePath + "  -dFitPage -c \"<</PageOffset [10 -10]>> setpagedevice\" -f " + newPdfPath};
ProcessBuilder pb = new ProcessBuilder(cmdline);


cmdline = new String[]{"sh", "-c", " cat " + PrintUtil.this.rawFilePath + " | " + prnPath + "  -rc " + rcPath + " -flags 0000000000000002 -pi " + infPath + " > " + PrintUtil.this.dataFilePath};
Runtime.getRuntime().exec(cmdline, (String[])null, new File(PrintUtil.this.dataFilesPath)).waitFor();

以上为主要代码

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-08-06 09:37
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    根据您提供的代码片段,看起来您正在调用兄弟打印机打印网络上的PDF文件。而问题似乎出在打印多份时,每一页多份打完后才会打印下一页的情况。您希望的效果是循环打印整个文件,是这样理解吗? 首先,在您提供的代码中,有几个关键点需要注意:
    1. 变量copies似乎用于控制打印份数,而在您提供的代码中,copies被替换为copiesString,但并未提供copiesString的具体值或替换后的赋值过程。请确保copiesString的值是正确的打印份数。
    2. 在打印PDF文件时使用了ProcessBuilder执行命令行操作,其中cmdline中包含了具体的打印命令。您需要确保这些打印命令正确无误。
    3. 最后一段代码使用了Runtime.getRuntime().exec(cmdline, (String[])null, new File(PrintUtil.this.dataFilesPath)).waitFor();来执行打印操作。确保这段代码在调用时没有出现异常并且能够顺利执行。 如果问题仍然存在,我建议您对照打印机的文档和命令参考,确认打印命令的正确性,并检查打印机设置是否符合您的预期。如果仍然无法解决问题,您可能需要进一步调试代码,并提供更多代码以便更好地帮助您解决问题。 同时,下面是一个简单的Java示例代码,用于打印PDF文件,供您参考:
    import java.awt.print.PrinterJob;
    import javax.print.PrintService;
    import javax.print.PrintServiceLookup;
    import java.io.FileInputStream;
    public class PDFPrinter {
        public static void main(String[] args) {
            try {
                FileInputStream inputStream = new FileInputStream("path/to/your/pdf/file.pdf");
                PrinterJob job = PrinterJob.getPrinterJob();
                job.setPageable(new PDFPageable(inputStream));
                PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
                PrintService printService = printServices[0]; // Assuming the first printer
                job.setPrintService(printService);
                job.print();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

    请替换代码中的path/to/your/pdf/file.pdf为您要打印的PDF文件的路径,并根据您的需求进行修改。希望这个示例对您有所帮助。如果您有任何疑问或需要进一步帮助,请随时告诉我。

    评论

报告相同问题?

问题事件

  • 修改了问题 8月2日
  • 创建了问题 8月2日

悬赏问题

  • ¥15 winFrom界面无法打开
  • ¥15 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
  • ¥15 QQ邮箱过期怎么恢复?