0

表示する場所の幅よりも長い文字列があります。私がやりたいのは、文字列を 2 行または 3 行で表示することです。

私のコードは次のとおりです。

for (int i=0; i<claimsCount; i++) 
{
    File_Claim *fileClaim = [claimsArray objectAtIndex:i]; 

    [self checkCreateNewPage:font:10.0];

    ///////////////////////////////////////////////////////////////////////////////////////
    // if the current category is the same as the previous one then don't write it again
    ///////////////////////////////////////////////////////////////////////////////////////
    if ([subcategory isEqualToString:fileClaim.subCategoryName]) 
    {
    }
    else
    {
        // hold the old category to check if it is the same
        subcategory = fileClaim.subCategoryName;
        //HPDF_Page_SetRGBFill (_currentPage, 0, 0, 1);
        posY -= PDF_SPACER_Y;
        HPDF_Page_TextOut(_currentPage, PDF_BASE_DATA_LABELS_START_X, posY, [fileClaim.subCategoryName cStringUsingEncoding:NSWindowsCP1252StringEncoding]);
    }

    //HPDF_Page_SetRGBFill (_currentPage, 0, 0, 0);
    posY -= PDF_SPACER_Y;

    HPDF_Page_TextOut(_currentPage, PDF_BASE_DATA_LABELS_START_X+15, posY, [fileClaim.name cStringUsingEncoding:NSWindowsCP1252StringEncoding]);
    HPDF_Page_TextOut(_currentPage, [self alignRightNumberX:fileClaim.unitPrice:260], posY, [[NSString stringWithFormat:@"%.2f €",fileClaim.unitPrice] cStringUsingEncoding:NSWindowsCP1252StringEncoding]);
    HPDF_Page_TextOut(_currentPage, 320, posY, [[fileClaim getCalcString] cStringUsingEncoding:NSWindowsCP1252StringEncoding]);
    HPDF_Page_TextOut(_currentPage, [self alignRightNumberX:fileClaim.totalPrice:483], posY, [[NSString stringWithFormat:@"%.2f €",fileClaim.totalPrice] cStringUsingEncoding:NSWindowsCP1252StringEncoding]);
}

そして、私がテキストを入れた部分:

 HPDF_Page_TextOut(_currentPage, PDF_BASE_DATA_LABELS_START_X+15, posY, [fileClaim.name cStringUsingEncoding:NSWindowsCP1252StringEncoding]);

これは 1 行ではなく 2 行または 3 行で行う必要があります。これを行う方法がわかりません。

前もって感謝します、

レビオン

4

1 に答える 1

3

私は数日間LibHaruを使用しており、同じ質問に出くわしました..改行と複数行のサポートに対処するために独自のC関数を書き始めました。そして今日、それHPDF_Page_TextRect()が実際にあなたのために仕事をすることができることを知りました! :)

Rectangle で定義された領域内の複数行の単語を自動的にラップし、書かれた文字数も返します...

于 2011-11-17T15:53:08.673 に答える