Печать текста на странице в Java с Graphics2D - PullRequest
1 голос
/ 22 ноября 2011

Это код, который у меня сейчас есть:

public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) 
        throws PrinterException
{
    if(pageIndex > 0)
    {
        return NO_SUCH_PAGE;
    }

    Graphics2D g2d = (Graphics2D)graphics;
    g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());

    String lineText;
    int lineSpace = 12;
    //Draw out each seperate line.
    for(int i = 0; i < storyText.length; i++)
    {
        //I split the text at "\n" and stored the lines in storyText.
        lineText = storyText[i];
        lineSpace += 15;

        graphics.drawString(lineText, 0, lineSpace);
        //What about g2d? Could or should I use that instead?
        //g2d.drawString(lineText, 0, lineSpace);
    }

    return PAGE_EXISTS;
}

Это рисует линию, затем перемещается вниз на несколько пробелов (не уверен, какие единицы измерения используются), затем рисует следующую линию.Это работает, но проблема в том, что по горизонтали текст съедается с поля слева.

У кого-нибудь есть решение этой проблемы?Я только недавно начал возиться с печатью на страницах с Java.Должен ли я вставить символ новой строки в тексте, чтобы нарисовать более короткую строку текста?Как бы я выяснил, когда вставить символ новой строки?

Или я просто все делаю неправильно?Может быть, другой подход?

1 Ответ

0 голосов
/ 29 ноября 2011

Второй аргумент в методе drawString() контролирует x-координаты начала этой строки текста. Единица, которую он использует - это точки, с 72 точками на дюйм. Поэтому, чтобы линия начиналась дальше от левой стороны листа бумаги, измените это значение 0 на большее число, возможно, 36, что приведет к тому, что оно начнется на полдюйма с левой стороны физической страницы.

Другой вариант - использовать pf.setImageable(x, y, sizeX, sizeY), где x и y - это двойные числа, представляющие координаты верхнего левого угла печатной страницы, а sizeX и sizeY - это двойные числа, представляющие размеры печатной страницы. Затем используйте g2d.translate(pf.getImageableX(), pf.getImageableY()), чтобы установить источник объекта Graphics2D в качестве источника печатной страницы. Этот способ, вероятно, проще.

...