• 📣 БЕСПЛАТНЫЙ ВЕБИНАР WAPT & SQLiM: взламываем веб как профессионалы. Ждем вас 3 апреля 19:00 (МСК). регистрация здесь. Что разберём: Поиск уязвимостей через фаззинг, Реальные SQL- и командные инъекции (с выводом RCE), Эскалация привилегий после взлома, Разбор похожих задач из курсов WAPT и SQLiM.

    >>> Подробнее <<<

Вопрос: Есть картинка в RT поле и надо поверх картинки написать текст. Как такое можно сделать?

Ficoos

Lotus Team
15.03.2016
171
5
BIT
413
Вобщем вопрос в том, что есть у меня база, которая отправляет автоматически письма из шаблона, типа поздравления с каким-нибудь праздником. Хотелось бы персонализировать надпись на картинке. Например: картинка (Не вложение, а именно картинка), на изображении документа Lotus Notes картинки в поле RT, наложить текст, типа: "Дорогая Мария Ивановна!" и т.д. Возможно ли такое сделать или надо рыть в направлении java или javascript?
 
Последнее редактирование:
я так понимаю речь про watermark на изображении.
Насколько я вижу:
1. Есть картинка "база", без надписи
2. Есть код, который делает новую картинку из базовой, добавляя watermark
3. Новая картинка отправляется получателю (либо ссылка на документ где хранится)
4. Опционально сохраняется результат на случай тезок.

Как добавить сам watermark, тут надо искать подходящее решение, потому что на ls из коробки нет этого.
Это может быть либо внешний софт, либо самописный (язык не особо важен), главное вызвать с параметрами.
Если требуется именно код в домино встроить, то там java нужна.

Не занимался подобным, я бы сделал либу на java, подключил её к веб-сервису и пусть по запросам делает.
Либо внешнее приложение на той же java и вызывал бы его программно с параметрами.
 
  • Нравится
Реакции: lmike
я так понимаю речь про watermark на изображении.
Насколько я вижу:
1. Есть картинка "база", без надписи
2. Есть код, который делает новую картинку из базовой, добавляя watermark
3. Новая картинка отправляется получателю (либо ссылка на документ где хранится)
4. Опционально сохраняется результат на случай тезок.

Как добавить сам watermark, тут надо искать подходящее решение, потому что на ls из коробки нет этого.
Это может быть либо внешний софт, либо самописный (язык не особо важен), главное вызвать с параметрами.
Если требуется именно код в домино встроить, то там java нужна.

Не занимался подобным, я бы сделал либу на java, подключил её к веб-сервису и пусть по запросам делает.
Либо внешнее приложение на той же java и вызывал бы его программно с параметрами.
А есть ли отличие в реализации, если на картинке уже есть надпись и надо только заменить метки на слова? Например, на картинке сделана надпись в MS Word или в MS Point. Или нет разницы?
 
Вы попробуйте сделать это вручную в РТ поле, и если получится - имеет смысл покопать LS (скорее всего получится).
Если не получится, то варианты
1. Делать письмо в HTML, там уже играться с вёрсткой.
2. Готовить картинку перед отправкой, с отрисовкой на ней нужных текстов через java
 
А есть ли отличие в реализации, если на картинке уже есть надпись и надо только заменить метки на слова? Например, на картинке сделана надпись в MS Word или в MS Point. Или нет разницы?
Вот сейчас не понял, если честно.
Для меня надпись на картинке, это уже картинка. Буквы те же пиксели.
Слои я только в фотошоп и подобных редакторах видел.
Про word/point, там были объект wordArt , то это не то же самое что слои. Они как бы сверху да, но как итоговое получать? Печатать разве что.

Картинка в теле письма, это в сторону mime / inline-image надо смотреть.
Вот, может поможет:
 
А есть ли отличие в реализации, если на картинке уже есть надпись и надо только заменить метки на слова? Например, на картинке сделана надпись в MS Word или в MS Point. Или нет разницы?
странно звучит
в верстке, хтмл, возможно многое, но отображение, и особенно: при пересылке, уже проблемы
проще наложить "текст" на картинку, куча либ (для изображений) на джава
 
странно звучит
в верстке, хтмл, возможно многое, но отображение, и особенно: при пересылке, уже проблемы
проще наложить "текст" на картинку, куча либ (для изображений) на джава
Это я уже понял. Мне пока удалось разобрать картинку в dxl из документа и собрать ее обратно в картинку в файл и сохранить на диск.
Сейчас изучаю инструменты присовокупления текста в файл изображения. И java и dll. Пытаюсь понять методы этого всего оборудования.
 
