И опять про многостраничный PDF вопрос.

  • Автор темы Автор темы Bmax77
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Я думаю человеку вот чего хочется забабахать в итоге
 

Вложения

  • Scr11.jpg
    Scr11.jpg
    83.2 КБ · Просм.: 978
показывает сколько страниц до помещения
Там это делается несколько хакерским способом
Код:
function getRootPageNode(theFile){
    var tempLine = theFile.readln();

    // Go to line with /Page token in it
    while(tempLine.indexOf("/Pages") == -1){
        tempLine = theFile.readln();
    }

    // Extract the root page obj number
    return parseInt(tempLine.substring(tempLine.indexOf("/Pages") + 6), 10);
}
причем, мы как то уже здесь это обсуждали, данная конструция, мало того, что, фактически, считывает многометровый PDF, не факт, что всегда работать будет.
 
Я им давно и часто пользуюсь, работает всегда и правильно.
 
Я просто представляю себе сколько он будет винтом шуршать пока определит количество страниц на стометровом PDFе, подправленном непосредственно в акробате. Особо весело будет, если в акробате добавляли по одной странице - в этом случае после двадцатиминутного шуршания он выдаст неправильный результат.
 
Не знаю, в реальной жизни ничего подобного не встречал
Ну раз ты такой неверующий вот тебе пример из реальной жизни.
http://forum.rudtp.ru/resources/test.648/
Сделал одну страничку и три раза сдублировал. '))'
ЗЫ. На тот случай, если скажешь, что это жульничество, отвечу, именно этот пример PDF изначально не подходил под данный алгоритм, безо всякого добавления страниц.
Там в начале файла стоит конструкция
Код:
<<
/Type /Pages
/Kids [6 0 R]
/Count 1
>>
которая ему крышу срывает. А это стандартный сетап код.
 
Миша. Не морочь голову. Прекрасно и быстро работает тот скрипт.
Чего ты там ждёшь - бог весть.
 
  • Спасибо
Реакции: suntory
Сейчас сам гляну, что там за вариант у вас, но процитированный выше кусок кода на приложенном PDF не работает.
 
А впрочем да, работает, там чуть умнее сделано чем я изначально думал.
 
лень все скрипты проверять у меня стоящие. тыкнул первым, подвернувшимся - ImportMultipagePDF.
нуль секунд работы.
 
Не, так дело не пойдет ;)
ImportMultipagePDF тупо плейсит файл не заморачиваясь на определение количества страниц
Имелся в виду Скрипт Занелли который фактически парсит PDF
 
чо ты туда нафигачил-то (террорист!)? даже штатный - алерты выкидывает.

с псом погуляю - тыкну занеллиевским. счас некогда.
 
даже штатный - алерты выкидывает
Какой штатный? У меня все нормально открывается плейсится в любую программу, никаких алертов. А занеллевский вешает индизайн намертво.
Внимание - конкурс! Кто быстрее догадается что не так в приложенном PDF и почему он убивает скрипт? ;)
 
вешает.
 
Внимание - конкурс! Кто быстрее догадается что не так в приложенном PDF и почему он убивает скрипт?
В основном, проблема в непредусмотрительности автора, который не предусмотрел вот такой текст в pdf:
Код:
2 0 obj
<<
/Type /Pages
/Kids [6 0 R]
/Count 1
>>
endobj
1 0 obj
<<
/Type /Catalog
/Pages
2 0 R
/OutputIntents [4 0 R]
>>
endobj
Последнее вхождение "/Page" находятся после единственного вхождения "/Count".
Потом функция readPageCount запускает бесконечный цикл чтения файла от последнего вхождения "/Pages", поскольку "/Count" не найдется никогда.
PHP:
function readPageCount(theFile)
{
    // Read in first line of section
    var theLine = theFile.readln();

    // Locate the line containing the /Count entry
    while(theLine.indexOf("/Count") == -1 && !theFile.eof)
    {
        theLine = theFile.readln();
    }
    // Extract the page count
    return parseInt(theLine.substring(theLine.indexOf("/Count") +6), 10);
}
Я добавил в цикл проверку конца файла "&& !theFile.eof". В таком виде количество страниц не найдет, но по крайней мере не повесит InDesign.
 
вот скажи, Олег. Миша ведь просто сволотчь?
 
Ну почему же. Отладка чужого кода -- отличная тренировка мозга.
 
Статус
Закрыто для дальнейших ответов.