У меня нет опыта программирования.
Мои PDF-файлы не отображают изображения на iPad в форматах PDFExpert или GoodNotes, поскольку изображения находятся в формате JPEG2000, судя по тому, что я нашел в Интернете.
Это большие PDF-файлы, объемом до 1500-2000 страниц с изображениями. Один из них был файлом размером 80 МБ или около того. Я попытался распечатать его с помощью Foxit, чтобы преобразовать изображения в JPG из JPEG2000, но размер файла подскочил до 800 МБ ... плюс это занимает слишком много времени.
Я наткнулся на Ghostscript, но не знаю, как использовать интерфейс командной строки.
У меня очень мало времени. Очень нужно пошаговое руководство для небольшого скрипта, который конвертирует все мои PDF-файлы за один раз.
Очень сожалею о своей неопытности и беспомощности. Может ли кто-нибудь скормить мне шаги для этого?
Обновлено: Я хочу переключить JPEG2000 на любой другой формат, который дает меньшее увеличение размера файла и вызывает минимальную потерю качества (в пределах разумного). Я понятия не имею, как использовать Ghostscript. Я в основном хочу изменить сжатие изображений на то, что будет правильно отображаться на iPad, сохранив при этом качество остального текста, а также встроенных закладок.
Повторюсь, у меня НЕТ опыта работы с командной строкой ... Я даже не знаю, как указать GS на папку, в которой находятся мои PDF-файлы ...


