Считывание файла, считвыние файла построчно и считывание файла поблоково

  • Автор темы Автор темы Vadim_PDF
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
Собственно решил допилить под себя скрипт вставки мультистраничного PDF. Нашел в сети другой скрипт в котором была функция отвечающая за поверку количества страниц в PDF
Код:
function getNumberOfPdfPages(pdfFile){
    pdfFile.resolve();
    pdfFile.open("r", "TEXT", "");
    oneLine = pdfFile.readln();
    while (oneLine.indexOf("/N ") < 0){
        oneLine = pdfFile.readln();
        slashN = oneLine.indexOf("/N ");
        nextSlash = oneLine.indexOf("/" , slashN+1);
        pdfP = oneLine.substring(slashN+3 , nextSlash);
    }
    return(parseInt(pdfP));
Вставил - работает, но...
Это работает не всегда. Обычно - да, и работает быстро, так как /N находиться в 3-4 строке pdf, но например в pdf полученном из Preps - количество страниц идет значительно дальше и после /Counters. ладно, дописываю ещё одну функцию. Работает (опять таки - я так понял в спецификации pdf нет четкого задания количества станиц, то есть иногда количество страниц может быть вообще могут быть не указано в файле, а генерится в процессе чтения программой ?) дописываю, что если ничего не найдено - пусть выводит 9999 - там я укажу вручную.
Но есть проблема, - скрипт работает безобразно долго.. особенно на больших файлах. И не удивительно - построчная проверка, цикл... Пытаюсь обойтись вообще без строк - пусть загружает файл целиком. Работает и быстро, просто пуля :) - но если файл большой (500-800 Мб и такое бывает при спусках)- Out of memory (32 bit - печалька).
Так как не программист - вопрос,
1. Почему на 500M файле затык, если Indesign занимает пусть 500-800мБ оперативки. Он что, байт за два считает?
2. Можно ли считывать файл блоками (по 10-50-100 Mb)
3. Можно-ли ускорить построчный перебор.
4. Можно ли из скрипта (теоретически, код не прошу, просто для понимания) вызвать Acrobat, и получить уже из Acroba-та (передав ему другой скрипт например в виде параметра) точное количество страниц.
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

2) в .read() можно указать, сколько символов читать. pdfFile.read(1024); например
что будете делать, если граница попадет аккурат посередке числа страниц?
кстати, а если в pdf будет вся структура скомпрессирована - сможете все равно выудить информацию?

4) на windows можно через bridgetalk дернуть, на маке нет. может зависеть от версии
http://forums.adobe.com/thread/589719


а реально нужно это количество страниц? не зря в примере, идущем с InD помещают до возникновения ошибки ) хоть это и правда не всегда удобно, но жить можно

я уж молчу, что вставка спусков в InD тоже не совсем понятное действие - но вам виднее, конечно
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

PS вообще, в extendscript есть возможность добавления внешних библиотек. поэтому теоретически какую-нибудь open-source библиотеку для работы с pdf можно приспособить
Integrating External Libraries, стр 200 Java Script Tools Guide CS5
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

Спасибо за ответы.
1 - про то, что попадет по средине - знаю, поэтому думаю делать дополнительную проверку этого участка (+/- байт в разные блоки).

2.".а реально нужно это количество страниц?" - просто удобство и скорее интересно разобраться в скриптинге (да и программирование на начальном уровне понять)

3. "
вставка спусков в InD тоже не совсем понятное действие" -просто рабочий поток построен так, что:
a) Препс делает спуски на печатный лист (согласитесь, удобно при создании спусков, особенно где все в притык, видеть лист ) ,
б) Индизайн этот спуск помещает на форму (мы выводим формы, причем иногда разные, соответственно сдвиг положения печатного листа относительно формы тоже бывает разный. Например 2 машины с разными клапанами/форматами форм (не бумаги) печатают одну книгу).

Кроме того по моему опыту Preps отписывает PDF, за который я бы не поручился. Поэтому перегон через индизайн - одно из способов чистки/проверки/оптимизации. Минус - дополнительная клипинговая маска.
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

просто если спуск делать не надо, то можно обойтись циклом с прерыванием по ошибке, как в примере адобовском, и не париться )
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

