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

  • ios сохранить веб-страницу в формате pdf
  • Невозможно создать PDF и PRINT более 60 страниц (всплывает память и сбои)
  • Thread Safe (CG) Версия UIGraphicsGetImageFromCurrentImageContext?
  • UIWebView просачивается при отображении больших PDF-файлов на iPad
  • Как выровнять страницы PDF при преобразовании UIView в PDF-данные
  • Проблемы с памятью в MonoTouch CoreGraphics PDF с CGPDFDocument и CGPDFPage
  • Как я могу создать PDF-файл с «реальным» текстовым контентом на iOS?
  • iOS создать PDF-счет
  • 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.