在Xcode中生成多个页面的PDF文件

时间:2013-03-19 12:43:55

标签: ios xcode pdf paging

我正在尝试生成一个包含多个页面的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 px。 (aView)当我移动`[aView.layer renderInContext:pdfContext]时;在FOR循环中,它生成一个包含4页的PDF文件,但前3页是空白的,最后一页有一些数据。

你们有什么想法我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:1)

bounds表示图层在其父级中的位置。所以当你渲染一个图层时,它使用它的frame来确定它的内容。 您必须将视图作为子视图放在另一个视图中,例如aView2。然后像你已经做的那样设置aView的边界,然后再渲染aView2

它应该有用。

答案 1 :(得分:0)

添加字符串数组并尝试刷新应用

您还必须将物理pdf文件添加到xcode项目中 您可以通过将其拖放到左侧菜单浏览

来完成此操作

可以使用另一种方法是使用URL

访问pdf remotley

点击运行,查看是否有效

希望这会有所帮助