Java PageFormat не работает для пользовательского размера бумагиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java PageFormat не работает для пользовательского размера бумаги

Сообщение Anonymous »

Я работаю над проектом Java, который печатает на 58-мм-110 мм (переменная по выбору пользователя) непрерывную тепловую бумагу. Я успешно напечатал содержимое, но окончательный выход размера бумаги не так задумано. Для ширины 58 мм он работает нормально, но для более высокой ширины страницы, кажется, больше чистого размера справа. < /p>

Код: Выделить всё

public PageFormat getPageFormat(PrinterJob pj) {
//PageFormat pf = new PageFormat();
PageFormat pf = pj.getPageFormat(getPrintAttributes());
Paper paper = pf.getPaper();

paper.setSize(pw_PX, ph_PX);
paper.setImageableArea(plm_PX, // left margin
ptm_PX, // top margin
piw_PX,
pih_PX
);

// Set orientation and paper
pf.setOrientation(PageFormat.PORTRAIT);
pf.setPaper(paper);
pj.setPrintable(this);

return pf;
}

// ***************** creating media format
// @return
public HashPrintRequestAttributeSet getPrintAttributes() {
printAttributes = new HashPrintRequestAttributeSet();

printAttributes.add(new MediaPrintableArea(
plm_MM, ptm_MM,
piw_MM, pih_MM,
MediaPrintableArea.MM));

return printAttributes;
}
out up wat is
< /p>
Ширина страницы получена из использования в MM, а высота рассчитывается в соответствии с данными таблицы.
При ширине 58 мм она работает нормально, но не на более высокой ширине.
Что именно такое проблема здесь. Кто -нибудь может помочь? < /p>
Я использую метод переопределенного печати в классе печати для печати на бумаге < /p>
'' '< /p>

Код: Выделить всё

@Override
public int print(Graphics g, PageFormat pf, int page) throws
PrinterException {

if (page > 0) {
return NO_SUCH_PAGE;
}

Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(KEY_TEXT_ANTIALIASING, VALUE_TEXT_ANTIALIAS_ON);
g2d.translate(pf.getPaper().getImageableX(),
pf.getPaper().getImageableY());

int y = 0;
//draw headers
y += h1Height;
g2d.setFont(h1Font);
y = drawCenteredString(g2d, companyName, 0, y, (int) piw_PX);

...
(...code goes on to print more)
Позже в моей функции кнопки «Печать» я вызываю PrinterJob и устанавливаю этот класс для печати в PrinterJob.

Подробнее здесь: https://stackoverflow.com/questions/794 ... paper-size
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»