<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум компьютерной помощи &mdash; Вставить картинку (image) в XML-документ.]]></title>
	<link rel="self" href="https://itpmr.ru/extern.php?action=feed&amp;tid=1093&amp;type=atom" />
	<updated>2020-09-24T08:38:58Z</updated>
	<generator>PunBB</generator>
	<id>https://itpmr.ru/viewtopic.php?id=1093</id>
		<entry>
			<title type="html"><![CDATA[Вставить картинку (image) в XML-документ.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?pid=124796#p124796" />
			<content type="html"><![CDATA[<p>Иногда нужна вставка изображения внутри текста в&nbsp; XML-документе.</p><p>Будет сгенерирована такая структура:<br /></p><div class="codebox"><pre><code>&lt;object data=&quot;data:image/jpeg;base64,/9j/4AAQSkZJRgAB.... u5yp6c5ooGf/Z&quot;&gt;&lt;/object&gt;</code></pre></div><p>Функция получает текст, в котором есть ссылки на картинки<br />Лотус код:<br /></p><div class="codebox"><pre><code>Function Replace_img(mytext  As String) As String &#039;ищем картинки в тексте и конвертим их в base64 12.06.2020 14.00 актуализировано с CIT   v 1.0
    On Error Goto ErrH   
    Const sub_dir=&quot;doctmp.files&quot;
    Const c_files_ext=&quot;jpeg; jpg; png; tif&quot;    &#039;для проверки на типы картинок которые могут быть в тексте
&#039;    Const c_files_ext=&quot;jpeg; jpg; tif&quot;    &#039;для проверки на типы картинок которые могут быть в тексте
    
    Dim inStream As NotesStream, patchName As String, fileName As String, session As New NotesSession, c_files_MIME List As String    
    Set inStream=session.Createstream()     
    
    patchName=datapatch+sub_dir
    
    If  Dir$ (patchName,16 )=&quot;&quot; Then  &#039; проверка на наличие  папки &quot;doctmp.files&quot;, т.к. если в шаблоне в тексте нет картинок, то эта папка не создается
        Replace_img=mytext
        Exit Function
    &#039;    Mkdir datapatch
    &#039;    Mkdir datapatch+&quot;\OUT&quot;
    End If
    
    patchName=patchName+&quot;\&quot;    
    
    fileName = Dir$(patchName, 0)    
    
    If fileName$&lt;&gt;&quot;&quot; Then
        arr=Split(c_files_ext,&quot;; &quot;)
        Gosub const_zapoln                
    End If
    
    Do While fileName$ &lt;&gt; &quot;&quot;
        Print &quot;картинка: &quot;+fileName$
        If Not Isnull(Arraygetindex(arr,Lcase(Strrightback(fileName$, &quot;.&quot;))))    Then &#039;проверяем на допустимый тип картинки
%REM
дана подстрока 
&lt;img width=236 height=420 id=&quot;Рисунок 1&quot; src=&quot;doctmp.files/image001.jpg&quot;&gt;
ее нужно заменить на соответствующий base64 файл
%END REM
        &#039;нужно найти src=&quot;doctmp.files/image001.jpg&quot;
            If Instr(mytext, {src=&quot;}+sub_dir+{/}+fileName$+{&quot;&gt;})&gt;0 Then &#039;если в html файле есть картинка которая есть в директории - то преобразовываем картинку в base64
                L_str$=Strleft(mytext, {src=&quot;}+sub_dir+{/}+fileName$+{&quot;&gt;}) &#039;вырезали все что до src=&quot;doctmp.files/image001.jpg&quot;&gt;
                L_str$=Strleftback(  L_str$ ,  {&lt;img})                                 &#039;вырезали все что до &lt;img        
                R_str$=Strright(mytext, {src=&quot;}+sub_dir+{/}+fileName$+{&quot;&gt;})        &#039;&#039;вырезали все что после src=&quot;doctmp.files/image001.jpg&quot;
                
                Call inStream.Open(patchName &amp; fileName$, &quot;binary&quot;)    &#039; в поток inStream файл        
                Dim b64 As New CBase64()
                plainText$ =  b64.encode (inStream)        
                plainText$=     Replace(plainText$,Chr(10),&quot;&quot;) &#039; удаляем спецсимволы во вложениях
                plainText$=     Replace(plainText$,Chr(9),&quot;&quot;)
                plainText$=     Replace(plainText$,Chr(13),&quot;&quot;)
                Call inStream.Close
                Kill patchName &amp; fileName$
        &#039;склеиваем результат            
                mytext = L_str$  + {&lt;object }+Replace(c_files_MIME(Lcase(Strrightback(fileName$, &quot;.&quot;))),&quot;href&quot;,&quot;data&quot;)
                mytext = mytext + plainText$ +{&quot;&gt;&lt;/object&gt;} 
                mytext = mytext +R_str$+ Chr(13)                                            
            End If
            
        End If
        fileName$ = Dir$()
    Loop
    Replace_img=mytext
    Exit Function
    
const_zapoln:
    &#039; https://ru.wikipedia.org/wiki/Список_MIME-типов      -   подсказка
    c_files_MIME(&quot;jpeg&quot;)    =    {href=&quot;data:image/jpeg;base64,}
    c_files_MIME(&quot;jpg&quot;)    =    {href=&quot;data:image/jpeg;base64,}
    c_files_MIME(&quot;png&quot;)    =    {href=&quot;data:image/png;base64,}
    c_files_MIME(&quot;tif&quot;)        =    {href=&quot;data:image/tif;base64,}
    Return
ErrH:    
    Print &quot;Ошибка ф-ции  Replace_img  &quot; &amp; Error(Err) &amp; &quot; в строке &quot; &amp; Erl    
End Function</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2020-09-24T08:38:58Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124796#p124796</id>
		</entry>
</feed>
