Извлеките каждую страницу 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, чтобы указать разрешение, а также многое другое.