У меня есть файл PDF, где каждая страница представляет собой файл (LZW) TIFF. Я знаю это, потому что создал это. Я хочу иметь возможность загрузить его и сохранить как группу файлов TIFF.
Я могу открыть файл PDF с помощью CGPDFDocumentCreateWithURL и получить страницу. Я даже могу нарисовать страницу на экране.
Я ХОЧУ нарисовать страницу в bitmapContext, чтобы я мог использовать CGBitmapContextCreateImage для передачи изображения в CGImageRef. Однако для создания контекста растрового изображения мне нужно знать размер и разрешение изображения. Кажется, я не могу понять, как получить CGPDFDocument или CGPDFPage, чтобы сообщить мне разрешение объекта изображения на этой странице.
Есть ли более простой способ сделать это, о чем я не догадываюсь?
Благодарю.





Ghostscript будет работать для вас здесь:
gs -sDEVICE = tiff32nc -sOutputFile = foo-Page% d.tif foo.pdf
Для двухстраничного документа foo.pdf вы должны получить:
По памяти я думаю, что выходное разрешение GS - это разрешение содержащейся страницы, а не обязательно разрешение встроенного файла (если они не совпадают с самого начала).
Если это так и вы хотите восстановить изображение в том виде, в котором оно было изначально восстановлено, вы можете использовать iText (java) или iTextSharp (.net) для потока содержимого перейти к изображению (т. Е. Байтов) и записать их на диск в формат по вашему выбору после преобразования потока содержимого в файл PdfImage iirc.
Надеюсь, что опция ghostscript применима для сохранения написания еще одной утилиты ...
Я бы использовал команду pdfimages (из poppler-utils) для извлечения изображений в их собственном разрешении, вместо того, чтобы использовать gs для их рендеринга. Но да, есть библиотеки, которые можно использовать программно.