Преобразование PDF в одну страницу PDF-причина для этого – страницы PDF не имеют одинаковой высоты страницы

У меня есть PDF, и я хочу уменьшить его до одной страницы.

Это не работает:

//pages size_t pages = CGPDFDocumentGetNumberOfPages(document); pageRect.size.height = pageRect.size.height*pages; CGDataConsumerRef dataConsumer = CGDataConsumerCreateWithCFData(mutableData); CGContextRef pdfContext = CGPDFContextCreate(dataConsumer, &pageRect, NULL); CGPDFContextBeginPage(pdfContext, NULL); for (int i =1; i<=pages; i++) { CGPDFPageRef pageRef = CGPDFDocumentGetPage(document, i); CGContextDrawPDFPage(pdfContext, pageRef); } CGPDFContextEndPage(pdfContext); 

  • Как Apple получает доступ к файлам UIWebView PDF для элементов sharedMenuController?
  • Создайте приложение для чтения электронных книг на iPhone / iPad с использованием библиотеки MuPDF
  • Проблемы с отображением PDF в iFrame на Mobile Safari
  • Как читать PDF-файл из каталога документов в iPhone?
  • Как отобразить PDF-файл в Objective-C?
  • как открыть pdf-разметку программно в ios 11
  • Как выровнять страницы PDF при преобразовании UIView в PDF-данные
  • Как я могу сделать PDF-файл, используя base64 string? стриж
  • One Solution collect form web for “Преобразование PDF в одну страницу PDF-причина для этого – страницы PDF не имеют одинаковой высоты страницы”

    Ваш код печатает все страницы в одном месте, один поверх другого. Если случайно страницы имеют явный белый фон, вы увидите только последнюю страницу.
    Решение состоит в том, чтобы перевести систему координат после того, как страница была нарисована с высотой страницы, нарисованной.
    UPDATE: это полный код. Предполагается, что все страницы исходного файла имеют одинаковый размер и поворот:

     NSURL *pdfURL = [[NSBundle mainBundle] URLForResource:@"source.pdf" withExtension:nil]; pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL); int pageCount = CGPDFDocumentGetNumberOfPages(pdf); CGPDFPageRef pageRef = CGPDFDocumentGetPage(pdf, 1); CGRect pageRect = CGPDFPageGetBoxRect(pageRef, kCGPDFMediaBox); float pageHeight = pageRect.size.height; pageRect.size.height = pageRect.size.height * pageCount; NSMutableData* pdfData = [[NSMutableData alloc] init]; CGDataConsumerRef pdfConsumer = CGDataConsumerCreateWithCFData((CFMutableDataRef)pdfData); CGContextRef pdfContext = CGPDFContextCreate(pdfConsumer, &pageRect, NULL); CGPDFContextBeginPage(pdfContext, NULL); CGContextTranslateCTM(pdfContext, 0, pageRect.size.height); for (int i = 1; i <= pageCount; i++) { pageRef = CGPDFDocumentGetPage(pdf, i); CGContextTranslateCTM(pdfContext, 0, -pageHeight); CGContextDrawPDFPage(pdfContext, pageRef); } CGPDFContextEndPage(pdfContext); CGPDFContextClose(pdfContext); NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *pdfFile = [documentsDirectory stringByAppendingPathComponent:@"destination.pdf"]; [pdfData writeToFile: pdfFile atomically: NO]; [pdfData release]; 
    Interesting Posts
    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.