Извлеките каждую страницу PDF как изображения: установите размер изображения

У меня возникли проблемы с настройкой размера выходного изображения в приведенном ниже коде (который я нашел в ответе на другой вопрос Stackru).

Мне нужно вывести изображения в виде небольших превью и изображений с высоким разрешением. Но несмотря ни на что, он только выводит в 596 х 842.

Я попытался изменить размер с помощью метода setSize, но он только изменяет размер изображения, оставляя крошечное изображение в большом пустом пространстве. Я не могу заставить его масштабироваться правильно.

У кого-нибудь есть идея?

NSPDFImageRep *img = [NSPDFImageRep imageRepWithContentsOfFile:pdfPath]; 
NSImage *temp = [[NSImage alloc] init]; 
NSBitmapImageRep *rep;

int count = [img pageCount]; 
for(int i = 0 ; i < count ; i++)
{ 
    [img setCurrentPage:i];
    [temp addRepresentation:img];      

    rep = [NSBitmapImageRep imageRepWithData:[temp TIFFRepresentation]];

    NSData *finalData = [rep representationUsingType:NSJPEGFileType properties:nil]; 
    NSString *pageName = [NSString stringWithFormat:@"%d.jpg", [img currentPage]]; 
    [fileManager createFileAtPath:[NSString stringWithFormat:@"%@/%@", localPath, pageName] contents:finalData attributes:nil];
}

Заранее спасибо.

ПРИМЕЧАНИЕ. Это приложение для Mac OSX.

1 ответ

Похоже, что TIFFRepresentation будет когда-либо только возвращать результат 72dpi, что является очень низким разрешением.

У меня была та же проблема, и я решил ее, переписав функцию для использования платформы ImageIO. У меня был PDF как CGImageSource, и я установил JPG как CGImageDestination. Вы можете использовать CGImageProperties, чтобы указать разрешение, а также многое другое.

Другие вопросы по тегам