a) Препс делает спуски на печатный лист (согласитесь, удобно при создании спусков, особенно где все в притык, видеть лист )
С этим полностью согласен - сам так делаю, но глубоко сомневаюсь, что РИП у вас не имеет настройки позиционирования на форме. Посему телодвижения с Индд (имхо) являются лишним звеном.
ЗЫ: и коль на то пошло, то выставить клапан с большИм количеством страниц в *пдф будет быстрей ПитСтопом
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

просто рабочий поток построен так, что:
Самый абсурдный поток о котором приходилось слышать. Зачем тут инди? Что вывод требует файл в формате формы? Но даже если так что мешает спускать из препса в формат форм? В крайнем случае нарисовать линиями формат бумаги. Да и как уже отмечено клапан можно задать в рипе или не поручусь правда за все но и на стп тоже можно. Или в репроцентре 25781198.jpg?
Кроме того по документации Preps никак не влияет на исходный PDF при работе в режиме PDFтоPDF, а только дописывает элементы спуска.
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

... глубоко сомневаюсь, что РИП у вас не имеет настройки позиционирования на форме.
конечно имеет, только выводимся на стороне.

На всякий случай уточнение - Preps 5.3.3 - на 6 -ника не перейду, ну не нравиться и все.. Java интерфейс с таймлагом - то ещё удовольствие.

ctp_power сказал(а):
Зачем тут инди? Что вывод требует файл в формате формы? Но даже если так что мешает спускать из препса в формат форм?
Уже писал - 1. нравиться видеть лист, его границы. 2. на фирме три печатные машины с разными клапанами, соответственно лист на форме должен быть расположен по разному. Порой книга печатается на 2-х или 3-х разных машинах. Делаем один спуск - потом (например) 1-10 печатный лист отправляем на Роланд, 11-25 - на Поли... и т.д.
ctp_power сказал(а):
Или в репроцентре...
- нет, вполне адекватные люди :) Очень редкие лажи и понимание. И не надо для каждого спуска звонить и объяснять какой клапан - просто упал файл на ftp - они его зацепили и в работу.
Кроме того - у нас такая договоренность - если что не так - можете выводить - все на нашей совести. От них я прошу МИНИМАЛЬНОГО "трогания" макета. Я сам траплю когда надо, сам отвечаю за оверпринты, и если протуплю и по ошибке отправлю 10 пантонов + CMYK - это только моя вина. И вы знаете такое Workflow вполне работоспособно. Более того удобно. Объяснения что и как сведены к минимуму. Единственное, что если в макете 3 краски (CM K без Y допустим) - то я предупреждаю, что бы пустую не выводили, хотя по моему Agfa Apogee отстреливает такие плиты сам и registration не переделивает на 4 краски.
ctp_power сказал(а):
Кроме того по документации Preps никак не влияет на исходный PDF при работе в режиме PDFтоPDF...
- эх.. Ваши слова да Preps-у в уши :)
Как говорят в полиграфии 2 больших глюка - Preps и PitStop - но без них никуда... Хотя справедливости ради стоит заметить, что в последние годы инструменты для полиграфии (Preps, PitStop, Prinect) стали почти идеальны. Вот 7-10 лет назад это была жесть! Одно неверное движение - расстрел!

P.S. Кроме того - пример. Работа (каталог А4 4+4, но некоторые тетрадки 2+2 CM и 2+3 СК + Pantone) - выделять для них отдельные шкалки? Пределывать темплейт? Нет времени и не мой метод. Делаю стандартный спуск 4+4 с СМУК шкалками, затем нужный диапазон страниц в Acrobate перекрашиваю в нужные цвета Prinect-ом или удаляю лишние (Ignore). Сохраняю, но отдавать такой файлик не рискну, обязательно перегоню через Indesign.

Почему? Да потому, что Acrobat (если не делать пересохранения Ctrl + Shift + S с оптимизацией) просто допишет изменения в файл, сохранив исходную версию, которую не дай Бог, поцепит РИП. Интересно, что стандартных инструментов, что бы её (исходную версию до сохранения) корректно достать - нет.

Однако столкнулся (отдавали на сторону трафарет, там Корелисты орудовали, попросили покривить.. Тяжелый случай.) что Corel - вместо того что бы открыть корректный файл с точки зрения Acrobat-а, Illustrator-а и многих други программ - достал исходную версию до сохранения - и люди не могли понять, почему у них текст не в кривых. :)
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

