Создание 1-страничного PDF-файла iPad-экрана. Как? - PullRequest
2 голосов
/ 12 апреля 2010

Я задавал этот вопрос на нескольких других форумах и получил нулевой ответ, так что я надеюсь, что кто-то здесь может помочь направить меня в правильном направлении. У меня есть довольно простое одноэкранное приложение для моей работы. По сути, это всего лишь воссоздание одностраничного бумажного отчета с логотипом компании, несколькими ярлыками, несколькими текстовыми полями и текстовым полем с прокруткой для отчета.

Мне нужно заполнить отчет, а затем нажать кнопку, чтобы сохранить его в графической форме, чтобы я мог отправить его по факсу, распечатать или отправить по электронной почте позже. В настоящее время я просто программно делаю снимок экрана и сохраняю его в библиотеку фотографий (по умолчанию для захвата экрана). Тогда я могу просто отправить это по электронной почте из фотографий. Это работает нормально, но в лучшем случае довольно хакерски.

Я прочитал новое руководство по iPad 3.2 для создания PDF (очевидно, это должно быть намного проще, чем раньше), но я не могу заставить его работать, и я потратил на это бесчисленные часы. Я надеюсь, что у кого-то есть ответ для меня.

В качестве альтернативы, если кто-нибудь знает, как я могу перенаправить место хранения снимка экрана (по умолчанию это фотоальбом), то, возможно, я смогу заставить эту функцию работать. Если бы я мог перенаправить снимок экрана для сохранения в папке с документами моего приложения, то я мог бы использовать MFMailCompose, чтобы прикрепить его к электронному письму.

И, наконец, стоит отметить, что кто-нибудь знает хороший способ получения цифровой подписи с помощью касания. Например, я хотел бы, чтобы мои пользователи могли просто подписать свое имя прикосновением внизу документа, прежде чем я преобразую в PDF или сделаю снимок экрана.

Заранее спасибо за помощь. -Ray

1 Ответ

0 голосов
/ 20 марта 2011

Я использую следующий фрагмент. он прекрасно работает с генерацией 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    
}
...