1

次のコードを使用して、pdf ファイルとその内容を生成しました。最初に、線に cgpoint 値を指定して線を描画することにより、テーブルを描画するように pdf コンテンツを設計しました。

+(void)drawPDF:(NSString*)fileName
{

    UIGraphicsBeginPDFContextToFile(fileName, CGRectZero, nil);

    UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 1024, 748), nil);


    int xOrigin = 50;
    int yOrigin = 300;

   int rowHeight = 120;
   int columnWidth = 130;

   int numberOfRows = 7;
    int numberOfColumns = 4;

    [self drawTableAt:CGPointMake(xOrigin, yOrigin) withRowHeight:rowHeight andColumnWidth:columnWidth andRowCount:numberOfRows andColumnCount:numberOfColumns];


   UIGraphicsEndPDFContext();
}

 +(void)drawTableAt:(CGPoint)origin
  withRowHeight:(int)rowHeight
andColumnWidth:(int)columnWidth
   andRowCount:(int)numberOfRows
andColumnCount:(int)numberOfColumns

 {

    for (int i = 0; i <= numberOfRows; i++) {

        int newOrigin = origin.y + (rowHeight*i);


        CGPoint from = CGPointMake(origin.x, newOrigin);
        CGPoint to = CGPointMake(origin.x + (numberOfColumns*columnWidth), newOrigin);

        [self drawLineFromPoint:from toPoint:to];


    }

    for (int i = 0; i <= numberOfColumns; i++) {

        int newOrigin = origin.x + (columnWidth*i);


        CGPoint from = CGPointMake(newOrigin, origin.y);
        CGPoint to = CGPointMake(newOrigin, origin.y +(numberOfRows*rowHeight));

        [self drawLineFromPoint:from toPoint:to];


    }
}

+(void)drawLineFromPoint:(CGPoint)from toPoint:(CGPoint)to
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(context, 2.0);

    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();

    CGFloat components[] = {0.2, 0.2, 0.2, 0.3};

    CGColorRef color = CGColorCreate(colorspace, components);

    CGContextSetStrokeColorWithColor(context, color);


    CGContextMoveToPoint(context, from.x, from.y);
    CGContextAddLineToPoint(context, to.x, to.y);

    CGContextStrokePath(context);
    CGColorSpaceRelease(colorspace);
    CGColorRelease(color);

}

出力は次のとおりです ここに画像の説明を入力

しかし、numberOfRows を 7 に指定したため、3 行しか表示されませんでした。残りの行を表示します (つまり、pdf の 2 ページ目を表示する必要があります)。numberOfRows = 12 が no を意味する場合、numberOfRows は動的に変化する可能性があります。PDF のページ数は 3 以上である必要があります。何をすべきか?私はこれが初めてです。

4

1 に答える 1

3

ページネーションを自分で処理する必要があると思います。つまり、あなたの呼び出しで

    UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 1024, 748), nil);

ここには 1024x768 の 1 ページしかありません。そのサイズも確かに大きくすることができますが、2 番目のページを追加する必要がある場合は、さらに追加する必要があります。このリンクがすべてを説明していると思います:

http://developer.apple.com/library/ios/#documentation/2ddrawing/conceptual/drawingprintingios/GeneratingPDF/GeneratingPDF.html

(6 つのステップの最初のセットは、必要に応じてステップ 2/3/4 を繰り返す必要があることを示しています。ここで、2 はページを追加することです)。

于 2013-01-20T12:43:54.093 に答える