Это я уже понял. Мне пока удалось разобрать картинку в dxl из документа и собрать ее обратно в картинку в файл и сохранить на диск.
Сейчас изучаю инструменты присовокупления текста в файл изображения. И java и dll. Пытаюсь понять методы этого всего оборудования.
три строчки об асфальт
 
три строчки об асфальт
Спасибо! Но есть препятствие: Путь к выгруженному файлу изображения знает только LS агент, а после наложения текста и сохранения на диске путь к обработанному файлу изрбражения знает только java. А такая обработка у меня массовая, например персонально поздравить какую-нибудь контору с персонализированной надписью и отослать адресату. Как бы сделать обмен параметрами между LS-lava-LS...&
 
Как бы сделать обмен параметрами между LS-lava-LS...&
1. Через файл на диске, который всегда лежит в одном месте.
2. Через документ в базе, который можно всегда найти
3. Сделать более общий путь до файлов, а результирующие имена сделать похожими.
 
1. Через файл на диске, который всегда лежит в одном месте.
2. Через документ в базе, который можно всегда найти
3. Сделать более общий путь до файлов, а результирующие имена сделать похожими.
Геморно это:
1. Файла на диске изначально нет. Его имя знает только LS когда его там сохраняет. Я же говорил, что это массовая рассылка. Там заготовок лотусовых документов с картинками могут быть много и разные картинки в них.
2. Агент LS может обрабатывать несколько документов в представлении. Каждый документ коллекции имеет свой список адресатов, текст и картинку. И какой документ сейчас на обработке - java не знает и будет перебирать все файлы в "Temp" папке. Это тупик!
3. Путь к папке - общий, а вот файлы картинок разные. Планировалось имена файлам давать по адресату. Но опять же... передача параметров...

Вывод: Либо всего агента полностью писать на java, либо на LS. Вот пытаюсь учить java для Lotus Notes. Пока не очень! (
 
Последнее редактирование:
Вывод: Либо всего агента полностью писать на java, либо на LS. Вот пытаюсь учить java для Lotus Notes. Пока не очень! (
Ну во ту меня вопрос как это работает, есть предположение:
Агент, серверный, получает пачку документов, затем каждый из них обрабатывает.
Затем этот агент запускает агент на java
Затем после обработки агента java, агент LS продолжает что-то делать.

Если это так, то агент на java можно запустить по документу, который предварительно надо создать и заполнить в нём поля, имена любые.
Агент на java получает этот документ, читает поля, понимает где файл, делает своё дело, пишет в этот документ в другое поле путь к новому файлу, сохраняет документ.
Агент на LS, переполучает документ, который был отправлен в агент java, читает новое поле для нового файла и продолжает работу.

Еще можно через runWithDocumentContext , если сторона исполнения двух агентов одна и та же: сервер-сервер, клиент-клиент.
Тогда промежуточный сейв документа не нужен будет и переполучать не надо будет, уже всё сразу работает.
 
Ну во ту меня вопрос как это работает, есть предположение:
Агент, серверный, получает пачку документов, затем каждый из них обрабатывает.
Затем этот агент запускает агент на java
Затем после обработки агента java, агент LS продолжает что-то делать.

Если это так, то агент на java можно запустить по документу, который предварительно надо создать и заполнить в нём поля, имена любые.
Агент на java получает этот документ, читает поля, понимает где файл, делает своё дело, пишет в этот документ в другое поле путь к новому файлу, сохраняет документ.
Агент на LS, переполучает документ, который был отправлен в агент java, читает новое поле для нового файла и продолжает работу.

Еще можно через runWithDocumentContext , если сторона исполнения двух агентов одна и та же: сервер-сервер, клиент-клиент.
Тогда промежуточный сейв документа не нужен будет и переполучать не надо будет, уже всё сразу работает.
Хороший план! Спасибо! Осталось только изучить как java в лотусе работает. Раньше никогда на java не писал. Но с чего-то надо начинать! )
 
Спасибо! Но есть препятствие: Путь к выгруженному файлу изображения знает только LS агент, а после наложения текста и сохранения на диске путь к обработанному файлу изрбражения знает только java. А такая обработка у меня массовая, например персонально поздравить какую-нибудь контору с персонализированной надписью и отослать адресату. Как бы сделать обмен параметрами между LS-lava-LS...&
LS2J
обмен через InpuStream в java
вся логика будет в ЛС, только работа с имеджем - в java
никаких проблем с путями и прочим
в агенте не желательно (java) там свои тараканы:
- сборка мусора отложена
- синглтоны не работаю штатно
- медленно инициализируется
...
 
  • Нравится
Реакции: Gandliar
Извиняюсь за ламерский вопрос!
А можно как-то подружить mime и canvas?
Тут на просторах необъятного интернета наткнулся на код HTML странички с вшитым скриптом на js - всего 10 строк и на странице уже складывает текст на изображение, где src = путь к jpg файлу относительно файла html, который открывается.
JavaScript:
<script>
// (B) IMAGE + TEXT + CANVAS
var img = new Image(),
    txt = "Да здравствует 1, 9 МАЯ и Новый Год! УРАААААА!!!!",
    canvas = document.getElementById("demo"),
    ctx = canvas.getContext("2d");
 
// (C) WRITE TEXT ON IMAGE
img.onload = () => {
  // (C1) SOURCE IMAGE
  canvas.width = img.naturalWidth;
  canvas.height = img.naturalHeight;
  ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight);
 
  // (C2) ADD TEXT
  ctx.font = "bold 20px Segoe Print";
  ctx.fillStyle = "rgb(255, 255, 255)";
  ctx.fillText(txt, 50, 50);
};
 
