преобразование текстового файла в pdf [дубликат]

Прежде всего, если вы находитесь в & lt; 5.3PHP, то нет. У тебя много проблем, чтобы справиться.

Я удивлен, что никто не упомянул библиотеку intl , которая имеет хорошую поддержку для unicode, графем, строковых операций, локализации и многих других, см. ниже.

Я приведу некоторую информацию о поддержке Unicode в PHP с помощью слайдов Elizabeth Smith в PHPBenelux'14

INTL

Хорошо:

  • Обертка вокруг библиотеки ICU
  • Стандартизованные локали, установка языка для каждого скрипта
  • Форматирование чисел
  • Форматирование валюты
  • Форматирование сообщений (заменяет gettext)
  • Календари, даты, часовой пояс и время
  • Транслитератор
  • Spoofchecker
  • Пакеты ресурсов
  • Конвертеры
  • Поддержка IDN
  • Graphemes
  • Collation
  • Итераторы

Плохо :

  • Не поддерживает zend_multibite
  • Не поддерживает преобразование входного сигнала HTTP
  • Не поддерживает перегрузку функции

mb_string

  • Включает поддержку zend_multibyte
  • Поддерживает прозрачную кодировку HTTP in / out
  • Предоставляет некоторые обертки для funtionallity, такие как strtoupper

ICONV

  • Первичный для преобразования кодировки
  • Обработчик выходных буферов
  • Функциональность кодирования mime
  • conversion
  • некоторые строковые помощники (len, substr, strpos, strppos)
  • Фильтр потока stream_filter_append($fp, 'convert.iconv.ISO-2022-JP/EUC-JP')

БАЗЫ ДАННЫХ

  • mysql: кодировка и сопоставление таблиц и соединений (не сортировка). Также не используйте mysql-msqli или PDO
  • postgresql: pg_set_client_encoding
  • sqlite (3): убедитесь, что он был скомпилирован с поддержкой unicode и intl

Некоторые другие Gotchas

  • Вы не можете использовать имена файлов Unicode с PHP и Windows, если вы не используете расширение третьей части.
  • Отправлять все в ASCII, если вы используете exec, proc_open и другие вызовы командной строки
  • Обычный текст - это не обычный текст, файлы имеют кодировки
  • Вы можете конвертировать файлы «на лету» с фильтром iconv

Я обновлю этот ответ, если что-то изменит добавленные функции и так далее.

0
задан Alexis Pigeon 13 June 2013 в 10:55
поделиться

1 ответ

Прошу прощения, но вы не показываете какой-либо соответствующий код, поскольку код, который вы копируете / вставляете, не несет ответственности за указанное вами исключение.

Соответствующая часть заключается в том, что вы используя JSP, и что вы не прочитали важные предупреждения, касающиеся JSP, перечисленные в главе 9 моей книги .

Когда вы пишете JSP, вам, вероятно, нравится пробел и отступ, например:

<% //a line of code %>
<%
   // some more code
%>
<% // another line of code %>
<%
   response.getOutputStream();
%>

Это всегда вызывает исключение "getOutputStream() has already been called for this response" независимо от того, используете ли вы iText или нет. Метод getOutputStream() был назван моментом, когда вы ввели свой первый символ пробела в свой JSP-скрипт.

Чтобы исправить это, вам нужно удалить все пробелы:

<% //a line of code %><%
   // some more code
%><% // another line of code %><%
   response.getOutputStream();
%>

Ни один символ не принимается вне маркеров <% и %>. Как поясняется в лучших руководствах JSP, вы не должны использовать JSP для создания двоичных файлов. Почему нет? Поскольку JSP вводит символы пробела в произвольных местах вашего двоичного файла. Это приводит к повреждению файлов. Вместо этого используйте Servlets!

1
ответ дан Bruno Lowagie 28 August 2018 в 12:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: