2011-11-22 23 views
1

這是代碼我現在有:打印文本在Java中一個頁面的Graphics2D

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的頁面。我應該在文本中插入一個換行符來繪製一段較短的文本嗎?我將如何確定何時插入換行符?

還是我只是做這一切都錯了?也許有不同的方法?

回答

0

drawString()方法中的第二個參數控制該行文本的開頭的x座標。它使用的單位是點數,每英寸72點。因此,爲了讓紙條從紙張的左側開始更遠離,請將其更改爲更大的數字,也許是36,這將導致它從物理頁面的左側開始半英寸。

另一種選擇是使用pf.setImageable(x, y, sizeX, sizeY),其中x和y是表示可打印頁面左上角座標的雙精度值,sizeX和sizeY是表示可打印頁面尺寸的雙精度值。然後使用g2d.translate(pf.getImageableX(), pf.getImageableY())Graphics2D對象的原點設置爲可打印頁面的原點。這種方式可能更容易。