php сохранить в rtf
Php сохранить в rtf
Сообщения: 124
Благодарности: 2
Закоментировала строчки:
//header(‘Content-Type: application/msword’);
//header(‘Content-Disposition: inline, filename=cert.rtf’);
и посмотрела в браузере что выводит:
Наверно это касается только чистого doc(x) (не шаблон, без всяких спец-полей). Сохраните шаблон как обычный doc, и все спец-поля замените на простой текст >, т.е. текст без всяких примочек word. Этот doc уже в rtf. » |
Текст любой ценой: RTF
Что ж продолжим наши изыскания на предмет получения текста из различных форматов данных. Не так давно мы с вами научились вытаскивать текст из zipped-xml-based файлов (odt и docx), а также, в начале этой недели, из pdf. Сегодня мы продолжим с обещанным rtf.
Rich Text Format (он же rtf), вы могли бы подумать, достаточно забытый, хотя и не очень сложный формат представления текстовых данных. Что ж, относительно несложный для получения текста, но за свою историю: от своей первой версии до текущей 1.9.1 — он приобрёл под 300 страниц официально документации и огромное количество надстроек, которые в большей степени нам будут мешать при получении plain text’а. Попробуем их обойти.
А что там внутри?
Как уж повелось давайте заглянем вовнутрь rtf-файла и посмотрим, что там внутри:
Что мы видим? Я вижу наше любимое стихотворение «Парус». Мы видим изначально текстовый 8-битный формат данных. Это уже радует — когда в исходных данных текст, понимать, что происходит, гораздо проще. Теперь давайте разберёмся, как эти самые данные прочитать. Для этого я расскажу немного теории по теме.
Будем считать, что rtf состоит из управляющих слов, которые могут быть сгруппированы во вложенные множества. Управляющие слово начинается на обратный слэш ( \ ), группа обёрнута в фигурные скобки ( < и >).
Управляющие слово состоит из последовательности букв английского алфавита (от a до z ) и может быть завершено численным параметром (возможно отрицательным). Как вариант, слово может содержать один не цифро-буквенный ascii-символ. Всё, что не подпадает под эти правила, не является частью управляющего слова. Таким образом, последовательность вида \rtf1\ansi\ansicpg1251 без проблем делится на три слова rtf с параметром 1 (major-версия формата), ansi (текущая кодировка) и ansicpg с параметром 1251 (текущая кодовая страница под номером 1251 — т.е. Windows-1251).
Группированные множества определяют область действия управляющих слов. Таким образом, управляющие слова описанные внутри фигурных скобок работают только внутри них и всех дочерних подмножеств. Для того, чтобы правильно отработать какие слова имеют место сейчас — требуется вести стек управляющих слов. При открытии фигурной скобки создавать новый элемент-массив в стеке, в который сразу же добавлять данные предыдущего слоя стека, при закрытии скобки — удалять самый верхний слой.
Откуда брать текст?
С устройством нового для нас формата мы познакомились, теперь зададимся вопросом, а где брать текст. Тут всё не так сложно, как может показаться — текст надо брать там, где текущая последовательность не идентифицируется, как управляющее слово. С парой исключений, естественно.
Во-первых, стоит отметить, что исходная кодировка rtf-файла — это ANSI, поэтому без всякий изысков сохранится только, английский текст. Нас же интересует, как минимум, русский текст, а ещё лучше Unicode, не так ли? Что правда, то правда — rtf хоть и старый формат, но сгодится на сохранение и того и другого.
Ну и второй, более интересный вариант, это unicode-кодированные данные. Для них в формат включено лаконично короткое ключевое слово \uABCD с цифровым параметром ABCD. ABCD в данном случае код unicode-символа в десятичной системе счисления. Всё опять просто, как вы могли заметить.
Давайте почитаем!
Похоже, что накопленных нами данных будет достаточно, чтобы прочитать наши первые rtf-файлы. Поехали:
Код с комментариями вы можете получить на GitHub’е.
Заключение
Что дальше? Дальше я бы хотел затронуть форматы электронных книг, такие как fb2, epub и подобные им. В связи с этим, я хотел бы обратиться за помощью к читателям: во-первых, какие ещё форматы электронных книг стоит посмотреть, а во-вторых, где можно найти побольше файлов, указанных вами форматов. Заранее спасибо 🙂
Php сохранить в rtf
Сообщения: 124
Благодарности: 2
Закоментировала строчки:
//header(‘Content-Type: application/msword’);
//header(‘Content-Disposition: inline, filename=cert.rtf’);
и посмотрела в браузере что выводит:
Наверно это касается только чистого doc(x) (не шаблон, без всяких спец-полей). Сохраните шаблон как обычный doc, и все спец-поля замените на простой текст >, т.е. текст без всяких примочек word. Этот doc уже в rtf. » |
Php сохранить в rtf
Сообщения: 124
Благодарности: 2
Закоментировала строчки:
//header(‘Content-Type: application/msword’);
//header(‘Content-Disposition: inline, filename=cert.rtf’);
и посмотрела в браузере что выводит:
Наверно это касается только чистого doc(x) (не шаблон, без всяких спец-полей). Сохраните шаблон как обычный doc, и все спец-поля замените на простой текст >, т.е. текст без всяких примочек word. Этот doc уже в rtf. » |
Php сохранить в rtf
Сообщения: 124
Благодарности: 2
Закоментировала строчки:
//header(‘Content-Type: application/msword’);
//header(‘Content-Disposition: inline, filename=cert.rtf’);
и посмотрела в браузере что выводит:
Наверно это касается только чистого doc(x) (не шаблон, без всяких спец-полей). Сохраните шаблон как обычный doc, и все спец-поля замените на простой текст >, т.е. текст без всяких примочек word. Этот doc уже в rtf. » |
- php сохранить json в файл
- php сохранить в файл csv