从UIScrollView创buildPDF目标C

这个问题已经发布之前( 在iphone应用程序中从UIScrollView创buildPDF ),我使用的代码是从这里 。

这是代码

-(void)createPDFfromUIView:(UIView*)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 UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil); UIGraphicsBeginPDFPage(); CGContextRef pdfContext = UIGraphicsGetCurrentContext(); // draws rect to the view and thus this is captured by UIGraphicsBeginPDFContextToData [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]; documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:aFilename]; // instructs the mutable data object to write its context to a file on disk [pdfData writeToFile:documentDirectoryFilename atomically:YES]; } 

安装程序:我有一个UIScrollView,里面是一个UIView。 我想保存整个UIView(950,500px),并在(520,500)的空间(UIScrollView大小)。 生成的PDF只是UIScrollView的大小(520,500)

我读了答案,但他显然改变了代码,但它不适合我。 我一直在努力解决这一整天。

我是初学者,所以请指出任何我应该添加到我错过的问题。 谢谢。

PS – 这是一个iPad应用程序。

上下文应该具有scrollview内容大小的大小,而不是边界。

然后,您需要暂时将scrollview调整为其内容大小,将其呈现在PDF上下文中,并将scrollview的大小恢复为原始大小。

 UIGraphicsBeginPDFContextToData(pdfData, (CGRect){0,0, scrollView.contentSize}, nil); CGRect origSize = scrollView.frame; CGRect newSize = origSize; newSize.size = scrollView.contentSize; [scrollView setFrame:newSize]; [scrollView.layer renderInContext:pdfContext]; [scrollView setFrame:origSize]; 

如果有人想知道,我发现如何解决这个问题。

由于我的UIView是在一个UIScrollView中,我使用另一个类的UIView,当我调用的方法,并select参数aView ,我只是把self

所以在我的UIView类中,当我想要生成PDF时,我input

[self createPDFfromUIView:self saveToDocumentsWithFileName:UIViewPDF];

检查ScrollViewToPDF的例子,你会明白你需要做什么。

它使用相同的scrollview's layer renderInContext但这里PDF是根据您的要求创build,如一页PDF或多页PDF

注意:它捕获scrollView的所有可见和不可见部分