4

Dymo LabelWriter 450 でラベルを印刷しようとしていますが、うまくいきません。

私が現在取り組んでいる問題は、ラベル全体を埋めることさえできないように見えることです。Dymo ソフトウェアを使用して印刷したときに得られない約 0.6 mm の左余白があるようです。

SDK を使用するのが理想的ですが、Dymo Java SDK が見つかりません。

これは私が探している結果です 探している結果

これは私がこれまでに得たものです 現在のラベル

この結果を得るために、この回答からいくつかのコードを変更しました。

public class PrinterTest {

  public static void main(String[] args) {

    PrinterJob printerJob = PrinterJob.getPrinterJob();
    if (printerJob.printDialog()) {
      PageFormat pageFormat = printerJob.defaultPage();
      Paper paper = pageFormat.getPaper();

      double width = fromCMToPPI(1.9);
      double height = fromCMToPPI(4.5);

      double horizontalMargin = fromCMToPPI(0.25);
      double verticalMargin = fromCMToPPI(0.1);

      paper.setSize(width, height);

      paper.setImageableArea(
          horizontalMargin,
          verticalMargin,
          width,
          height);

      pageFormat.setOrientation(PageFormat.REVERSE_LANDSCAPE);
      pageFormat.setPaper(paper);

      printerJob.setPrintable(new MyPrintable(), pageFormat);
      try {
        printerJob.print();
      } catch (PrinterException ex) {
        ex.printStackTrace();
      }
    }
  }

  private static double fromCMToPPI(double cm) {
    return toPPI(cm * 0.393700787);
  }

  private static double toPPI(double inch) {
    return inch * 72d;
  }

  public static class MyPrintable implements Printable {

    @Override
    public int print(Graphics graphics, PageFormat pageFormat,
        int pageIndex) {
      System.out.println(pageIndex);
      int result = NO_SUCH_PAGE;
      if (pageIndex < 1) {
        Graphics2D g2d = (Graphics2D) graphics;

        double width = pageFormat.getImageableWidth();
        double height = pageFormat.getImageableHeight();
        double x = pageFormat.getImageableX();
        double y = pageFormat.getImageableY();

        System.out.println("x = " + x);
        System.out.println("y = " + y);

        g2d.translate((int) pageFormat.getImageableX(), (int) pageFormat.getImageableY());
        g2d.draw(new Rectangle2D.Double(x, y, width - x, height - y));
        FontMetrics fm = g2d.getFontMetrics();
        g2d.drawString("AxB", Math.round(x), fm.getAscent());
        result = PAGE_EXISTS;
      }
      return result;
    }
  }
}

見逃した SDK が利用可能な場合は、どこで見つけられるか知りたいです。それ以外の場合、実際にすべてをラベルに収めるために、この左マージンを取り除くにはどうすればよいでしょうか?

ありがとう!

4

0 に答える 0