2010-04-12 25 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  
}