Вы на самом деле не сказали, чего хотите. Как именно «конвертировать» PDF-файлы?
Обратите внимание, что переключение с JPX (JPEG2000) на JPEG приведет к потере качества, поскольку данные изображения будут квантоваться (с другой схемой квантования, чем JPX) кодировщиком JPEG. Вместо этого вы можете использовать схему сжатия без потерь, но тогда вы не получите такого же сжатия. В любом случае вы не получите такой же коэффициент сжатия, как JPX, что бы вы ни использовали, результат будет больше.
Простая команда Ghostscript будет такой:
gs -sDEVICE = pdfwrite -o out.pdf in.pdf
Поскольку кодировка JPEG2000 защищена патентом (или, по крайней мере, была), устройство pdfwrite не записывает изображения в формате JPX <по умолчанию, оно будет записывать их несколько раз с разными схемами сжатия, а затем использовать ту, которая дает наилучшее сжатие (практически всегда JPEG).
Для получения лучших результатов потребуется более сложная командная строка, но вам также нужно будет более четко указать, чего именно вы хотите достичь, и в чем заключается проблема с упрощенной командной строкой.
[РЕДАКТИРОВАТЬ]
Что ж, помощь по выполнению командной строки - это немного не по теме для Stack Overflow, это должен быть сайт для разработчиков программного обеспечения :-)
Не зная, какую операционную систему вы используете, трудно дать вам подробные инструкции, я также понятия не имею, что использует iPad, я обычно не использую устройства Apple, и мой единственный опыт работы с Mac.
Предположительно вы знаете, где (каталог) вы установили Ghostscript. Либо откройте там командную оболочку и введите команду ./gs, либо выполните команду, указав полный путь, например:
/usr/bin/gs
Я думал, что аргументы в командной строке не требуют пояснений, но ....
Переключатель -sDEVICE=pdfwrite указывает Ghostscript использовать устройство pdfwrite, как можно догадаться по названию, это устройство записывает файлы PDF в качестве вывода.
Переключатель -o - это имя (и полный путь, если требуется) выходного файла.
Последний аргумент - это имя (и снова полный путь, если он не в текущем каталоге) входного файла.
Итак, команда может выглядеть так:
/usr/bin/gs -sDEVICE=pdfwrite -o /home/me/output.pdf /home/me/input.pdf
Или, если Ghostscript и входной файл находятся в одном каталоге:
./gs -sDEVICE=pdfwrite -o out.pdf input.pdf
Я предлагаю вам попробовать командную строку в моем ответе и посмотреть, как это сработает для вас. Если это неприемлемо, у вас будут конкретные вещи, которые мы можем обсудить, и я (возможно) могу предложить другие предложения, в зависимости от характера проблемы.
Мне очень жаль, но я понятия не имею, как это выполнить. Мне нужно переместить исполняемый файл GS в папку с PDF? Как убедиться, что исходный файл не перезаписан, а к имени нового файла добавлена цифра или буква?
Спасибо за ваше терпение! Моя проблема была настолько эзотерической, что я не мог использовать для нее обычные форумы. Я на винде. У меня есть папка с моими PDF-файлами на Onedrive. Я бы хотел их переименовать, так как они обрабатываются ghostscript. Как мне изменить эти команды так, чтобы он брал файл «ABC.pdf» и переименовывал вывод в «ABC new.pdf»?
Кроме того, что такое «устройство pdfwrite»? Я планирую пересмотреть все это и изучить это, просто сейчас нет времени. Кроме того, это может помочь любому, кто столкнется с этой конкретной проблемой.
Устройства имеют номенклатуру Ghostscript. Его различные выходные «вещи» называются устройствами. Итак, есть устройство PNG (ну, на самом деле несколько, pngalpha, png16m и т. д.), То же самое для вывода TIFF. Для вывода PostScript существует устройство ps2write, которое записывает уровень языка PostScript 2 и т. д. Устройство pdfwrite не имеет никакого волшебства для присвоения имени выходному файлу, вам нужно указать ему, как вы хотите, чтобы он назывался. Поэтому, если вам нужен ABC.new.pdf, вам нужно указать «-o ABC.new.pdf». Я думаю, вы можете программировать сценарии оболочки, чтобы делать то, что вы хотите, но у меня нет опыта в этой области на Mac.
Извините, я все еще немного запутался. Если я хочу добавить число к имени файла исходного входного PDF-файла, как я буду использовать команду -o? Есть ли звездочка или другой символ, который мне нужно использовать, чтобы он повторно использовал исходное имя и добавлял к нему номер? Я хочу, чтобы «Файл A» превратился в «Файл A1», «Файл B» стал «Файл B1» и так далее.
Для вывода имен файлов доступны два «специальных» формата:% d и% s. Они такие же, как спецификаторы формата printf в языке C. Пока мы проигнорируем% s. Спецификатор формата% d означает «выводить каждую страницу ввода в новый файл и добавлять порядковый номер страницы к имени файла вместо% d». Итак, для конкретного примера: если у вас есть 10-страничный PDF-файл и выполните «-o out% d.pdf» с помощью pdfwrite, тогда вы получите файлы размером 10x1 страниц с именами out0.pdf в out9.pdf.
Вы не могу "повторно используете" исходное имя файла, а не помещаете это имя в переключатель -o. Чтобы перейти из входного файла с именем «Файл A.pdf» в выходной файл с именем «Файл A1.pdf», вам необходимо указать -o «Файл A1.pdf» в командной строке. Чтобы делать то, что вы пытаетесь делать, вам нужно делать это на более высоком уровне, вам нужно написать сценарий оболочки, как я предложил пару комментариев назад. Я не могу вам с этим помочь, потому что я ничего не знаю о написании сценариев оболочки на любой ОС Apple.
Я на винде. Спасибо, что научили меня! Я попробую (после предстоящих экзаменов).
Я предполагал, что будет операционная система Apple с тех пор, как вы упомянули iPad. Вы можете сделать что-то вроде этого в командной оболочке WIndows: "для% s в (* .pdf) выполните gswin64c -sDEVICE = pdfwrite -o% ~ ns1.pdf% s" Так что (в текущем каталоге) все файлы с расширением .pdf. Затем он загружает их один за другим в переменную с именем% s и вызывает командную строку Ghostscript. % ~ Ns извлекает только имя из переменной% s, затем я добавил в конец «1.pdf». Наконец,% s используется как имя входного файла для обработки Ghostscript.
Извините, я не понял. Я хочу переключить JPEG2000 на любой другой формат, который дает меньшее увеличение размера файла и вызывает минимальную потерю качества (в пределах разумного). Я понятия не имею, как использовать Ghostscript. Я в основном хочу изменить сжатие изображений на то, что будет правильно отображаться на iPad, сохранив при этом качество остального текста, а также встроенных закладок.