// (D) GO!
img.src = "0.jpg";
</script>
 
Извиняюсь за ламерский вопрос!
А можно как-то подружить mime и canvas?
Тут на просторах необъятного интернета наткнулся на код HTML странички с вшитым скриптом на js - всего 10 строк и на странице уже складывает текст на изображение, где src = путь к jpg файлу относительно файла html, который открывается.
JavaScript:
<script>
// (B) IMAGE + TEXT + CANVAS
var img = new Image(),
    txt = "Да здравствует 1, 9 МАЯ и Новый Год! УРАААААА!!!!",
    canvas = document.getElementById("demo"),
    ctx = canvas.getContext("2d");
 
// (C) WRITE TEXT ON IMAGE
img.onload = () => {
  // (C1) SOURCE IMAGE
  canvas.width = img.naturalWidth;
  canvas.height = img.naturalHeight;
  ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight);
 
  // (C2) ADD TEXT
  ctx.font = "bold 20px Segoe Print";
  ctx.fillStyle = "rgb(255, 255, 255)";
  ctx.fillText(txt, 50, 50);
};
 
// (D) GO!
img.src = "0.jpg";
</script>
- уже упоминал - поддержка хтмл/js разная (часто js заблочен в почтовых клиентах)
- майм - это "контейнер"
в майм, для изображений (в общем случае - файлов), есть cid
 
Код:
<script>
var img =new Image()
txt ="Да здравствует 1, 9 МАЯ и Новый Год! УРАААААА!!!!";
canvas = document.getElementById("demo");
//oder code---------------------------
//
img.src ="0.jpg";

var dataURL = canvas.toDataURL("image/jpeg");
var link = document.createElement("a");
link.href = dataURL;
link.download = "my-image-name.jpg";
link.click();
</script>

Пытаюсь сделать сохранение рисунка canvas из предыдущего кода html, а мне сохраняет только холст черным квадратом.
Что не так?
 
Код:
<script>
var img =new Image()
txt ="Да здравствует 1, 9 МАЯ и Новый Год! УРАААААА!!!!";
canvas = document.getElementById("demo");
//oder code---------------------------
//
img.src ="0.jpg";

var dataURL = canvas.toDataURL("image/jpeg");
var link = document.createElement("a");
link.href = dataURL;
link.download = "my-image-name.jpg";
link.click();
</script>

Пытаюсь сделать сохранение рисунка canvas из предыдущего кода html, а мне сохраняет только холст черным квадратом.
Что не так?
это кусок на форме? Если да - то не понятно: как это "сохранить"
JS ничего не сохраняет (никуда)
 
Но есть препятствие: Путь к выгруженному файлу изображения знает только LS агент, а после наложения текста и сохранения на диске путь к обработанному файлу изображения знает только java. А такая обработка у меня массовая,.. Как бы сделать обмен параметрами между LS-lava-LS...
Обмена параметрами не надо.
На диске рядом лежат 2 папки, например: \AddWatermark_in и \AddWatermark_out. Код на LS кладёт файл в первую папку. Через LS2J вызываете Java-метод, в него передаёте параметром имя файла. Java-код открывает файл из 1-й папки, после обработки кладёт файл результата с тем же именем во 2-ю папку, а из 1-й удаляет. LS-код забирает результат из 2-й папки по тому же имени. При таком подходе вереница из агентов ненужна.
Либо просто написать Java-агент. Лично я бы для такой задачи выбрал обработку очереди таких писем-запросов на сервере Java-агентом.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!