Преобразование 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); 

  • Как получить аннотации PDF, когда я касаюсь экрана ipad
  • Проблемы с памятью в MonoTouch CoreGraphics PDF с CGPDFDocument и CGPDFPage
  • Как сохранить веб-страницу в формате PDF?
  • Как получить миниатюры PDF-страниц для отображения в QLPreviewController
  • iOS #include "mupdf / fitz.h" не найдена проблема
  • Contex Drawing + Pagination
  • pdf как приложение электронной почты в устройстве iOS
  • Поиск в PDF на iPhone
  • 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]; 
    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.