Vadim_PDF
Кварк часто делает ПДФ, в которых скрипт затыкается на определении количества страниц. Пересохранение из Акробата всегда решало проблему. Может, и в вашем случае проще так, чем писать скрипт на все случаи жизни?
Кстати, MultiPageImporter2.5.jsx тоже на этих препсовах файлах спотыкается? Или не пробовали его?
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

Спасибо, попробовал -работает, буду ковырять. Сохранение Акробатом решает проблему, потому, что он сразу дописывает в начало файла
<</Linearized 1/L 41362992/O 1760/E 2277168/N 20/T 41360728/H [ 621 717]>> - типа такого. Что отлично срабатывает при
поиске /N
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

такое Workflow вполне работоспособно. Более того удобно.
Но есть проблема, - скрипт работает безобразно долго.
Что мешает создать три папки на фтп, назвать их к примеру "Роланд 660х510 клапан 35", "Поли 650х530 клапан 40" и тд. Куда упало на такие формы и выводим. Или просто указывать в имени файла формат, клапан, линеатуру. Один раз согласовать это с репроцентром и забыть о проблеме? Много свободного времени? Не ищем легких путей?

P.S. Кроме того - пример. Работа (каталог А4 4+4, но некоторые тетрадки 2+2 CM и 2+3 СК + Pantone
Если много работ с пантонами надо просто в файле шкалки назначить плашкам спот и ремапить в препсе без переделки шаблонов.

Да потому, что Acrobat (если не делать пересохранения Ctrl + Shift + S с оптимизацией) просто допишет изменения в файл, сохранив исходную версию, которую не дай Бог, поцепит РИП.
Чушь полнейшая. Структура пдфа такова, что при квиксейве Акробат удаляет старое дерево объектов и дописывает новое не изменяя самих объектов. При этом Рип не имеет ну никакой возможности визуализации предыдущих версий. Но вот если вы будете использовать Linearized пдф как говорится глюки милости просим.

- эх.. Ваши слова да Preps-у в уши
В режиме PDF то PDF препс формально модифицирует пдф средствами акробата, так что по факту все глюки это глюки акробата.

Corel - вместо того что бы открыть корректный файл
Присылайте файл рассмотрим его корректность.
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

ctp_power - я прошу прощения - в каком волшебном мире вы живете?
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

1. Три папочки.. ремап в Prepsе..
ctp_power - не напрягайте своим неверием. Вы доверяете Preps - ок, я нет. Уменя есть своя статистика веселых глюков, у вас она вероятно отсутствует. Если бы я выкладывал на форум все те замечательные приколы которые я ловил Prepse - включая замену местами 2-х картинок в режиме PDF (в котором, как вы утверждаете Препс внутрь файла не лезет) то я думаю моих тем было бы на порядок больше. Я уже не говорю о том, что в случае поломки в репроцентре, порой передаем работу в ещё один репроцентр. Там тоже объяснять?


2. По поводу чуши - "Иди и смотри" или "Вложи перста, Хома"
Вот файл (тут парсер у вас что-ли стоит??? ссылку не могу выложить rghost РУ косая 41349847 ) - в Corel x5 (возможно в других тоже все печально) попробуйте открыть, на машине шрифты FuturisC, FuturisLightC и FuturisXC должны быть отключены, иначе Corel сможет их открыть в кривых, или в виде текста (в зависимости от настроек импорта). Без них попросит автозамену.


А теперь вопрос - если Corel может - то за РИП-ы я точно не поручусь. Единственный известный мне РИП - который работает максимально корректно - Photoshop. Остальным не доверяю, но пользуюсь так как выхода нет.


3. Много свободного времени? Не ищем легких путей? - ... вопрос был про скрипты. А по поводу скорости спусков, свободного времени и количества ошибок в них.. ctp_power - "поучите жену щи варить"
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

На мой взгляд, проблема высосана из пальца. Задание количества страниц через /N да еще и в третьей строке, в PDF вовсе необязательно по стандарту (с чем вы уже столкнулись). Корректно определить реальное количество страниц в файле можно только полностью интерпретировав его. А пересохранять файл в акробате, чтобы он эту строчку дописал - так не проще ли переименовать файл так, чтобы количество страниц уже в названии фигурировало?
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

вопрос был про скрипты.
Писать скрипты для автоматизации бессмысленных действий это крайне любопытный подход. 'cool))'

поучите жену щи варить
Я и не учу никого, по крайней мере бесплатно, а рекомендую рациональный порядок работы. Самоуверенность клиента лучший друг репрографа — выведем и перевыведем за ваши деньги. :D


Не по теме:
Касательно корела — короткая версия он не при делах. Проблема грязных рук. :y)

