Comments 49
Хотелось бы увидеть код для DJVU, есди это возможно.
Зачем? Там ведь только картинки.
там может быть текстовый слой. но это скорее редкость
Да, «текстовое» происхождение у них очень редкое, чаще скан.
Хотя пару раз натыкался на документы, которые были сканом с текстовым слоем из FineReader.
Тут больше любопытство и спортивный интерес :)
Хотя пару раз натыкался на документы, которые были сканом с текстовым слоем из FineReader.
Тут больше любопытство и спортивный интерес :)
надо только не забывать что чаще всего в DJVU нет текстового слоя, а есть только картинка с текстом — её можно разве что только распознать каким-нибудь FineReader-ом, но это уже совсем другая тема.
Только хотел написать что RTF напомнил мне по структуре LaTex, а у вас и ссылка в конце стоит :)
Ошибка:
#14 for ($i =; $i < strlen($text); $i++) {
#14 for ($i =; $i < strlen($text); $i++) {
И еще тут:
#54 if ($ucDelta > )
#54 if ($ucDelta > )
Спасибо, конечно, но это хайлайтер highlight.hohli.com/ как-то странно формирует выходной поток, что хабр обрезает единичку — в комментированном исходнике по ссылке, всё нормально.
Угу. Заметил, что по ссылке все ок.
Вопрос может немного не в тему, подскажите — как объединить два rtf файла в один?
Т.е. есть договор и приложение к нему двумя файлами. Как сделать один единый документ?
Вопрос может немного не в тему, подскажите — как объединить два rtf файла в один?
Т.е. есть договор и приложение к нему двумя файлами. Как сделать один единый документ?
Ну так навскидку — сделать merge стилей (добавить недостающие шрифты/палитры в \fonttbl и \colortbl), оставшееся приложение с учётом изменений ссылок на стили дописать перед последней }. Из коробки у меня решения нет :)
поидее если просто склеить тела документов, то всё должно быть хорошо.
только посередине стоит вставить перевод страницы (\page ) или строки (\par или \line — по ситуации) и хотя бы сброс стилей параграфа ( \pard )
пример: есть два документа {\rtf1… hello… } и {\rtf1… bye… }
если склеить должно получится:
{\rtf1… hello… \pard \page… bye… }
возможно, переопределять стили, шрифты и цвета второй раз не очень хорошо. но на первый взгляд работает.
только посередине стоит вставить перевод страницы (\page ) или строки (\par или \line — по ситуации) и хотя бы сброс стилей параграфа ( \pard )
пример: есть два документа {\rtf1… hello… } и {\rtf1… bye… }
если склеить должно получится:
{\rtf1… hello… \pard \page… bye… }
возможно, переопределять стили, шрифты и цвета второй раз не очень хорошо. но на первый взгляд работает.
Спасибо конечно, это вроде и так понятно. Но проблема как раз-таки и состояла в том, как отделить тело от хедера и футера. Попробуйте создать два документа (желательно побольше, может даже вставить текст какого-то договора) в MS Word в формате rtf и склеить их через блокнот. Наверное тогда вы лучше сможете понять мою проблему.
forum.script-coding.info/viewtopic.php?id=4832
Использовала, проблема — поддержка только одноколоночного формата.
www.sobolsoft.com/howtouse/combine-rtf-files.htm — здесь проблема поменьше — 30 долларов :)
Если кто знает как без проблем — просьба отписать.
Использовала, проблема — поддержка только одноколоночного формата.
www.sobolsoft.com/howtouse/combine-rtf-files.htm — здесь проблема поменьше — 30 долларов :)
Если кто знает как без проблем — просьба отписать.
выскажусь в защиту rtf — формат читается как на винде, так и на линуксе (убунту) без установки доп. софта (ворда или openoffice), в отличие, например от doc. В тоже время в rtf можно оформлять текст, делать списки. Поэтому резюме в нем храню.
Вообще, его никто не ругает — хороший формат. При отсутствии носителя можно открыть небольшой файл в блокноте и выписать содержимое на листочек :)
Не ругаете, но у вас он
> достаточно забытый
А у меня вовсю используется. Компромиссный вариант между просто текстом и громоздким и требовательным к ПО doc.
> достаточно забытый
А у меня вовсю используется. Компромиссный вариант между просто текстом и громоздким и требовательным к ПО doc.
Что ж согласен, для мультиплатформенности и нересурсоёмкости — самое оно. Да и работает, как правильно подметили, из коробки.
очень даже используется. это один из самых безболезненных способов делать на сайтах автоматически генерируемые документы, которые можно потом открыть в ворде.
Ошибка:
$text = file_get_contents($filename);
if (empty($infile))
return "";
вероятно, тут $text на пустоту должен проверяться? Кстати, проверка empty не очень хороша, потому что даст true на тексте '0'.
Кроме того, выносите вычисление длины и прочего за условие цикла:
for ($i = 0; $i < strlen($text); $i++)
замените на
for ($i = 0, $len = strlen($text); $i < $len; $i++)
иначе у вас strlen будет вычислять значение на каждом шаге цикла
$text = file_get_contents($filename);
if (empty($infile))
return "";
вероятно, тут $text на пустоту должен проверяться? Кстати, проверка empty не очень хороша, потому что даст true на тексте '0'.
Кроме того, выносите вычисление длины и прочего за условие цикла:
for ($i = 0; $i < strlen($text); $i++)
замените на
for ($i = 0, $len = strlen($text); $i < $len; $i++)
иначе у вас strlen будет вычислять значение на каждом шаге цикла
Что ж с первой «ошибкой» согласен — свой копипейст нужно проверять ;)
А про strlen — соглашусь, что каждый раз. Но я не писал самый оптимальный алгоритм (если глянуть на чтение мной pdf'а, так там вообще оптимизировать и оптимизировать). Но всё равно, Евгений, спасибо — добавил в исходном коде по ссылке.
А про strlen — соглашусь, что каждый раз. Но я не писал самый оптимальный алгоритм (если глянуть на чтение мной pdf'а, так там вообще оптимизировать и оптимизировать). Но всё равно, Евгений, спасибо — добавил в исходном коде по ссылке.
Интересно.
Было бы здорово, если бы вы написали, как средствами PHP «собрать» Excel файл, причем — прежней Эксели (1997-2003), а не новой — 2007 года.
Было бы здорово, если бы вы написали, как средствами PHP «собрать» Excel файл, причем — прежней Эксели (1997-2003), а не новой — 2007 года.
возможно Вам будет полезно вот это
Можно просто вывести данные в HTML табличку и
В любой версии Excel откроется. Можно любые стили применять, только не подключать внешние стайлшиты. То же самое с вордом:
В любой версии Excel откроется. Можно любые стили применять, только не подключать внешние стайлшиты. То же самое с вордом:
Можно просто вывести данные в HTML табличку и добавить соответствующий хидер:
header(«Content-type: application/vnd.ms-excel»);
header(«Content-Disposition: attachment;Filename=document_name.xls»);
В любой версии Excel откроется. Можно любые стили применять, только не подключать внешние стайлшиты.
То же самое с вордом:
header(«Content-type: application/vnd.ms-word»);
header(«Content-Disposition: attachment;Filename=document_name.doc»);
header(«Content-type: application/vnd.ms-excel»);
header(«Content-Disposition: attachment;Filename=document_name.xls»);
В любой версии Excel откроется. Можно любые стили применять, только не подключать внешние стайлшиты.
То же самое с вордом:
header(«Content-type: application/vnd.ms-word»);
header(«Content-Disposition: attachment;Filename=document_name.doc»);
Я понимаю, что откроется. Но все эти ухищрения не от хорошей жизни, так ведь? Тётенька из бухгалтерии вполне вероятно вашу табличку откроет в браузере и завопит, что у ней Excel сломался. Давайте мыслить масштабней.
Тетенька не сможет открыть этот файл так просто в браузере — это будет файл с расширением XLS. Понятно что это не полноценный Excel файл, но задачу решает более чем в 90% случаев. Опять же, там можно сделать любое форматирование.
Никто не говорит, что Ваш вариант неверный, неправильный. Просто Вы идёте простым путём, а я напролом, но идеологически правильней. К тому же Вы по большей части рассуждаете о записи данных — меня интересует чтение.
Почему именно чтение, да потому что в интернетах по сервакам разбросаны документы именно в doc'ах, rtf'ках и odt'шках, а не всё подряд в переименованном html'е. Индексирование — вот первоцель статей.
Почему именно чтение, да потому что в интернетах по сервакам разбросаны документы именно в doc'ах, rtf'ках и odt'шках, а не всё подряд в переименованном html'е. Индексирование — вот первоцель статей.
Пытаюсь приспособить Ваш скрипт для своих нужд, но не очень получается (с rtf первый раз). Поможете?
У меня куча файлов типа такого route2.ru/obzor/data/as1075.rtf, в wordpad вполне прилично выглядят. В них нет картинок, но встречается текст разной жирности, которую нужно вытаскивать. Из-за этого я подумал, что хорошо бы конвертировать rtf не просто в plain text, но в html. Возникает проблема — по-видимому, разные версии wordpad генерят разный rtf. В моих исходниках когда начинается жирный текст, ставится /b, но в конце тега /b0 нет. Если же я открою файл и пересохраню, то он становится гораздо красивее, в полтора раза меньше, и появляются /b0. Но работать нужно с исходниками. Есть идеи, как отлавливать, что тег /b закончился?
У меня куча файлов типа такого route2.ru/obzor/data/as1075.rtf, в wordpad вполне прилично выглядят. В них нет картинок, но встречается текст разной жирности, которую нужно вытаскивать. Из-за этого я подумал, что хорошо бы конвертировать rtf не просто в plain text, но в html. Возникает проблема — по-видимому, разные версии wordpad генерят разный rtf. В моих исходниках когда начинается жирный текст, ставится /b, но в конце тега /b0 нет. Если же я открою файл и пересохраню, то он становится гораздо красивее, в полтора раза меньше, и появляются /b0. Но работать нужно с исходниками. Есть идеи, как отлавливать, что тег /b закончился?
Это адаптированный перевод?
Вроде бы вот оригинал
www.webcheatsheet.com/php/reading_the_clean_text_from_rtf.php
Вроде бы вот оригинал
www.webcheatsheet.com/php/reading_the_clean_text_from_rtf.php
Вау! Меня переводят и перепечатывают (скрежещет зубами из-за позорного плагиата)! Уверяю Вас писал всё сам, это легко приметить, в тексте на англоязычном сайте упоминается кодировка cp1251 — странно, что английский/американский программист по умолчанию разбирает текст в кирилице ;)
Надо бы написать им письмо с просьбой поставить метку о том, что это перевод статьи.
Надо бы написать им письмо с просьбой поставить метку о том, что это перевод статьи.
Более того, на скриншоте на вышеупомянутом сайте совсем другие данные, нежели обсуждаются в статье. Да и посмотрев мои остальные статьи, Вы вполне можете сделать вывод, что изыскания я делал сам — копаться надо было глубоко, а скрипты-поделки из интернетов мне не подходили.
Хорошая, а главное простая статья как генерировать RTF на основе шаблонов:
www.freeweb.hu/php5unleashed/ch28lev1sec1.html
рекомендую. Сам долго искал.
www.freeweb.hu/php5unleashed/ch28lev1sec1.html
рекомендую. Сам долго искал.
Может кому пригодится: PHPRtfLite. Библиотека для работы с RTF, поддерживает работу с таблицами, картинками, колонтитулами. В свое время помогла.
Для меня было важно дополнить массив $failAt метода rtf_isPlainText() значением «pict». В моем случае это была картинка.
Не работает скрипт. Выдает не в той кодировке. Пример — Ïðàâèëà
Милый мой Fadeev, перед тем как размахивать шашкой и кричать, что скрипт не работает, наверное всё же стоит заглянуть вовнутрь и понять, что же происходит. Советую внимательно рассматривать строчку №232 до просветления. Если последнее не появится, увы и ах — похоже программирование не для Вас. Удачи Вам.
Без этого комментария я сразу с этой строчкой и начал работать, пока, правда, без результата.
И даже если делать вот так HTML-Entities → CP1252 → CP1251
то все равно появляются пробелы в тех местах, где не нужно.
то все равно появляются пробелы в тех местах, где не нужно.
В скрипте — windows-1250 — это среднеевропейская кодировка (я нахожусь в Чехии, халтура предполагала работу с чешским языком). Вы пытаетесь сконвертировать latin-1 (или если угодно windows-1252) в windows-1251.
Пробелы вполне могут появляться из-за того, что скрипт неверно работает с мультибайтовыми кодировками с пустым верхним байтом. Исправлять это не буду, не пишу в PHP больше четырёх лет. Если у Вас есть возможность, желание и знания разобраться, как и почему это не работает, и как это исправить — сделайте pull request.
Ещё раз удачи.
Пробелы вполне могут появляться из-за того, что скрипт неверно работает с мультибайтовыми кодировками с пустым верхним байтом. Исправлять это не буду, не пишу в PHP больше четырёх лет. Если у Вас есть возможность, желание и знания разобраться, как и почему это не работает, и как это исправить — сделайте pull request.
Ещё раз удачи.
del *не в ту ветку*
Sign up to leave a comment.
Текст любой ценой: RTF