2010-04-12 64 views
2

我在其他几个论坛上问过这个问题,并且没有回复,所以我希望这里有人能帮助我指出正确的方向。我的工作有一个非常简单的屏幕应用程序。它基本上只是1页纸质报告的重新创建,其中包含公司徽标,一些标签,几个文本框和报告的滚动文本框。创建1页PDF的iPad屏幕视图 - 如何?

我需要能够填写报告,然后点击一个按钮将其保存为图形形式,以便以后可以传真,打印或发送电子邮件。目前,我只是以编程方式进行屏幕截图并将其保存到照片库(屏幕截图的默认设置)。然后,我可以通过照片发送电子邮件。这工作正常,但最好是有点哈克。

我已阅读新的iPad 3.2创建PDF的指南(显然它应该比以前更容易),但我无法让它工作,我已经花了无数个小时。我希望有人能为我解答。或者,如果有人知道我可以重新定向屏幕截图的存储位置(默认是在相册中),那么也许我可以使该功能起作用。如果我可以将屏幕截图重定向到我的应用程序文档文件夹中,那么我可以使用MFMailCompose将其附加到电子邮件中。

最后,在旁注中,是否有人知道通过触摸捕获数字签名的好方法。例如,我希望我的用户能够在转换为PDF或进行屏幕截图之前,通过触摸文档底部的名称来签名。

在此先感谢您的帮助。 -Ray

+0

+1,这是一个很好的问题,我有兴趣了解更多关于这一点。 – 2010-04-15 19:57:32

回答

0

我正在使用以下代码片段。它工作正常单页PDF生成。 它使用任何视图,您有内容并将其作为PDF文件捕获并存储到文档目录中。

一些功能

{ 
.... 
    // here container view is my content to be converted to PDF file 
    // filepath is the path to where it should be write in our documents directory 
    CGContextRef pdfContext = [self createPDFContext:containerView.bounds path:(CFStringRef)filePath]; 
    NSLog(@"PDF Context created"); 
    CGContextBeginPage (pdfContext,nil); // 6 

    //turn PDF upsidedown 
    CGAffineTransform transform = CGAffineTransformIdentity;  
    transform = CGAffineTransformMakeTranslation(0, containerView.bounds.size.height); 
    transform = CGAffineTransformScale(transform, 1.0, -1.0); 
    CGContextConcatCTM(pdfContext, transform); 

    //Draw view into PDF 
    [containerView.layer renderInContext:pdfContext]; 
    CGContextEndPage (pdfContext);// 8 
    CGContextRelease (pdfContext); 

.... 
} 

- (CGContextRef) createPDFContext:(CGRect)inMediaBox path:(CFStringRef) path  
{ 
    CGContextRef myOutContext = NULL; 
    CFURLRef url; 
    url = CFURLCreateWithFileSystemPath (NULL, // 1          
             path,          
             kCFURLPOSIXPathStyle,          
             false); 

    if (url != NULL) {  
     myOutContext = CGPDFContextCreateWithURL (url,// 2             
                &inMediaBox,             
                NULL);   
     CFRelease(url);// 3  
    } 
    return myOutContext;// 4  
}