2

複数のページを持つ PDF ファイルを生成しようとしています。私はこのコードを使用しています:

-(void)createPDFfromUI:(UIWebView *)aView saveToDocumentsWithFileName:(NSString*)aFilename
{
    // Creates a mutable data object for updating with binary data, like a byte array
    NSMutableData *pdfData = [NSMutableData data];

    // Points the pdf converter to the mutable data object and to the UIView to be converted

    UIWebView *myView = [[UIWebView alloc] init];

    [myView setBounds:CGRectMake(0,0, 320, 480)];

    UIGraphicsBeginPDFContextToData(pdfData, myView.bounds, nil);

    CGContextRef pdfContext = UIGraphicsGetCurrentContext();

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

        UIGraphicsBeginPDFPage();

        aView.layer.bounds = CGRectMake(0,480* -i , 320, 480);

        [aView.layer renderInContext:pdfContext];

    }

    [aView.layer renderInContext:pdfContext];

    // remove PDF rendering context
    UIGraphicsEndPDFContext();

    // Retrieves the document directories from the iOS device
    NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);

    NSString* documentDirectory = [documentDirectories objectAtIndex:0];
    NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:aFilename];

    // instructs the mutable data object to write its context to a file on disk
    [pdfData writeToFile:documentDirectoryFilename atomically:YES]; 
}

このコードの問題は、4 つの同様のページを含む PDF ファイルを生成するだけで、それらはすべて元のページの最後の 480 ピクセルであることです。(aView) `[aView.layer renderInContext:pdfContext]; を移動するときも。FOR ループの行から 4 ページの PDF ファイルが生成されますが、最初の 3 ページは空白になり、最後のページにはデータが含まれます。

どうすればこの問題を解決できますか?

4

2 に答える 2

1

境界とは、親内のレイヤーの位置を意味します。したがって、レイヤーをレンダリングするとき、レイヤーはそのframeコンテンツを決定するためにそれを使用します。ビューをサブビューとして、などの別のビューに配置する必要がありますaView2aView次に、すでに行ったように境界を設定し、aView2代わりにレンダリングします。

動作するはずです。

于 2013-03-19T14:01:06.620 に答える