В чем по вашему кошерность данного пдфа? Типа сделан в CS6, работали профессионалы? ':(!!'
Читайте http://www.adobe.com/devnet/acrobat/pdfs/PDF32000_2008.pdf стр. 675
NOTE A linearized PDF is optimized for viewing of read-only PDF documents. A linearized PDF should be generated once and read many times.

Один раз сгенерировал и смотри сколько хочешь — трогать не сметь! Ну не предназначен linearized PDF для допечати так как кумулятивный апдейт вариативно обрабатывается, смотри стр. 695

The conforming reader may be requested to open a PDF file at an arbitrary page. The page can be specified in one of three ways:
• By page number (remote go-to action, integer page specifier)
• By named destination (remote go-to action, name or string page specifier)
• By article thread (thread action)

Корел видит в linearized PDF старое древо объектов потому что это разрешено спецификацией и считывает видимо начиная не с инкрементного дерева, а со структуры страницы, вот и предлагает выбрать как открывать. Что собственно и описано в документации. Могу согласится что логика спорная. Но это даже не глюк, а можно сказать дополнительная возможность. В адобе пацаны видимо не предполагают что сохраняя файл с параметром " Оптимизировать для Интернета" "премудрые препрессоры" его будут пихать куда-то ещё :D

Так что завязывайте с linearized PDF

 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

На мой взгляд, проблема высосана из пальца.
Да тут как бы и не проблема, просто так сложилось исторически, что скрипты Индизайна не могут получить доступ к такой мелочи. Ну да ладно...

Писать скрипты для автоматизации бессмысленных действий ...
Скрипт для постраничной вставки PDF который сразу показывает количество страниц - оптимизация бессмысленых действий?


В адобе пацаны видимо не предполагают что сохраняя файл с параметром " Оптимизировать для Интернета" "премудрые препрессоры"
ага..
и именно поэтому они включили эту галочку во всех пресетах Press Quality, High Quality Print
Объясните удаленно своему заказчику, как получить pdf годный в печать, и почему экспорт из Индизайна High Press Quality - плохое решение.

ctp_power - Вы по существу не сказали ничего. Вы троль? Так я уже по-моему перекормил Вас. Больше еды не будет!
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

Скрипт для постраничной вставки PDF который сразу показывает количество страниц - оптимизация бессмысленых действий?
Тото и оно, что получить количество страниц можно только поместив PDF целиком и никак иначе. Быстрее не получится. Или вы считаете, что считать скриптом и отпарсить самому PDF как текст будет работать быстрее, чем поместить? Очень сомневаюсь в этом.
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

Кроме того по моему опыту Preps отписывает PDF, за который я бы не поручился. Поэтому перегон через индизайн - одно из способов чистки/проверки/оптимизации.
С каких пор Индизайн стал средством проверки *пдф? - PitStop, PDFToolbox, Штатные средства проверки Акробата (имхо).
Например 2 машины с разными клапанами/форматами форм (не бумаги) печатают одну книгу
Единожды созданые два Actions в PitStop добавляющие нужный клапан для этих машин это намного проще чем тянуть всё в Индд (имхо)
каталог А4 4+4, но некоторые тетрадки 2+2 CM и 2+3 СК + Pantone
В моей практике небыло случая отправки на вывод спусков без сопроводительного файла. В оном указывается и количество форм (лишние просто не выводятся - это намного проще чем переделывать темплейты). Что касаемо пантонов было сказано выше - ремап.
"поучите жену щи варить"
Не мне сказано но скажу. Вас действительно пытаются "направить на путь истинный". У вас получается, что-бы вкрутить лампочку нужно крутить табуретку. И вы пытаетесь придумать механизм "кручения" этой табуретки. Бред (имхо).
 
Ответ: Считывание файла, считвыние файла построчно и считывание файла поблоково

Знаете, очередной раз - суть из анекдота "Почему трудно заняться сексом на улице - Советчиков будет дофига.."
Был вопрос про одно - тут же пошли советы не по теме.
Думаю топик пора закрывать - все равно по теме информации ноль.
 
Статус
Закрыто для дальнейших ответов.