2013-11-22 1 views
3

Часть моего приложения включает в себя печать PDF-файлов, которые загружаются в UIWebView.Обновление iOS7 - печать в формате PDF, загруженная в UIWebView yeilds, масштабируется в PDF до 50% от размера страницы письма

Код, который я использую для печати этих PDF-файлов, загруженных в мой UIWebView, отлично работает для iOS версии 6. С момента обновления iOS7 мои страницы по-прежнему печатаются с использованием того же кода в моем приложении, однако в списке перечислены несколько проблем:

  • С каждой печатью печатается дополнительная пустая страница. Если мой документ PDF составляет 2 страницы, принтер распечатает 2 страницы с содержимым PDF и дополнительную 3-ю страницу, которая будет пустой. Это меня не очень беспокоит, поскольку ни одна чернила или бумага не теряются впустую, однако для решения, которое я пытаюсь реализовать, это немного неряшливо.

  • Основная проблема, с которой я столкнулся, заключается в том, что после обновления iOS7 тот же самый код, который отлично работает на iOS 6 iPad/iPhone, теперь сломан. Код позволяет мне распечатать полное содержимое PDF-файлов, однако содержимое уменьшено до 50% от общей площади бумаги (что в моем случае является бумагой с буквой портрета).

Несмотря на то, что, основываясь на веб-сайте развития Apple, я не смог получить ответа от участников форума.

Вот код, я использую:

-(void) printWebView:(UIWebView *)webView { 
    UIPrintInfo *pi = [UIPrintInfo printInfo]; 
    pi.outputType = UIPrintInfoOutputGeneral; 
    pi.jobName = webView.request.URL.absoluteString; 
    pi.orientation = UIPrintInfoOrientationPortrait; 
    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; 
    pic.printInfo = pi; 
    pic.showsPageRange= NO; 
    UIPrintPageRenderer *renderer = [[UIPrintPageRenderer alloc] init]; 
    webView.viewPrintFormatter.printPageRenderer.headerHeight = 30.0f; 
    webView.viewPrintFormatter.printPageRenderer.footerHeight = 30.0f; 
    webView.viewPrintFormatter.contentInsets = UIEdgeInsetsMake(0.0f, 30.0f, 0.0f, 30.0f); 
    webView.viewPrintFormatter.startPage = 0; 
    [renderer addPrintFormatter:webView.viewPrintFormatter startingAtPageAtIndex:0]; 
    pic.printPageRenderer = renderer; 
    [pic presentAnimated:YES completionHandler:^(UIPrintInteractionController *pic2, BOOL completed, NSError *error) { 
    // indicate done or error 
}]; 

Кто-нибудь еще сталкивался с этим вопросом, и есть решение, или это законный вопрос, что компания Apple должна исправить в своем следующем обновлении?

Кроме того, хотя мне кажется маловероятным, может возникнуть проблема с текущей версией (1 версия старой) XCode?

ответ

1

Я наблюдал ту же проблему в iOS 7. Единственными решениями, которые я смог придумать, является либо установить объект печати UIPrintInteractionController на URL-адрес, указывающий на нужный PDF-файл, либо установить для параметра printItem представление NSData PDF, а не устанавливать свойство printFormatter. У меня возникли некоторые проблемы с использованием функции printItem под iOS 5, поэтому у меня было резервное решение, например, ниже.

// Work around for printing item not working with our document URL under iOS 5. 
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) 
{ 
    printController.printingItem = self.documentURL; 
} 
else 
{ 
    printController.printFormatter = [self.webView viewPrintFormatter]; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^