You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java PrinterJob打印Bixolon SLP-DX223标签PDF出现90度偏移如何解决

解决方案

核心原因是Java打印服务的默认方向参数覆盖了驱动层面的配置,且硬编码的Orientation.PORTRAIT未和标签实际输出需求匹配,可按以下步骤调整代码:

  • 移除硬编码的固定纵向方向设置,新增显式打印属性集,强制指定打印方向,匹配驱动中的标签配置
  • 优先使用Orientation.AUTO让PDFBox自动适配PDF本身的页面方向,避免和PDF内置方向冲突
  • 如果方向依旧偏移,可两两组合调整打印属性的方向值和PDFPageable的方向值,热敏标签打印机的方向定义常和Java打印服务的标准定义存在90度差值

修改后参考代码

import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.standard.OrientationRequested;
import org.apache.pdfbox.printing.Orientation;

// 业务逻辑部分
try {
    PDDocument document = PDDocument.load(new File(file));
    PrintService myPrintService = findPrintService(printer);
    PrinterJob job = PrinterJob.getPrinterJob();

    // 显式配置打印属性,和驱动内设置的标签参数对齐
    HashPrintRequestAttributeSet printAttrs = new HashPrintRequestAttributeSet();
    // 按需调整为PORTRAIT/LANDSCAPE/REVERSE_LANDSCAPE测试
    printAttrs.add(OrientationRequested.LANDSCAPE);

    // 使用AUTO自动适配PDF原生方向,也可手动指定为你需要的方向
    job.setPageable(new PDFPageable(document, Orientation.AUTO));
    job.setPrintService(myPrintService);
    job.setJobName(jobname);
    job.setCopies(copies);
    // 打印时传入自定义属性集,覆盖默认参数
    job.print(printAttrs);
    document.close();

} catch (PrinterException | IOException e) {
    e.printStackTrace();
}

额外排查方案

如果调整后依旧偏移,可在打印前遍历PDF所有页面,手动旋转页面适配输出方向:

for (PDPage page : document.getPages()) {
    // 按需调整旋转角度为90/180/270
    page.setRotation(90);
}

内容的提问来源于stack exchange,提问作者MrUnknown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:57:02