Добавить html-код с изображениями base64 в заголовке с помощью iText [duplicate]

Ошибка произошла здесь из-за использования одинарных кавычек ('). Вы можете поместить свой запрос следующим образом:

mysql_query("
SELECT * FROM Users 
WHERE UserName 
LIKE '".mysql_real_escape_string ($username)."'
");

Он использует mysql_real_escape_string для предотвращения SQL-инъекции. Хотя мы должны использовать расширение MySQLi или PDO_MYSQL для обновленной версии PHP (PHP 5.5.0 и более поздних версий), но для более старых версий mysql_real_escape_string это будет трюк.

3
задан Bruno Lowagie 30 October 2015 в 16:06
поделиться

1 ответ

Пожалуйста, прекратите использовать HTMLWorker, как многократно повторялось в StackOverflow, класс HTMLWorker был оставлен в пользу XML Worker давным-давно. Мы не будем инвестировать в дальнейшее развитие HTMLWorker, поэтому использовать его очень плохо. Перейдите к XML Worker.

Также обновите до последней версии iText, версию, которую вы используете в датах с 4 февраля 2011 г. , за 4 года исправлено множество ошибок Прошло. Убедитесь, что у вас есть как контейнер iText, так и баннер XML Worker с тем же номером версии.

Изображения Base64 еще не поддерживаются, но я сделал вам очень простое доказательство концепции, показывая, насколько легко это заключается в добавлении поддержки для таких изображений. Взгляните на пример ParseHtml4 и полученный PDF: html_4.pdf .

Для этого вам нужно написать реализацию ImageProvider. Я сделал это, расширив класс AbstractImageProvider:

class Base64ImageProvider extends AbstractImageProvider {

    @Override
    public Image retrieve(String src) {
        int pos = src.indexOf("base64,");
        try {
            if (src.startsWith("data") && pos > 0) {
                byte[] img = Base64.decode(src.substring(pos + 7));
                return Image.getInstance(img);
            }
            else {
                return Image.getInstance(src);
            }
        } catch (BadElementException ex) {
            return null;
        } catch (IOException ex) {
            return null;
        }
    }

    @Override
    public String getImageRootPath() {
        return null;
    }
}

Как вы можете видеть, я проверяю существование "base64," в том, что передается XML-работнику через атрибут src тег img. Если присутствует String, я расшифровываю все, что следует за "base64,", и я возвращаю объект Image, который создается с помощью результирующих байтов.

После того, как вы создали эту реализацию ImageProvider, это только вопрос передачи его XML-работнику.

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

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