mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
table
This commit is contained in:
@ -5,85 +5,262 @@
|
|||||||
<meta name="calibre:cover" content="true"/>
|
<meta name="calibre:cover" content="true"/>
|
||||||
<title>Cover</title>
|
<title>Cover</title>
|
||||||
<style type="text/css" title="override_css">
|
<style type="text/css" title="override_css">
|
||||||
@page {padding: 0pt; margin:0pt}
|
@page {padding: 0pt; margin:0pt}
|
||||||
body { text-align: left; padding:0pt; margin: 0pt; }
|
body { text-align: left; padding:0pt; margin: 0pt; }
|
||||||
|
table { border: 1px solid black; }
|
||||||
|
th, td { border: 1px solid black; }
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body><h1>метоксихлор<wbr/>диэтиламино<wbr/>метил<wbr/>бутил<wbr/>амино<wbr/>акридин</h1><h1>How to Fish</h1>
|
<body>
|
||||||
<section>
|
<table>
|
||||||
<h2>Introduction</h2>
|
<tr>
|
||||||
<p>People have been catching fish for food since before recorded history…</p>
|
<th rowspan="2">Name</th>
|
||||||
</section>
|
<th rowspan="2">ID</th>
|
||||||
|
<th colspan="2">Membership Dates</th>
|
||||||
|
<th rowspan="2">Balance</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Joined</th>
|
||||||
|
<th>Canceled</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Margaret Nguyen</th>
|
||||||
|
<td>427311</td>
|
||||||
|
<td><time datetime="2010-06-03">June 3, 2010</time></td>
|
||||||
|
<td>n/a</td>
|
||||||
|
<td>0.00</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Edvard Galinski</th>
|
||||||
|
<td>533175</td>
|
||||||
|
<td><time datetime="2011-01013">January 13, 2011</time></td>
|
||||||
|
<td><time datetime="2017-04008">April 8, 2017</time></td>
|
||||||
|
<td>37.00</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Hoshi Nakamura</th>
|
||||||
|
<td>601942</td>
|
||||||
|
<td><time datetime="2012-07-23">July 23, 2012</time></td>
|
||||||
|
<td>n/a</td>
|
||||||
|
<td>15.00</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<table>
|
||||||
|
<caption>Color names and values</caption>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">Name</th>
|
||||||
|
<th scope="col">HEX</th>
|
||||||
|
<th scope="col">HSLa</th>
|
||||||
|
<th scope="col">RGBa</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Teal</th>
|
||||||
|
<td><code>#51F6F6</code></td>
|
||||||
|
<td><code>hsla(180, 90%, 64%, 1)</code></td>
|
||||||
|
<td><code>rgba(81, 246, 246, 1)</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Goldenrod</th>
|
||||||
|
<td><code>#F6BC57</code></td>
|
||||||
|
<td><code>hsla(38, 90%, 65%, 1)</code></td>
|
||||||
|
<td><code>rgba(246, 188, 87, 1)</code></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>Simple table with header</p>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>First name</th>
|
||||||
|
<th>Last name</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>John</td>
|
||||||
|
<td>Doe</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Jane</td>
|
||||||
|
<td>Doe</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
<section>
|
<p>Table with thead, tfoot, and tbody</p>
|
||||||
<h2>Equipment</h2>
|
<table>
|
||||||
<p>The first thing you’ll need is a fishing rod or pole that you find comfortable and is strong enough for the kind of fish you’re expecting to land…</p>
|
<tfoot>
|
||||||
</section>хай<ruby>
|
<tr>
|
||||||
漢 <rp>(</rp><rt>Kan</rt><rp>)</rp>
|
<td>Footer content 1</td>
|
||||||
字 <rp>(</rp><rt>ji</rt><rp>)</rp>
|
<td>Footer content 2</td>
|
||||||
</ruby>хай<progress id="file" max="100" value="70"> 70% </progress><progress id="file" max="100" value="70"> 70% </progress>
|
</tr>
|
||||||
<pre>
|
</tfoot>
|
||||||
- -----
|
<thead>
|
||||||
----- |-----
|
<tr>
|
||||||
||----| ----||
|
<th>Header content 1</th>
|
||||||
||----- -----||
|
<th>Header content 2</th>
|
||||||
||-----| |-----||
|
</tr>
|
||||||
|| ----- ------||
|
</thead>
|
||||||
||- ----| |------||
|
<tbody>
|
||||||
||---||-- -------||
|
<tr>
|
||||||
||--|| --| |-------||
|
<td>Body content 1</td>
|
||||||
|| -|| |-- --- - --||
|
<td>Body content 2</td>
|
||||||
|| -|| --|-|--| - ---|
|
</tr>
|
||||||
|---|| |-----| |-----|
|
</tbody>
|
||||||
|---|| |---- |-----|
|
</table>
|
||||||
|----| --- |-----|
|
|
||||||
|----- ------|
|
|
||||||
</pre><ol>
|
|
||||||
<li>Mix flour, baking powder, sugar, and salt.<ol>
|
|
||||||
<li>Fee</li>
|
|
||||||
<li>Fi</li>
|
|
||||||
<li>Fo</li>
|
|
||||||
<li>Fum</li>
|
|
||||||
</ol></li>
|
|
||||||
<li>In another bowl, mix eggs, milk, and oil.</li>
|
|
||||||
<li>Stir both mixtures together.<ul>
|
|
||||||
<li>Blue cheese</li>
|
|
||||||
<li>Feta</li>
|
|
||||||
</ul></li>
|
|
||||||
<li>Fill muffin tray 3/4 full.</li>
|
|
||||||
<li>Bake for 20 minutes.</li>
|
|
||||||
</ol><nav><a href="1.html">Чебурашка</a> | <a href="2.html">Гена</a> |
|
|
||||||
<a href="3.html">Шапокляк</a> | <a href="4.html">Лариска</a></nav><nav><a href="1.html">Чебурашка</a> | <a href="2.html">Гена</a> |
|
|
||||||
<a href="3.html">Шапокляк</a> | <a href="4.html">Лариска</a></nav>
|
|
||||||
<option value="value1">Значение 1</option><option value="value1">Значение 1</option><input type="radio" id="mothman" name="monster"/><label for="kraken">Kraken</label><input type="radio" id="mothman" name="monster"/><label for="kraken">Kraken</label>надо<hr/>надо<hr/>надо<hr/>надо<h1>Beetles</h1>надо
|
|
||||||
<h2>External morphology</h2>надо
|
|
||||||
<h3>Head</h3>надо
|
|
||||||
<h4>Mouthparts</h4>надо
|
|
||||||
<h3>Thorax</h3>надо
|
|
||||||
<h4>Prothorax</h4>надо
|
|
||||||
<h4>Pterothorax</h4>надо<fieldset><legend>Choose your favorite monster</legend>
|
|
||||||
|
|
||||||
<input type="radio" id="kraken" name="monster"/>
|
<p>Table with colgroup</p>
|
||||||
<label for="kraken">Kraken</label><br/>
|
<table>
|
||||||
|
<colgroup span="4"></colgroup>
|
||||||
|
<tr>
|
||||||
|
<th>Countries</th>
|
||||||
|
<th>Capitals</th>
|
||||||
|
<th>Population</th>
|
||||||
|
<th>Language</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>USA</td>
|
||||||
|
<td>Washington, D.C.</td>
|
||||||
|
<td>309 million</td>
|
||||||
|
<td>English</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Sweden</td>
|
||||||
|
<td>Stockholm</td>
|
||||||
|
<td>9 million</td>
|
||||||
|
<td>Swedish</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
<input type="radio" id="sasquatch" name="monster"/>
|
<p>Table with colgroup and col</p>
|
||||||
<label for="sasquatch">Sasquatch</label><br/>
|
<table>
|
||||||
|
<colgroup>
|
||||||
|
<col style="background-color: #0f0"/>
|
||||||
|
<col span="2"/>
|
||||||
|
</colgroup>
|
||||||
|
<tr>
|
||||||
|
<th>Lime</th>
|
||||||
|
<th>Lemon</th>
|
||||||
|
<th>Orange</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Green</td>
|
||||||
|
<td>Yellow</td>
|
||||||
|
<td>Orange</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
<input type="radio" id="mothman" name="monster"/>
|
<p>Simple table with caption</p>
|
||||||
<label for="mothman">Mothman</label>
|
<table>
|
||||||
</fieldset>контентом <em>уровня блока</em> теперь новый<dl>новый
|
<caption>Awesome caption</caption>
|
||||||
<dt>Beast of Bodmin</dt>новый
|
<tr>
|
||||||
<dd>A large feline inhabiting Bodmin Moor.</dd>
|
<td>Awesome data</td>
|
||||||
новый
|
</tr>
|
||||||
<dt>Morgawr</dt>новый
|
</table>
|
||||||
<dd>A sea serpent.</dd>
|
<h1>метоксихлор<wbr/>диэтиламино<wbr/>метил<wbr/>бутил<wbr/>амино<wbr/>акридин</h1>
|
||||||
новый
|
<h1>How to Fish</h1>
|
||||||
<dt>Owlman</dt>новый
|
<section>
|
||||||
<dd>A giant owl-like creature.</dd>новый
|
<h2>Introduction</h2>
|
||||||
</dl>Каждый див<div>новый</div><div>новый</div><div>новый</div>
|
<p>People have been catching fish for food since before recorded history…</p>
|
||||||
A <dfn id="def-validator">validator</dfn> is дел не новый <del>nothing</del><option value="value1">Значение 1</option>дата <data>новый?</data>код <code>push()</code> ците не новый <cite>та </cite> блэкут <blockquote>новый</blockquote>детали новые? <details><summary>Details</summary>Something small enough to escape casual notice.</details>батон <button>конечно новый</button><button>это не так!</button>бдай <bdi>тоже</bdi> бдо <bdo>не новый</bdo> Жирный <b>не новый</b> Эсайд <aside>новый</aside>Артикл <article>Новый абзац</article>Адрес <address>Новый абзац</address>Ссылка <a href="https://developer.mozilla.org/ru/">Ссылка не новый абзац</a> Всё, что находится в боди - это один абзац. И лишь <em>некоторые</em> <p>тэги</p> Этот абзац разбивают <br/>Что происходит <em>в этом потоке</em> А если я использую p, то будет новый абзац.. <p>Абзац1</p> И здесь новый.. <em>Какой в этом смысл</em>
|
</section>
|
||||||
<div><em>К Дун Дару они подкрались,</em> <p>Абзац1 <em>Где юна ведьмачка скрывалась.</em> </p> Абзац2 <em>Ночью как траур черной</em> <p>Абзац3 наверное</p></div>
|
<section>
|
||||||
<div>Див ничего не делает</div><div>ХА, а вот и нет!</div><div>Каждый див - это новый абзац</div>
|
<h2>Equipment</h2>
|
||||||
|
<p>The first thing you’ll need is a fishing rod or pole that you find comfortable and is strong enough for the kind of fish you’re expecting to land…</p>
|
||||||
|
</section>хай<ruby>
|
||||||
|
漢 <rp>(</rp>
|
||||||
|
<rt>Kan</rt>
|
||||||
|
<rp>)</rp>
|
||||||
|
字 <rp>(</rp>
|
||||||
|
<rt>ji</rt>
|
||||||
|
<rp>)</rp>
|
||||||
|
</ruby>хай<progress id="file" max="100" value="70"> 70% </progress>
|
||||||
|
<progress id="file" max="100" value="70"> 70% </progress>
|
||||||
|
<pre>
|
||||||
|
- -----
|
||||||
|
----- |-----
|
||||||
|
||----| ----||
|
||||||
|
||----- -----||
|
||||||
|
||-----| |-----||
|
||||||
|
|| ----- ------||
|
||||||
|
||- ----| |------||
|
||||||
|
||---||-- -------||
|
||||||
|
||--|| --| |-------||
|
||||||
|
|| -|| |-- --- - --||
|
||||||
|
|| -|| --|-|--| - ---|
|
||||||
|
|---|| |-----| |-----|
|
||||||
|
|---|| |---- |-----|
|
||||||
|
|----| --- |-----|
|
||||||
|
|----- ------|
|
||||||
|
</pre>
|
||||||
|
<ol>
|
||||||
|
<li>Mix flour, baking powder, sugar, and salt.<ol>
|
||||||
|
<li>Fee</li>
|
||||||
|
<li>Fi</li>
|
||||||
|
<li>Fo</li>
|
||||||
|
<li>Fum</li>
|
||||||
|
</ol>
|
||||||
|
</li>
|
||||||
|
<li>In another bowl, mix eggs, milk, and oil.</li>
|
||||||
|
<li>Stir both mixtures together.<ul>
|
||||||
|
<li>Blue cheese</li>
|
||||||
|
<li>Feta</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Fill muffin tray 3/4 full.</li>
|
||||||
|
<li>Bake for 20 minutes.</li>
|
||||||
|
</ol>
|
||||||
|
<nav>
|
||||||
|
<a href="1.html">Чебурашка</a> | <a href="2.html">Гена</a> |
|
||||||
|
<a href="3.html">Шапокляк</a> | <a href="4.html">Лариска</a>
|
||||||
|
</nav>
|
||||||
|
<nav>
|
||||||
|
<a href="1.html">Чебурашка</a> | <a href="2.html">Гена</a> |
|
||||||
|
<a href="3.html">Шапокляк</a> | <a href="4.html">Лариска</a>
|
||||||
|
</nav>
|
||||||
|
<option value="value1">Значение 1</option>
|
||||||
|
<option value="value1">Значение 1</option>
|
||||||
|
<input type="radio" id="mothman" name="monster"/>
|
||||||
|
<label for="kraken">Kraken</label>
|
||||||
|
<input type="radio" id="mothman" name="monster"/>
|
||||||
|
<label for="kraken">Kraken</label>надо<hr/>надо<hr/>надо<hr/>надо<h1>Beetles</h1>надо
|
||||||
|
<h2>External morphology</h2>надо
|
||||||
|
<h3>Head</h3>надо
|
||||||
|
<h4>Mouthparts</h4>надо
|
||||||
|
<h3>Thorax</h3>надо
|
||||||
|
<h4>Prothorax</h4>надо
|
||||||
|
<h4>Pterothorax</h4>надо<fieldset>
|
||||||
|
<legend>Choose your favorite monster</legend>
|
||||||
|
<input type="radio" id="kraken" name="monster"/>
|
||||||
|
<label for="kraken">Kraken</label>
|
||||||
|
<br/>
|
||||||
|
<input type="radio" id="sasquatch" name="monster"/>
|
||||||
|
<label for="sasquatch">Sasquatch</label>
|
||||||
|
<br/>
|
||||||
|
<input type="radio" id="mothman" name="monster"/>
|
||||||
|
<label for="mothman">Mothman</label>
|
||||||
|
</fieldset>контентом <em>уровня блока</em> теперь новый<dl>новый
|
||||||
|
<dt>Beast of Bodmin</dt>новый
|
||||||
|
<dd>A large feline inhabiting Bodmin Moor.</dd>
|
||||||
|
новый
|
||||||
|
<dt>Morgawr</dt>новый
|
||||||
|
<dd>A sea serpent.</dd>
|
||||||
|
новый
|
||||||
|
<dt>Owlman</dt>новый
|
||||||
|
<dd>A giant owl-like creature.</dd>новый
|
||||||
|
</dl>Каждый див<div>новый</div>
|
||||||
|
<div>новый</div>
|
||||||
|
<div>новый</div>
|
||||||
|
A <dfn id="def-validator">validator</dfn> is дел не новый <del>nothing</del>
|
||||||
|
<option value="value1">Значение 1</option>дата <data>новый?</data>код <code>push()</code> ците не новый <cite>та </cite> блэкут <blockquote>новый</blockquote>детали новые? <details>
|
||||||
|
<summary>Details</summary>Something small enough to escape casual notice.</details>батон <button>конечно новый</button>
|
||||||
|
<button>это не так!</button>бдай <bdi>тоже</bdi> бдо <bdo>не новый</bdo> Жирный <b>не новый</b> Эсайд <aside>новый</aside>Артикл <article>Новый абзац</article>Адрес <address>Новый абзац</address>Ссылка <a href="https://developer.mozilla.org/ru/">Ссылка не новый абзац</a> Всё, что находится в боди - это один абзац. И лишь <em>некоторые</em>
|
||||||
|
<p>тэги</p> Этот абзац разбивают <br/>Что происходит <em>в этом потоке</em> А если я использую p, то будет новый абзац.. <p>Абзац1</p> И здесь новый.. <em>Какой в этом смысл</em>
|
||||||
|
<div>
|
||||||
|
<em>К Дун Дару они подкрались,</em>
|
||||||
|
<p>Абзац1 <em>Где юна ведьмачка скрывалась.</em>
|
||||||
|
</p> Абзац2 <em>Ночью как траур черной</em>
|
||||||
|
<p>Абзац3 наверное</p>
|
||||||
|
</div>
|
||||||
|
<div>Див ничего не делает</div>
|
||||||
|
<div>ХА, а вот и нет!</div>
|
||||||
|
<div>Каждый див - это новый абзац</div>
|
||||||
<div>Это безсмысленный контейнер</div>
|
<div>Это безсмысленный контейнер</div>
|
||||||
<div>
|
<div>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
@ -92,41 +269,63 @@
|
|||||||
<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0j
|
<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0j
|
||||||
vb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAA
|
vb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAA
|
||||||
Re8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0Cc
|
Re8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0Cc
|
||||||
guWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" width="16"
|
guWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" width="16" height="14" alt="внедренная иконка папки"/>
|
||||||
height="14" alt="внедренная иконка папки"/>
|
|
||||||
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
|
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
|
||||||
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
|
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
|
||||||
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
|
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot"/>
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align:center;" epub:type="cover">
|
<div style="text-align:center;" epub:type="cover">
|
||||||
<img src="image/1.png" alt="1.png" style="max-width:100%;" />
|
<img src="image/1.png" alt="1.png" style="max-width:100%;"/>
|
||||||
</div>
|
</div>
|
||||||
<p>You can use <abbr title="Cascading Style Sheets">CSS</abbr> to style your <abbr title="HyperText Markup Language">HTML</abbr>.</p>
|
<p>You can use <abbr title="Cascading Style Sheets">CSS</abbr> to style your <abbr title="HyperText Markup Language">HTML</abbr>.</p>
|
||||||
<p>In the computer's memory, this is stored as <bdo dir="rtl">אה, אני אוהב להיות ליד חוף הים</bdo></p>
|
<p>In the computer's memory, this is stored as <bdo dir="rtl">אה, אני אוהב להיות ליד חוף הים</bdo>
|
||||||
<p><bdo dir="rtl">А <bdo>роза</bdo><bdo dir="ltr">упала</bdo> на <bdo dir="rtl">лапу</bdo> Азора</bdo></p>
|
</p>
|
||||||
|
<p>
|
||||||
|
<bdo dir="rtl">А <bdo>роза</bdo>
|
||||||
|
<bdo dir="ltr">упала</bdo> на <bdo dir="rtl">лапу</bdo> Азора</bdo>
|
||||||
|
</p>
|
||||||
<p> O’er all the hilltops<br/>Is quiet now,<br/>In all the treetops<br/>Hearest thou<br/>Hardly a breath;<br/>The birds are asleep in the trees:<br/>Wait, soon like these<br/>Thou too shalt rest.</p>
|
<p> O’er all the hilltops<br/>Is quiet now,<br/>In all the treetops<br/>Hearest thou<br/>Hardly a breath;<br/>The birds are asleep in the trees:<br/>Wait, soon like these<br/>Thou too shalt rest.</p>
|
||||||
<p>Use the command <kbd>help mycommand</kbd> to view documentation for the command "mycommand".</p>
|
<p>Use the command <kbd>help mycommand</kbd> to view documentation for the command "mycommand".</p>
|
||||||
<p><label>Click me <input type="text"/></label></p>
|
<p>
|
||||||
|
<label>Click me <input type="text"/>
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
<p>Элемент <mark> используется для <mark>выделения</mark> текста</p>
|
<p>Элемент <mark> используется для <mark>выделения</mark> текста</p>
|
||||||
<p>When Dave asks HAL to open the pod bay door, HAL answers: <q>I'm sorry, Dave. I'm afraid I can't do that.</q></p>
|
<p>When Dave asks HAL to open the pod bay door, HAL answers: <q>I'm sorry, Dave. I'm afraid I can't do that.</q>
|
||||||
<p><ruby>字<rp>(</rp><rt>zì</rt><rp>)</rp></ruby><ruby>明日 <rp>(</rp><rt>Ashita</rt><rp>)</rp></ruby></p>
|
</p>
|
||||||
<p>This is the first sentence. <small>This whole sentence is in small letters.</small></p>
|
<p>
|
||||||
<p><big>Lorem</big> ipsum dolor sit amet</p>
|
<ruby>字<rp>(</rp>
|
||||||
|
<rt>zì</rt>
|
||||||
|
<rp>)</rp>
|
||||||
|
</ruby>
|
||||||
|
<ruby>明日 <rp>(</rp>
|
||||||
|
<rt>Ashita</rt>
|
||||||
|
<rp>)</rp>
|
||||||
|
</ruby>
|
||||||
|
</p>
|
||||||
|
<p>This is the first sentence. <small>This whole sentence is in small letters.</small>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<big>Lorem</big> ipsum dolor sit amet</p>
|
||||||
<p>Прежде чем продолжить, <strong>убедитесь, что вы надели защитные очки</strong>.</p>
|
<p>Прежде чем продолжить, <strong>убедитесь, что вы надели защитные очки</strong>.</p>
|
||||||
<p>В этой статье описывается элемент для форматирования <b class="keywords">текста</b>.</p>
|
<p>В этой статье описывается элемент для форматирования <b class="keywords">текста</b>.</p>
|
||||||
<p><svg viewBox="0 0 300 100" xmlns="http://www.w3.org/2000/svg" stroke="red" fill="grey">
|
<p>
|
||||||
<circle cx="50" cy="50" r="40" />
|
<svg viewBox="0 0 300 100" xmlns="http://www.w3.org/2000/svg" stroke="red" fill="grey">
|
||||||
<circle cx="150" cy="50" r="4" />
|
<circle cx="50" cy="50" r="40"/>
|
||||||
|
<circle cx="150" cy="50" r="4"/>
|
||||||
<svg viewBox="0 0 10 10" x="200" width="100">
|
<svg viewBox="0 0 10 10" x="200" width="100">
|
||||||
<circle cx="5" cy="5" r="4" />
|
<circle cx="5" cy="5" r="4"/>
|
||||||
</svg>
|
</svg>
|
||||||
</svg></p>
|
</svg>
|
||||||
<p><svg width="20" xmlns="http://www.w3.org/2000/svg">
|
</p>
|
||||||
|
<p>
|
||||||
|
<svg width="20" xmlns="http://www.w3.org/2000/svg">
|
||||||
<rect fill="#fc0" width="20" height="20"/>
|
<rect fill="#fc0" width="20" height="20"/>
|
||||||
<line stroke="black" x1="0" y1="0" x2="20" y2="20"/>
|
<line stroke="black" x1="0" y1="0" x2="20" y2="20"/>
|
||||||
</svg></p>
|
</svg>
|
||||||
<p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 611.989 611.988">
|
</p>
|
||||||
|
<p>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 611.989 611.988">
|
||||||
<g>
|
<g>
|
||||||
<g id="Wi-Fi">
|
<g id="Wi-Fi">
|
||||||
<g>
|
<g>
|
||||||
@ -146,26 +345,46 @@ height="14" alt="внедренная иконка папки"/>
|
|||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg></p>
|
</svg>
|
||||||
<p>Just <textarea id="story" name="story" rows="5" cols="33">It was a dark and stormy night...</textarea></p>
|
</p>
|
||||||
|
<p>Just <textarea id="story" name="story" rows="5" cols="33">It was a dark and stormy night...</textarea>
|
||||||
|
</p>
|
||||||
<p>The volume of a box is <var>l</var> × <var>w</var> × <var>h</var>, where <var>l</var> represents the length, <var>w</var> the width and <var>h</var> the height of the box.</p>
|
<p>The volume of a box is <var>l</var> × <var>w</var> × <var>h</var>, where <var>l</var> represents the length, <var>w</var> the width and <var>h</var> the height of the box.</p>
|
||||||
<a href="https://developer.mozilla.org/ru/" target="_blank"><img src="https://mdn.mozillademos.org/files/6851/mdn_logo.png" alt="MDN logo"/></a>
|
<a href="https://developer.mozilla.org/ru/" target="_blank">
|
||||||
|
<img src="https://mdn.mozillademos.org/files/6851/mdn_logo.png" alt="MDN logo"/>
|
||||||
|
</a>
|
||||||
<a href="https://developer.mozilla.org/ru/" target="_blank" title="Rubor – краснота; calor – повышенная температура; tumor – припухлость; dolor – боль, страдания (лат.).">Ссылка</a>
|
<a href="https://developer.mozilla.org/ru/" target="_blank" title="Rubor – краснота; calor – повышенная температура; tumor – припухлость; dolor – боль, страдания (лат.).">Ссылка</a>
|
||||||
<address>You can contact author at <a href="http://www.somedomain.com/contact">www.somedomain.com</a>.<br/>
|
<address>You can contact author at <a href="http://www.somedomain.com/contact">www.somedomain.com</a>.<br/>
|
||||||
If you see any bugs, please <a href="mailto:webmaster@somedomain.com">contact webmaster</a>.<br/>
|
If you see any bugs, please <a href="mailto:webmaster@somedomain.com">contact webmaster</a>.<br/>
|
||||||
You may also want to visit us:<br/>
|
You may also want to visit us:<br/>
|
||||||
Mozilla Foundation<br/>
|
Mozilla Foundation<br/>
|
||||||
1981 Landings Drive<br/>
|
1981 Landings Drive<br/>
|
||||||
Building K<br/>
|
Building K<br/>
|
||||||
Mountain View, CA 94043-0801<br/>
|
Mountain View, CA 94043-0801<br/>
|
||||||
USA</address>
|
USA</address>
|
||||||
<article class="forecast"><h1>Weather forecast for Seattle</h1>
|
<article class="forecast">
|
||||||
<article class="day-forecast"><h2>03 March 2018</h2><p>Rain.</p></article>
|
<h1>Weather forecast for Seattle</h1>
|
||||||
<article class="day-forecast"><h2>04 March 2018</h2><p>Periods of rain.</p></article>
|
<article class="day-forecast">
|
||||||
<article class="day-forecast"><h2>05 March 2018</h2><p>Heavy rain.</p></article></article>
|
<h2>03 March 2018</h2>
|
||||||
<aside><p>The Rough-skinned Newt defends itself with a deadly neurotoxin.</p></aside>
|
<p>Rain.</p>
|
||||||
<p><del>This text has been deleted</del>, here is the rest of the paragraph.</p>
|
</article>
|
||||||
<del><p>This paragraph has been deleted.</p></del>
|
<article class="day-forecast">
|
||||||
|
<h2>04 March 2018</h2>
|
||||||
|
<p>Periods of rain.</p>
|
||||||
|
</article>
|
||||||
|
<article class="day-forecast">
|
||||||
|
<h2>05 March 2018</h2>
|
||||||
|
<p>Heavy rain.</p>
|
||||||
|
</article>
|
||||||
|
</article>
|
||||||
|
<aside>
|
||||||
|
<p>The Rough-skinned Newt defends itself with a deadly neurotoxin.</p>
|
||||||
|
</aside>
|
||||||
|
<p>
|
||||||
|
<del>This text has been deleted</del>, here is the rest of the paragraph.</p>
|
||||||
|
<del>
|
||||||
|
<p>This paragraph has been deleted.</p>
|
||||||
|
</del>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Milk</li>
|
<li>Milk</li>
|
||||||
<li>Cheese<ul>
|
<li>Cheese<ul>
|
||||||
|
|||||||
@ -44,7 +44,7 @@ public:
|
|||||||
std::wstring m_sDst; // Директория назначения
|
std::wstring m_sDst; // Директория назначения
|
||||||
std::wstring m_sBase; // Полный базовый адрес
|
std::wstring m_sBase; // Полный базовый адрес
|
||||||
|
|
||||||
std::map<std::wstring, std::vector<std::wstring>> m_sSrcs; // Имена обрабатываемых файлов (имя файла, имя перекрестной ссылки)
|
std::map<std::wstring, std::vector<std::wstring>> m_sSrcs; // Имена обрабатываемых файлов (имя файла, имя перекрестной ссылки)
|
||||||
std::map<std::wstring, std::wstring> m_mStyles; // Стили в document.xml. Хранятся как (имя тэга, его стиль)
|
std::map<std::wstring, std::wstring> m_mStyles; // Стили в document.xml. Хранятся как (имя тэга, его стиль)
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -286,16 +286,18 @@ public:
|
|||||||
|
|
||||||
// Стили по умолчанию
|
// Стили по умолчанию
|
||||||
// Нормальный стиль, от которого базируются
|
// Нормальный стиль, от которого базируются
|
||||||
// m_oStylesXml += L"<w:style w:type=\"paragraph\" w:styleId=\"normal\" w:default=\"1\"><w:name w:val=\"Normal\"/><w:qFormat/></w:style>";
|
m_oStylesXml += L"<w:style w:type=\"paragraph\" w:styleId=\"normal\" w:default=\"1\"><w:name w:val=\"Normal\"/><w:qFormat/></w:style>";
|
||||||
// Маркированный список
|
// Маркированный список
|
||||||
// m_oStylesXml += L"<w:style w:type=\"paragraph\" w:styleId=\"li\"><w:name w:val=\"List Paragraph\"/><w:basedOn w:val=\"normal\"/><w:qFormat/><w:uiPriority w:val=\"34\"/><w:pPr><w:contextualSpacing w:val=\"true\"/><w:ind w:left=\"720\"/></w:pPr></w:style>";
|
m_oStylesXml += L"<w:style w:type=\"paragraph\" w:styleId=\"li\"><w:name w:val=\"List Paragraph\"/><w:basedOn w:val=\"normal\"/><w:qFormat/><w:uiPriority w:val=\"34\"/><w:pPr><w:contextualSpacing w:val=\"true\"/><w:ind w:left=\"720\"/></w:pPr></w:style>";
|
||||||
// Заголовки
|
// Заголовки
|
||||||
// m_oStylesXml += L"<w:style w:type=\"paragraph\" w:styleId=\"h1\"><w:name w:val=\"Heading 1\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"title1-c\"/><w:qFormat/><w:rPr><w:b/><w:bCs/><w:color w:val=\"000000\" w:themeColor=\"text1\"/><w:sz w:val=\"48\"/><w:szCs w:val=\"48\"/></w:rPr><w:pPr><w:keepLines/><w:keepNext/><w:spacing w:after=\"0\" w:before=\"480\"/><w:outlineLvl w:val=\"0\"/></w:pPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"h2\"><w:name w:val=\"Heading 2\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"title2-c\"/><w:qFormat/><w:unhideWhenUsed/><w:rPr><w:b/><w:bCs/><w:color w:val=\"000000\" w:themeColor=\"text1\"/><w:sz w:val=\"40\"/></w:rPr><w:pPr><w:keepLines/><w:keepNext/><w:spacing w:after=\"0\" w:before=\"200\"/><w:outlineLvl w:val=\"1\"/></w:pPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"h3\"><w:name w:val=\"Heading 3\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"title3-c\"/><w:qFormat/><w:unhideWhenUsed/><w:rPr><w:b/><w:bCs/><w:i/><w:iCs/><w:color w:val=\"000000\" w:themeColor=\"text1\"/><w:sz w:val=\"36\"/><w:szCs w:val=\"36\"/></w:rPr><w:pPr><w:keepLines/><w:keepNext/><w:spacing w:after=\"0\" w:before=\"200\"/><w:outlineLvl w:val=\"2\"/></w:pPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"h4\"><w:name w:val=\"Heading 4\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"title4-c\"/><w:qFormat/><w:unhideWhenUsed/><w:rPr><w:color w:val=\"232323\"/><w:sz w:val=\"32\"/><w:szCs w:val=\"32\"/></w:rPr><w:pPr><w:keepLines/><w:keepNext/><w:spacing w:after=\"0\" w:before=\"200\"/><w:outlineLvl w:val=\"3\"/></w:pPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"h5\"><w:name w:val=\"Heading 5\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"title5-c\"/><w:qFormat/><w:unhideWhenUsed/><w:rPr><w:b/><w:bCs/><w:color w:val=\"444444\"/><w:sz w:val=\"28\"/><w:szCs w:val=\"28\"/></w:rPr><w:pPr><w:keepLines/><w:keepNext/><w:spacing w:after=\"0\" w:before=\"200\"/><w:outlineLvl w:val=\"4\"/></w:pPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"h6\"><w:name w:val=\"Heading 6\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"title6-c\"/><w:qFormat/><w:unhideWhenUsed/><w:rPr><w:i/><w:iCs/><w:color w:val=\"232323\"/><w:sz w:val=\"28\"/><w:szCs w:val=\"28\"/></w:rPr><w:pPr><w:keepLines/><w:keepNext/><w:spacing w:after=\"0\" w:before=\"200\"/><w:outlineLvl w:val=\"5\"/></w:pPr></w:style><w:style w:type=\"character\" w:styleId=\"title1-c\" w:customStyle=\"1\"><w:name w:val=\"Заголовок 1 Знак\"/><w:link w:val=\"title1\"/><w:uiPriority w:val=\"9\"/><w:rPr><w:rFonts w:ascii=\"Arial\" w:hAnsi=\"Arial\" w:cs=\"Arial\" w:eastAsia=\"Arial\"/><w:sz w:val=\"40\"/><w:szCs w:val=\"40\"/></w:rPr></w:style><w:style w:type=\"character\" w:styleId=\"title2-c\" w:customStyle=\"1\"><w:name w:val=\"Заголовок 2 Знак\"/><w:link w:val=\"title2\"/><w:uiPriority w:val=\"9\"/><w:rPr><w:rFonts w:ascii=\"Arial\" w:hAnsi=\"Arial\" w:cs=\"Arial\" w:eastAsia=\"Arial\"/><w:sz w:val=\"34\"/></w:rPr></w:style><w:style w:type=\"character\" w:styleId=\"title3-c\" w:customStyle=\"1\"><w:name w:val=\"Заголовок 3 Знак\"/><w:link w:val=\"title3\"/><w:uiPriority w:val=\"9\"/><w:rPr><w:rFonts w:ascii=\"Arial\" w:hAnsi=\"Arial\" w:cs=\"Arial\" w:eastAsia=\"Arial\"/><w:sz w:val=\"30\"/><w:szCs w:val=\"30\"/></w:rPr></w:style><w:style w:type=\"character\" w:styleId=\"title4-c\" w:customStyle=\"1\"><w:name w:val=\"Заголовок 4 Знак\"/><w:link w:val=\"title4\"/><w:uiPriority w:val=\"9\"/><w:rPr><w:rFonts w:ascii=\"Arial\" w:hAnsi=\"Arial\" w:cs=\"Arial\" w:eastAsia=\"Arial\"/><w:b/><w:bCs/><w:sz w:val=\"26\"/><w:szCs w:val=\"26\"/></w:rPr></w:style><w:style w:type=\"character\" w:styleId=\"title5-c\" w:customStyle=\"1\"><w:name w:val=\"Заголовок 5 Знак\"/><w:link w:val=\"title5\"/><w:uiPriority w:val=\"9\"/><w:rPr><w:rFonts w:ascii=\"Arial\" w:hAnsi=\"Arial\" w:cs=\"Arial\" w:eastAsia=\"Arial\"/><w:b/><w:bCs/><w:sz w:val=\"24\"/><w:szCs w:val=\"24\"/></w:rPr></w:style><w:style w:type=\"character\" w:styleId=\"title6-c\" w:customStyle=\"1\"><w:name w:val=\"Заголовок 6 Знак\"/><w:link w:val=\"title6\"/><w:uiPriority w:val=\"9\"/><w:rPr><w:rFonts w:ascii=\"Arial\" w:hAnsi=\"Arial\" w:cs=\"Arial\" w:eastAsia=\"Arial\"/><w:b/><w:bCs/><w:sz w:val=\"22\"/><w:szCs w:val=\"22\"/></w:rPr></w:style>";
|
m_oStylesXml += L"<w:style w:type=\"paragraph\" w:styleId=\"h1\"><w:name w:val=\"Heading 1\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"title1-c\"/><w:qFormat/><w:rPr><w:b/><w:bCs/><w:color w:val=\"000000\" w:themeColor=\"text1\"/><w:sz w:val=\"48\"/><w:szCs w:val=\"48\"/></w:rPr><w:pPr><w:keepLines/><w:keepNext/><w:spacing w:after=\"0\" w:before=\"480\"/><w:outlineLvl w:val=\"0\"/></w:pPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"h2\"><w:name w:val=\"Heading 2\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"title2-c\"/><w:qFormat/><w:unhideWhenUsed/><w:rPr><w:b/><w:bCs/><w:color w:val=\"000000\" w:themeColor=\"text1\"/><w:sz w:val=\"40\"/></w:rPr><w:pPr><w:keepLines/><w:keepNext/><w:spacing w:after=\"0\" w:before=\"200\"/><w:outlineLvl w:val=\"1\"/></w:pPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"h3\"><w:name w:val=\"Heading 3\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"title3-c\"/><w:qFormat/><w:unhideWhenUsed/><w:rPr><w:b/><w:bCs/><w:i/><w:iCs/><w:color w:val=\"000000\" w:themeColor=\"text1\"/><w:sz w:val=\"36\"/><w:szCs w:val=\"36\"/></w:rPr><w:pPr><w:keepLines/><w:keepNext/><w:spacing w:after=\"0\" w:before=\"200\"/><w:outlineLvl w:val=\"2\"/></w:pPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"h4\"><w:name w:val=\"Heading 4\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"title4-c\"/><w:qFormat/><w:unhideWhenUsed/><w:rPr><w:color w:val=\"232323\"/><w:sz w:val=\"32\"/><w:szCs w:val=\"32\"/></w:rPr><w:pPr><w:keepLines/><w:keepNext/><w:spacing w:after=\"0\" w:before=\"200\"/><w:outlineLvl w:val=\"3\"/></w:pPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"h5\"><w:name w:val=\"Heading 5\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"title5-c\"/><w:qFormat/><w:unhideWhenUsed/><w:rPr><w:b/><w:bCs/><w:color w:val=\"444444\"/><w:sz w:val=\"28\"/><w:szCs w:val=\"28\"/></w:rPr><w:pPr><w:keepLines/><w:keepNext/><w:spacing w:after=\"0\" w:before=\"200\"/><w:outlineLvl w:val=\"4\"/></w:pPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"h6\"><w:name w:val=\"Heading 6\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"title6-c\"/><w:qFormat/><w:unhideWhenUsed/><w:rPr><w:i/><w:iCs/><w:color w:val=\"232323\"/><w:sz w:val=\"28\"/><w:szCs w:val=\"28\"/></w:rPr><w:pPr><w:keepLines/><w:keepNext/><w:spacing w:after=\"0\" w:before=\"200\"/><w:outlineLvl w:val=\"5\"/></w:pPr></w:style><w:style w:type=\"character\" w:styleId=\"title1-c\" w:customStyle=\"1\"><w:name w:val=\"Заголовок 1 Знак\"/><w:link w:val=\"title1\"/><w:uiPriority w:val=\"9\"/><w:rPr><w:rFonts w:ascii=\"Arial\" w:hAnsi=\"Arial\" w:cs=\"Arial\" w:eastAsia=\"Arial\"/><w:sz w:val=\"40\"/><w:szCs w:val=\"40\"/></w:rPr></w:style><w:style w:type=\"character\" w:styleId=\"title2-c\" w:customStyle=\"1\"><w:name w:val=\"Заголовок 2 Знак\"/><w:link w:val=\"title2\"/><w:uiPriority w:val=\"9\"/><w:rPr><w:rFonts w:ascii=\"Arial\" w:hAnsi=\"Arial\" w:cs=\"Arial\" w:eastAsia=\"Arial\"/><w:sz w:val=\"34\"/></w:rPr></w:style><w:style w:type=\"character\" w:styleId=\"title3-c\" w:customStyle=\"1\"><w:name w:val=\"Заголовок 3 Знак\"/><w:link w:val=\"title3\"/><w:uiPriority w:val=\"9\"/><w:rPr><w:rFonts w:ascii=\"Arial\" w:hAnsi=\"Arial\" w:cs=\"Arial\" w:eastAsia=\"Arial\"/><w:sz w:val=\"30\"/><w:szCs w:val=\"30\"/></w:rPr></w:style><w:style w:type=\"character\" w:styleId=\"title4-c\" w:customStyle=\"1\"><w:name w:val=\"Заголовок 4 Знак\"/><w:link w:val=\"title4\"/><w:uiPriority w:val=\"9\"/><w:rPr><w:rFonts w:ascii=\"Arial\" w:hAnsi=\"Arial\" w:cs=\"Arial\" w:eastAsia=\"Arial\"/><w:b/><w:bCs/><w:sz w:val=\"26\"/><w:szCs w:val=\"26\"/></w:rPr></w:style><w:style w:type=\"character\" w:styleId=\"title5-c\" w:customStyle=\"1\"><w:name w:val=\"Заголовок 5 Знак\"/><w:link w:val=\"title5\"/><w:uiPriority w:val=\"9\"/><w:rPr><w:rFonts w:ascii=\"Arial\" w:hAnsi=\"Arial\" w:cs=\"Arial\" w:eastAsia=\"Arial\"/><w:b/><w:bCs/><w:sz w:val=\"24\"/><w:szCs w:val=\"24\"/></w:rPr></w:style><w:style w:type=\"character\" w:styleId=\"title6-c\" w:customStyle=\"1\"><w:name w:val=\"Заголовок 6 Знак\"/><w:link w:val=\"title6\"/><w:uiPriority w:val=\"9\"/><w:rPr><w:rFonts w:ascii=\"Arial\" w:hAnsi=\"Arial\" w:cs=\"Arial\" w:eastAsia=\"Arial\"/><w:b/><w:bCs/><w:sz w:val=\"22\"/><w:szCs w:val=\"22\"/></w:rPr></w:style>";
|
||||||
// Текст: p, div
|
// Текст: p, div
|
||||||
// m_oStylesXml += L"<w:style w:type=\"character\" w:styleId=\"section-p-c\" w:customStyle=\"1\"><w:name w:val=\"Paragraph_character\"/><w:link w:val=\"p\"/></w:style><w:style w:type=\"paragraph\" w:styleId=\"p\" w:customStyle=\"1\"><w:name w:val=\"Paragraph\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"section-p-c\"/><w:qFormat/><w:pPr><w:ind w:firstLine=\"567\"/><w:jc w:val=\"both\"/></w:pPr></w:style>";
|
m_oStylesXml += L"<w:style w:type=\"character\" w:styleId=\"section-p-c\" w:customStyle=\"1\"><w:name w:val=\"Paragraph_character\"/><w:link w:val=\"p\"/></w:style><w:style w:type=\"paragraph\" w:styleId=\"p\" w:customStyle=\"1\"><w:name w:val=\"Paragraph\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"section-p-c\"/><w:qFormat/><w:pPr><w:ind w:firstLine=\"567\"/><w:jc w:val=\"both\"/></w:pPr></w:style>";
|
||||||
// m_oStylesXml += L"<w:style w:type=\"character\" w:styleId=\"section-p-c\" w:customStyle=\"1\"><w:name w:val=\"Paragraph_character\"/><w:link w:val=\"div\"/></w:style><w:style w:type=\"paragraph\" w:styleId=\"div\" w:customStyle=\"1\"><w:name w:val=\"Paragraph\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"section-p-c\"/><w:qFormat/><w:pPr><w:ind w:firstLine=\"567\"/><w:jc w:val=\"both\"/></w:pPr></w:style>";
|
m_oStylesXml += L"<w:style w:type=\"character\" w:styleId=\"section-p-c\" w:customStyle=\"1\"><w:name w:val=\"Paragraph_character\"/><w:link w:val=\"div\"/></w:style><w:style w:type=\"paragraph\" w:styleId=\"div\" w:customStyle=\"1\"><w:name w:val=\"Paragraph\"/><w:basedOn w:val=\"normal\"/><w:link w:val=\"section-p-c\"/><w:qFormat/><w:pPr><w:ind w:firstLine=\"567\"/><w:jc w:val=\"both\"/></w:pPr></w:style>";
|
||||||
// Ссылки
|
// Ссылка
|
||||||
// m_oStylesXml += L"<w:style w:type=\"character\" w:styleId=\"a\"><w:name w:val=\"Hyperlink\"/><w:uiPriority w:val=\"99\"/><w:unhideWhenUsed/><w:rPr><w:color w:val=\"0563C1\" w:themeColor=\"hyperlink\"/><w:u w:val=\"single\"/></w:rPr></w:style>";
|
m_oStylesXml += L"<w:style w:type=\"character\" w:styleId=\"a\"><w:name w:val=\"Hyperlink\"/><w:uiPriority w:val=\"99\"/><w:unhideWhenUsed/><w:rPr><w:color w:val=\"0563C1\" w:themeColor=\"hyperlink\"/><w:u w:val=\"single\"/></w:rPr></w:style>";
|
||||||
|
// Таблица
|
||||||
|
m_oStylesXml += L"<w:style w:type=\"table\" w:default=\"1\" w:styleId=\"table-based\"><w:name w:val=\"Normal Table\"/><w:uiPriority w:val=\"99\"/><w:semiHidden/><w:unhideWhenUsed/><w:tblPr><w:tblInd w:w=\"0\" w:type=\"dxa\"/><w:tblCellMar><w:top w:w=\"0\" w:type=\"dxa\"/><w:left w:w=\"108\" w:type=\"dxa\"/><w:bottom w:w=\"0\" w:type=\"dxa\"/><w:right w:w=\"108\" w:type=\"dxa\"/></w:tblCellMar></w:tblPr></w:style><w:style w:type=\"table\" w:styleId=\"table\"><w:name w:val=\"Table Grid\"/><w:basedOn w:val=\"table-based\"/><w:uiPriority w:val=\"59\"/><w:pPr><w:spacing w:lineRule=\"auto\" w:line=\"240\" w:after=\"0\"/></w:pPr><w:tblPr><w:tblBorders><w:top w:val=\"single\" w:sz=\"4\" w:space=\"0\" w:color=\"000000\"/><w:left w:val=\"single\" w:sz=\"4\" w:space=\"0\" w:color=\"000000\"/><w:bottom w:val=\"single\" w:sz=\"4\" w:space=\"0\" w:color=\"000000\"/><w:right w:val=\"single\" w:sz=\"4\" w:space=\"0\" w:color=\"000000\"/><w:insideH w:val=\"single\" w:sz=\"4\" w:space=\"0\" w:color=\"000000\"/><w:insideV w:val=\"single\" w:sz=\"4\" w:space=\"0\" w:color=\"000000\"/></w:tblBorders></w:tblPr></w:style>";
|
||||||
}
|
}
|
||||||
|
|
||||||
bool readSrc(const std::wstring& sFileName)
|
bool readSrc(const std::wstring& sFileName)
|
||||||
@ -451,7 +453,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
std::vector<NSCSS::CNode> GetSubClass(std::vector<NSCSS::CNode>& sSelectors)
|
std::vector<NSCSS::CNode> GetSubClass(const std::vector<NSCSS::CNode>& sSelectors)
|
||||||
{
|
{
|
||||||
std::vector<NSCSS::CNode> sSubClass(sSelectors);
|
std::vector<NSCSS::CNode> sSubClass(sSelectors);
|
||||||
|
|
||||||
@ -534,11 +536,11 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_oDocXml += L"<w:p>";
|
m_oDocXml += L"<w:p>";
|
||||||
readStream(sSelectors, L"", false, oLi, bWasP);
|
readStream(&m_oDocXml, sSelectors, L"", false, oLi, bWasP);
|
||||||
m_oDocXml += L"</w:p>";
|
m_oDocXml += L"</w:p>";
|
||||||
}
|
}
|
||||||
|
|
||||||
void readStream(std::vector<NSCSS::CNode>& sSelectors, std::wstring sRStyle, bool bBdo, const CLi& oLi, bool& bWasP)
|
void readStream(NSStringUtils::CStringBuilder* oXml, const std::vector<NSCSS::CNode>& sSelectors, std::wstring sRStyle, bool bBdo, const CLi& oLi, bool& bWasP)
|
||||||
{
|
{
|
||||||
if(m_oLightReader.IsEmptyNode())
|
if(m_oLightReader.IsEmptyNode())
|
||||||
return;
|
return;
|
||||||
@ -546,47 +548,45 @@ private:
|
|||||||
int nDeath = m_oLightReader.GetDepth();
|
int nDeath = m_oLightReader.GetDepth();
|
||||||
while(m_oLightReader.ReadNextSiblingNode2(nDeath))
|
while(m_oLightReader.ReadNextSiblingNode2(nDeath))
|
||||||
{
|
{
|
||||||
|
|
||||||
std::vector<NSCSS::CNode> sSubClass = GetSubClass(sSelectors);
|
std::vector<NSCSS::CNode> sSubClass = GetSubClass(sSelectors);
|
||||||
|
|
||||||
std::wstring sName = m_oLightReader.GetName();
|
std::wstring sName = m_oLightReader.GetName();
|
||||||
if(sName == L"#text")
|
if(sName == L"#text")
|
||||||
{
|
{
|
||||||
if(bWasP)
|
if(bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"<w:pPr><w:pStyle w:val=\"";
|
*oXml += L"<w:pPr><w:pStyle w:val=\"";
|
||||||
m_oDocXml += getStyle(sSubClass);
|
*oXml += getStyle(sSubClass);
|
||||||
m_oDocXml += L"\"/></w:pPr>";
|
*oXml += L"\"/></w:pPr>";
|
||||||
}
|
}
|
||||||
std::wstring sText = m_oLightReader.GetText();
|
std::wstring sText = m_oLightReader.GetText();
|
||||||
if(bBdo)
|
if(bBdo)
|
||||||
std::reverse(sText.begin(), sText.end());
|
std::reverse(sText.begin(), sText.end());
|
||||||
|
|
||||||
m_oDocXml += L"<w:r><w:rPr>";
|
*oXml += L"<w:r><w:rPr>";
|
||||||
m_oDocXml += sRStyle;
|
*oXml += sRStyle;
|
||||||
m_oDocXml += L"</w:rPr><w:t xml:space=\"preserve\">";
|
*oXml += L"</w:rPr><w:t xml:space=\"preserve\">";
|
||||||
m_oDocXml.WriteEncodeXmlString(sText);
|
(*oXml).WriteEncodeXmlString(sText);
|
||||||
m_oDocXml += L"</w:t></w:r>";
|
*oXml += L"</w:t></w:r>";
|
||||||
bWasP = false;
|
bWasP = false;
|
||||||
}
|
}
|
||||||
// Ссылки
|
// Ссылки
|
||||||
else if(sName == L"a")
|
else if(sName == L"a")
|
||||||
readLink(sSubClass, sRStyle, bBdo, oLi, bWasP);
|
readLink(oXml, sSubClass, sRStyle, bBdo, oLi, bWasP);
|
||||||
// Абревиатура, реализована как сноски
|
// Абревиатура, реализована как сноски
|
||||||
else if(sName == L"abbr")
|
else if(sName == L"abbr")
|
||||||
readAbbr(sSubClass, sRStyle, bBdo, oLi, bWasP);
|
readAbbr(oXml, sSubClass, sRStyle, bBdo, oLi, bWasP);
|
||||||
// Адрес
|
// Адрес
|
||||||
else if(sName == L"address")
|
else if(sName == L"address")
|
||||||
{
|
{
|
||||||
if(!bWasP)
|
if(!bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"</w:p><w:p>";
|
*oXml += L"</w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
readStream(sSubClass, sRStyle + L"<w:i/>", bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle + L"<w:i/>", bBdo, oLi, bWasP);
|
||||||
if(!bWasP)
|
if(!bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"</w:p><w:p>";
|
*oXml += L"</w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -597,30 +597,27 @@ private:
|
|||||||
// Контейнер
|
// Контейнер
|
||||||
// Заголовок скрытой информации
|
// Заголовок скрытой информации
|
||||||
// ...
|
// ...
|
||||||
else if(sName == L"article" || sName == L"aside" || sName == L"blockquote" || sName == L"details" || sName == L"div" ||
|
else if(sName == L"article" || sName == L"header" || sName == L"div" || sName == L"blockquote" || sName == L"main" ||
|
||||||
sName == L"summary" || sName == L"dl" || sName == L"filedset" || sName == L"figure" || sName == L"figcaption" ||
|
sName == L"summary" || sName == L"footer" || sName == L"nav" || sName == L"figcaption" || sName == L"form" ||
|
||||||
sName == L"footer" || sName == L"form" || sName == L"header" || sName == L"p" || sName == L"main" ||
|
sName == L"details" || sName == L"option" || sName == L"pre" || sName == L"fieldset" || sName == L"p" ||
|
||||||
sName == L"nav" || sName == L"pre" || sName == L"section" || sName == L"option")
|
sName == L"section" || sName == L"figure" || sName == L"dl" || sName == L"aside" )
|
||||||
{
|
{
|
||||||
if(!bWasP)
|
if(!bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"</w:p><w:p>";
|
*oXml += L"</w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
//m_oDocXml += L"<w:pPr><w:pStyle w:val=\"";
|
readStream(oXml, sSubClass, sRStyle, bBdo, oLi, bWasP);
|
||||||
//m_oDocXml += sName;
|
|
||||||
//m_oDocXml += L"\"/></w:pPr>";
|
|
||||||
readStream(sSubClass, sRStyle, bBdo, oLi, bWasP);
|
|
||||||
if(!bWasP)
|
if(!bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"</w:p><w:p>";
|
*oXml += L"</w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Полужирный текст
|
// Полужирный текст
|
||||||
// Акцентированный текст
|
// Акцентированный текст
|
||||||
else if(sName == L"b" || sName == L"strong")
|
else if(sName == L"b" || sName == L"strong")
|
||||||
readStream(sSubClass, sRStyle + L"<w:b/>", bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle + L"<w:b/>", bBdo, oLi, bWasP);
|
||||||
// Направление текста
|
// Направление текста
|
||||||
else if(sName == L"bdo")
|
else if(sName == L"bdo")
|
||||||
{
|
{
|
||||||
@ -631,21 +628,24 @@ private:
|
|||||||
m_oLightReader.MoveToElement();
|
m_oLightReader.MoveToElement();
|
||||||
|
|
||||||
if(sDir == L"rtl")
|
if(sDir == L"rtl")
|
||||||
readStream(sSubClass, sRStyle, true, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle, true, oLi, bWasP);
|
||||||
else
|
else
|
||||||
readStream(sSubClass, sRStyle, false, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle, false, oLi, bWasP);
|
||||||
}
|
}
|
||||||
// Отмена направления текста
|
// Отмена направления текста
|
||||||
else if(sName == L"bdi")
|
else if(sName == L"bdi")
|
||||||
readStream(sSubClass, sRStyle, false, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle, false, oLi, bWasP);
|
||||||
// Увеличивает размер шрифта
|
// Увеличивает размер шрифта
|
||||||
else if(sName == L"big")
|
else if(sName == L"big")
|
||||||
readStream(sSubClass, sRStyle + L"<w:sz w:val=\"26\"/>", bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle + L"<w:sz w:val=\"26\"/>", bBdo, oLi, bWasP);
|
||||||
// Перенос строки
|
// Перенос строки
|
||||||
else if(sName == L"br")
|
else if(sName == L"br")
|
||||||
{
|
{
|
||||||
m_oDocXml += L"<w:r><w:br/></w:r>";
|
if(!bWasP)
|
||||||
bWasP = false;
|
{
|
||||||
|
*oXml += L"</w:p><w:p>";
|
||||||
|
bWasP = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Цитата, обычно выделяется курсивом
|
// Цитата, обычно выделяется курсивом
|
||||||
// Новый термин, обычно выделяется курсивом
|
// Новый термин, обычно выделяется курсивом
|
||||||
@ -653,27 +653,27 @@ private:
|
|||||||
// Курсивный текст
|
// Курсивный текст
|
||||||
// Переменная, обычно выделяется курсивом
|
// Переменная, обычно выделяется курсивом
|
||||||
else if(sName == L"cite" || sName == L"dfn" || sName == L"em" || sName == L"i" || sName == L"var")
|
else if(sName == L"cite" || sName == L"dfn" || sName == L"em" || sName == L"i" || sName == L"var")
|
||||||
readStream(sSubClass, sRStyle + L"<w:i/>", bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle + L"<w:i/>", bBdo, oLi, bWasP);
|
||||||
// Код
|
// Код
|
||||||
// Моноширинный шрифт, например, Consolas
|
// Моноширинный шрифт, например, Consolas
|
||||||
// Результат скрипта
|
// Результат скрипта
|
||||||
else if(sName == L"code" || sName == L"kbd" || sName == L"samp")
|
else if(sName == L"code" || sName == L"kbd" || sName == L"samp")
|
||||||
readStream(sSubClass, sRStyle + L"<w:rFonts w:ascii=\"Consolas\" w:hAnsi=\"Consolas\"/>", bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle + L"<w:rFonts w:ascii=\"Consolas\" w:hAnsi=\"Consolas\"/>", bBdo, oLi, bWasP);
|
||||||
// Зачеркнутый текст
|
// Зачеркнутый текст
|
||||||
else if(sName == L"del" || sName == L"s")
|
else if(sName == L"del" || sName == L"s")
|
||||||
readStream(sSubClass, sRStyle + L"<w:strike/>", bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle + L"<w:strike/>", bBdo, oLi, bWasP);
|
||||||
// Заголовок
|
// Заголовок
|
||||||
else if(sName == L"h1" || sName == L"h2" || sName == L"h3" || sName == L"h4" || sName == L"h5" || sName == L"h6")
|
else if(sName == L"h1" || sName == L"h2" || sName == L"h3" || sName == L"h4" || sName == L"h5" || sName == L"h6")
|
||||||
{
|
{
|
||||||
if(!bWasP)
|
if(!bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"</w:p><w:p>";
|
*oXml += L"</w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
readStream(sSubClass, sRStyle, bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle, bBdo, oLi, bWasP);
|
||||||
if(!bWasP)
|
if(!bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"</w:p><w:p>";
|
*oXml += L"</w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -682,109 +682,215 @@ private:
|
|||||||
{
|
{
|
||||||
if(!bWasP)
|
if(!bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"</w:p><w:p>";
|
*oXml += L"</w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
m_oDocXml += L"<w:pPr><w:pBdr><w:bottom w:val=\"single\" w:color=\"000000\" w:sz=\"8\" w:space=\"0\"/></w:pBdr></w:pPr></w:p><w:p>";
|
*oXml += L"<w:pPr><w:pBdr><w:bottom w:val=\"single\" w:color=\"000000\" w:sz=\"8\" w:space=\"0\"/></w:pBdr></w:pPr></w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
// Картинки
|
// Картинки
|
||||||
else if(sName == L"img")
|
else if(sName == L"img")
|
||||||
{
|
{
|
||||||
readImage();
|
readImage(oXml);
|
||||||
bWasP = false;
|
bWasP = false;
|
||||||
}
|
}
|
||||||
// Подчеркнутый
|
// Подчеркнутый
|
||||||
else if(sName == L"ins")
|
else if(sName == L"ins")
|
||||||
readStream(sSubClass, sRStyle + L"<w:u w:val=\"single\"/>", bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle + L"<w:u w:val=\"single\"/>", bBdo, oLi, bWasP);
|
||||||
// Выделенный текст, обычно выделяется желтым
|
// Выделенный текст, обычно выделяется желтым
|
||||||
else if(sName == L"mark")
|
else if(sName == L"mark")
|
||||||
readStream(sSubClass, sRStyle + L"<w:highlight w:val=\"yellow\"/>", bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle + L"<w:highlight w:val=\"yellow\"/>", bBdo, oLi, bWasP);
|
||||||
// Математическая формула
|
|
||||||
else if(sName == L"math")
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
// Меню
|
// Меню
|
||||||
// Маркированный список
|
// Маркированный список
|
||||||
else if(sName == L"menu" || sName == L"ul")
|
else if(sName == L"menu" || sName == L"ul")
|
||||||
readLi(sSubClass, sRStyle, bBdo, oLi, bWasP, true);
|
readLi(oXml, sSubClass, sRStyle, bBdo, oLi, bWasP, true);
|
||||||
// Нумерованный список
|
// Нумерованный список
|
||||||
else if(sName == L"ol")
|
else if(sName == L"ol")
|
||||||
readLi(sSubClass, sRStyle, bBdo, oLi, bWasP, false);
|
readLi(oXml, sSubClass, sRStyle, bBdo, oLi, bWasP, false);
|
||||||
// Цитата, выделенная кавычками, обычно выделяется курсивом
|
// Цитата, выделенная кавычками, обычно выделяется курсивом
|
||||||
else if(sName == L"q")
|
else if(sName == L"q")
|
||||||
{
|
{
|
||||||
m_oDocXml += L"<w:r><w:t xml:space=\"preserve\">"</w:t></w:r>";
|
*oXml += L"<w:r><w:t xml:space=\"preserve\">"</w:t></w:r>";
|
||||||
readStream(sSubClass, sRStyle + L"<w:i/>", bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle + L"<w:i/>", bBdo, oLi, bWasP);
|
||||||
m_oDocXml += L"<w:r><w:t xml:space=\"preserve\">"</w:t></w:r>";
|
*oXml += L"<w:r><w:t xml:space=\"preserve\">"</w:t></w:r>";
|
||||||
bWasP = false;
|
bWasP = false;
|
||||||
}
|
}
|
||||||
// Текст верхнего регистра
|
// Текст верхнего регистра
|
||||||
else if(sName == L"rt" || sName == L"sup")
|
else if(sName == L"rt" || sName == L"sup")
|
||||||
readStream(sSubClass, sRStyle + L"<w:vertAlign w:val=\"superscript\"/>", bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle + L"<w:vertAlign w:val=\"superscript\"/>", bBdo, oLi, bWasP);
|
||||||
// Уменьшает размер шрифта
|
// Уменьшает размер шрифта
|
||||||
else if(sName == L"small")
|
else if(sName == L"small")
|
||||||
readStream(sSubClass, sRStyle + L"<w:sz w:val=\"18\"/>", bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle + L"<w:sz w:val=\"18\"/>", bBdo, oLi, bWasP);
|
||||||
// Текст нижнего регистра
|
// Текст нижнего регистра
|
||||||
else if(sName == L"sub")
|
else if(sName == L"sub")
|
||||||
readStream(sSubClass, sRStyle + L"<w:vertAlign w:val=\"subscript\"/>", bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle + L"<w:vertAlign w:val=\"subscript\"/>", bBdo, oLi, bWasP);
|
||||||
// Векторная картинка
|
// Векторная картинка
|
||||||
else if(sName == L"svg")
|
else if(sName == L"svg")
|
||||||
{
|
{
|
||||||
readSVG();
|
readSVG(oXml);
|
||||||
bWasP = false;
|
bWasP = false;
|
||||||
}
|
}
|
||||||
// Таблицы
|
// Таблицы
|
||||||
else if(sName == L"table")
|
else if(sName == L"table")
|
||||||
{
|
{
|
||||||
|
*oXml += L"</w:p>";
|
||||||
|
readTable(oXml, sSubClass, sRStyle, bBdo, oLi, bWasP);
|
||||||
|
*oXml += L"<w:p>";
|
||||||
|
bWasP = true;
|
||||||
}
|
}
|
||||||
// Текст с границами
|
// Текст с границами
|
||||||
else if(sName == L"textarea")
|
else if(sName == L"textarea")
|
||||||
{
|
{
|
||||||
if(!bWasP)
|
if(!bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"</w:p><w:p>";
|
*oXml += L"</w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
m_oDocXml += L"<w:pPr><w:pBdr><w:left w:val=\"single\" w:color=\"000000\" w:sz=\"8\" w:space=\"0\"/><w:top w:val=\"single\" w:color=\"000000\" w:sz=\"8\" w:space=\"0\"/><w:right w:val=\"single\" w:color=\"000000\" w:sz=\"8\" w:space=\"0\"/><w:bottom w:val=\"single\" w:color=\"000000\" w:sz=\"8\" w:space=\"0\"/></w:pBdr></w:pPr>";
|
*oXml += L"<w:pPr><w:pBdr><w:left w:val=\"single\" w:color=\"000000\" w:sz=\"8\" w:space=\"0\"/><w:top w:val=\"single\" w:color=\"000000\" w:sz=\"8\" w:space=\"0\"/><w:right w:val=\"single\" w:color=\"000000\" w:sz=\"8\" w:space=\"0\"/><w:bottom w:val=\"single\" w:color=\"000000\" w:sz=\"8\" w:space=\"0\"/></w:pBdr></w:pPr>";
|
||||||
readStream(sSubClass, sRStyle, bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle, bBdo, oLi, bWasP);
|
||||||
if(!bWasP)
|
if(!bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"</w:p><w:p>";
|
*oXml += L"</w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Игнорируется
|
// Игнорируется
|
||||||
else if(sName == L"rp" || sName == L"script" || sName == L"template" || sName == L"wbr" || sName == L"area" || sName == L"audio" ||
|
else if(sName == L"template" || sName == L"canvas" || sName == L"video" || sName == L"math" || sName == L"rp" ||
|
||||||
sName == L"video" || sName == L"canvas" || sName == L"command" || sName == L"map" || sName == L"embed" ||
|
sName == L"command" || sName == L"iframe" || sName == L"embed" || sName == L"area" || sName == L"map" ||
|
||||||
sName == L"iframe" || sName == L"keygen")
|
sName == L"keygen" || sName == L"script" || sName == L"audio" || sName == L"wbr" )
|
||||||
continue;
|
continue;
|
||||||
// Без нового абзаца
|
// Без нового абзаца
|
||||||
else if(sName == L"button" || sName == L"data" || sName == L"label" || sName == L"audio" || sName == L"time" || sName == L"span" ||
|
else if(sName == L"datalist" || sName == L"button" || sName == L"label" || sName == L"data" || sName == L"object" ||
|
||||||
sName == L"datalist" || sName == L"input" || sName == L"select" ||
|
sName == L"noscript" || sName == L"select" || sName == L"input" || sName == L"time" || sName == L"output" ||
|
||||||
sName == L"meter" || sName == L"noscript" || sName == L"object" ||
|
sName == L"progress" || sName == L"hgroup" || sName == L"meter" || sName == L"span" || sName == L"audio" ||
|
||||||
sName == L"hgroup" || sName == L"output" || sName == L"progress" || sName == L"ruby")
|
sName == L"ruby")
|
||||||
readStream(sSubClass, sRStyle, bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle, bBdo, oLi, bWasP);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!bWasP)
|
if(!bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"</w:p><w:p>";
|
*oXml += L"</w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
readStream(sSubClass, sRStyle, bBdo, oLi, bWasP);
|
readStream(oXml, sSubClass, sRStyle, bBdo, oLi, bWasP);
|
||||||
if(!bWasP)
|
if(!bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"</w:p><w:p>";
|
*oXml += L"</w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void readLi (std::vector<NSCSS::CNode>& sSelectors, std::wstring sRStyle, bool bBdo, const CLi& oLi, bool& bWasP, bool bType)
|
int readTr (NSStringUtils::CStringBuilder* oXml, const std::vector<NSCSS::CNode>& sSelectors, std::wstring sRStyle, bool bBdo, const CLi& oLi, bool& bWasP, std::map<size_t, size_t>& mTable)
|
||||||
|
{
|
||||||
|
int nGridCol = 0;
|
||||||
|
int nDeath = m_oLightReader.GetDepth();
|
||||||
|
while(m_oLightReader.ReadNextSiblingNode(nDeath))
|
||||||
|
{
|
||||||
|
std::wstring sName = m_oLightReader.GetName();
|
||||||
|
// tr - строки в таблице
|
||||||
|
if(sName != L"tr")
|
||||||
|
continue;
|
||||||
|
if(m_oLightReader.IsEmptyNode())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
int nTCol = 0;
|
||||||
|
*oXml += L"<w:tr>";
|
||||||
|
int nTrDeath = m_oLightReader.GetDepth();
|
||||||
|
while(m_oLightReader.ReadNextSiblingNode(nTrDeath))
|
||||||
|
{
|
||||||
|
std::wstring sColspan = L"";
|
||||||
|
std::wstring sRowspan = L"";
|
||||||
|
while(m_oLightReader.MoveToNextAttribute())
|
||||||
|
{
|
||||||
|
if(m_oLightReader.GetName() == L"colspan")
|
||||||
|
sColspan = m_oLightReader.GetText();
|
||||||
|
else if(m_oLightReader.GetName() == L"rowspan")
|
||||||
|
sRowspan = m_oLightReader.GetText();
|
||||||
|
}
|
||||||
|
m_oLightReader.MoveToElement();
|
||||||
|
|
||||||
|
*oXml += L"<w:tc><w:tcPr><w:textDirection w:val=\"lrTb\"/><w:noWrap w:val=\"false\"/>";
|
||||||
|
if(!sColspan.empty())
|
||||||
|
{
|
||||||
|
*oXml += L"<w:gridSpan w:val=\"";
|
||||||
|
*oXml += sColspan;
|
||||||
|
*oXml += L"\"/>";
|
||||||
|
}
|
||||||
|
*oXml += L"</w:tcPr><w:p>";
|
||||||
|
if(++nTCol > nGridCol)
|
||||||
|
nGridCol = nTCol;
|
||||||
|
// Читаем th. Ячейка заголовка таблицы. Выравнивание посередине. Выделяется полужирным
|
||||||
|
if(m_oLightReader.GetName() == L"th")
|
||||||
|
{
|
||||||
|
*oXml += L"<w:pPr><w:jc w:val=\"center\"/></w:pPr>";
|
||||||
|
bWasP = true;
|
||||||
|
readStream(oXml, sSelectors, sRStyle + L"<w:b/>", bBdo, oLi, bWasP);
|
||||||
|
}
|
||||||
|
// Читаем td. Ячейка таблицы. Выравнивание вправо
|
||||||
|
else if(m_oLightReader.GetName() == L"td")
|
||||||
|
{
|
||||||
|
*oXml += L"<w:pPr><w:jc w:val=\"right\"/></w:pPr>";
|
||||||
|
readStream(oXml, sSelectors, sRStyle, bBdo, oLi, bWasP);
|
||||||
|
}
|
||||||
|
*oXml += L"</w:p></w:tc>";
|
||||||
|
}
|
||||||
|
*oXml += L"</w:tr>";
|
||||||
|
}
|
||||||
|
return nGridCol;
|
||||||
|
}
|
||||||
|
|
||||||
|
void readTable (NSStringUtils::CStringBuilder* oXml, const std::vector<NSCSS::CNode>& sSelectors, std::wstring sRStyle, bool bBdo, const CLi& oLi, bool& bWasP)
|
||||||
|
{
|
||||||
|
if(m_oLightReader.IsEmptyNode())
|
||||||
|
return;
|
||||||
|
// Стиль таблицы
|
||||||
|
*oXml += L"<w:tbl><w:tblPr><w:tblStyle w:val=\"table\"/><w:tblW w:w=\"0\" w:type=\"auto\"/><w:tblLayout w:type=\"fixed\"/></w:tblPr>";
|
||||||
|
|
||||||
|
NSStringUtils::CStringBuilder oHead;
|
||||||
|
NSStringUtils::CStringBuilder oBody;
|
||||||
|
NSStringUtils::CStringBuilder oFoot;
|
||||||
|
int nGridCol = 0;
|
||||||
|
|
||||||
|
int nDeath = m_oLightReader.GetDepth();
|
||||||
|
while(m_oLightReader.ReadNextSiblingNode(nDeath))
|
||||||
|
{
|
||||||
|
int n = 0;
|
||||||
|
std::map<size_t, size_t> mTable;
|
||||||
|
std::wstring sName = m_oLightReader.GetName();
|
||||||
|
if(sName == L"thead")
|
||||||
|
n = readTr(&oHead, sSelectors, sRStyle, bBdo, oLi, bWasP, mTable);
|
||||||
|
else if(sName == L"tbody")
|
||||||
|
n = readTr(&oBody, sSelectors, sRStyle, bBdo, oLi, bWasP, mTable);
|
||||||
|
else if(sName == L"tfoot")
|
||||||
|
n = readTr(&oFoot, sSelectors, sRStyle, bBdo, oLi, bWasP, mTable);
|
||||||
|
if(n > nGridCol)
|
||||||
|
nGridCol = n;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Размеры таблицы
|
||||||
|
std::wstring sGridCol = L"";
|
||||||
|
if(nGridCol != 0)
|
||||||
|
sGridCol = std::to_wstring((int)(9570.0 / (double)nGridCol));
|
||||||
|
*oXml += L"<w:tblGrid>";
|
||||||
|
for(int i = 0; i < nGridCol; i++)
|
||||||
|
{
|
||||||
|
*oXml += L"<w:gridCol w:w=\"";
|
||||||
|
*oXml += sGridCol;
|
||||||
|
*oXml += L"\"/>";
|
||||||
|
}
|
||||||
|
*oXml += L"</w:tblGrid>";
|
||||||
|
// Конец таблицы
|
||||||
|
*oXml += oHead.GetData();
|
||||||
|
*oXml += oBody.GetData();
|
||||||
|
*oXml += oFoot.GetData();
|
||||||
|
*oXml += L"</w:tbl>";
|
||||||
|
// Пустая строка после таблицы, чтобы следующий текст не приклеивался
|
||||||
|
*oXml += L"<w:p></w:p>";
|
||||||
|
}
|
||||||
|
|
||||||
|
void readLi (NSStringUtils::CStringBuilder* oXml, const std::vector<NSCSS::CNode>& sSelectors, std::wstring sRStyle, bool bBdo, const CLi& oLi, bool& bWasP, bool bType)
|
||||||
{
|
{
|
||||||
if(m_oLightReader.IsEmptyNode())
|
if(m_oLightReader.IsEmptyNode())
|
||||||
return;
|
return;
|
||||||
@ -796,28 +902,28 @@ private:
|
|||||||
continue;
|
continue;
|
||||||
if(!bWasP)
|
if(!bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"</w:p><w:p>";
|
*oXml += L"</w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
CLi oSubLi;
|
CLi oSubLi;
|
||||||
oSubLi.bNeedLi = true;
|
oSubLi.bNeedLi = true;
|
||||||
oSubLi.nLevelLi = oLi.nLevelLi + 1;
|
oSubLi.nLevelLi = oLi.nLevelLi + 1;
|
||||||
oSubLi.bType = bType;
|
oSubLi.bType = bType;
|
||||||
m_oDocXml += L"<w:pPr><w:pStyle w:val=\"li\"/><w:numPr><w:ilvl w:val=\"";
|
*oXml += L"<w:pPr><w:pStyle w:val=\"li\"/><w:numPr><w:ilvl w:val=\"";
|
||||||
m_oDocXml += std::to_wstring(oSubLi.nLevelLi);
|
*oXml += std::to_wstring(oSubLi.nLevelLi);
|
||||||
m_oDocXml += L"\"/><w:numId w:val=\"";
|
*oXml += L"\"/><w:numId w:val=\"";
|
||||||
m_oDocXml += (oSubLi.bType ? L"1" : L"2");
|
*oXml += (oSubLi.bType ? L"1" : L"2");
|
||||||
m_oDocXml += L"\"/></w:numPr></w:pPr>";
|
*oXml += L"\"/></w:numPr></w:pPr>";
|
||||||
readStream(sSelectors, sRStyle, bBdo, oSubLi, bWasP);
|
readStream(oXml, sSelectors, sRStyle, bBdo, oSubLi, bWasP);
|
||||||
if(!bWasP)
|
if(!bWasP)
|
||||||
{
|
{
|
||||||
m_oDocXml += L"</w:p><w:p>";
|
*oXml += L"</w:p><w:p>";
|
||||||
bWasP = true;
|
bWasP = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void readAbbr (std::vector<NSCSS::CNode>& sSelectors, std::wstring sRStyle, bool bBdo, const CLi& oLi, bool& bWasP)
|
void readAbbr (NSStringUtils::CStringBuilder* oXml, const std::vector<NSCSS::CNode>& sSelectors, std::wstring sRStyle, bool bBdo, const CLi& oLi, bool& bWasP)
|
||||||
{
|
{
|
||||||
std::wstring sNote = L"";
|
std::wstring sNote = L"";
|
||||||
while(m_oLightReader.MoveToNextAttribute())
|
while(m_oLightReader.MoveToNextAttribute())
|
||||||
@ -825,11 +931,11 @@ private:
|
|||||||
sNote = m_oLightReader.GetText();
|
sNote = m_oLightReader.GetText();
|
||||||
m_oLightReader.MoveToElement();
|
m_oLightReader.MoveToElement();
|
||||||
|
|
||||||
readStream(sSelectors, sRStyle, bBdo, oLi, bWasP);
|
readStream(oXml, sSelectors, sRStyle, bBdo, oLi, bWasP);
|
||||||
|
|
||||||
m_oDocXml += L"<w:r><w:rPr><w:rStyle w:val=\"footnote\"/></w:rPr><w:footnoteReference w:id=\"";
|
*oXml += L"<w:r><w:rPr><w:rStyle w:val=\"footnote\"/></w:rPr><w:footnoteReference w:id=\"";
|
||||||
m_oDocXml += std::to_wstring(m_nFootnoteId);
|
*oXml += std::to_wstring(m_nFootnoteId);
|
||||||
m_oDocXml += L"\"/></w:r>";
|
*oXml += L"\"/></w:r>";
|
||||||
|
|
||||||
m_oNoteXml += L"<w:footnote w:id=\"";
|
m_oNoteXml += L"<w:footnote w:id=\"";
|
||||||
m_oNoteXml += std::to_wstring(m_nFootnoteId++);
|
m_oNoteXml += std::to_wstring(m_nFootnoteId++);
|
||||||
@ -838,7 +944,7 @@ private:
|
|||||||
m_oNoteXml += L"</w:t></w:r></w:p></w:footnote>";
|
m_oNoteXml += L"</w:t></w:r></w:p></w:footnote>";
|
||||||
}
|
}
|
||||||
|
|
||||||
void readLink (std::vector<NSCSS::CNode>& sSelectors, std::wstring sRStyle, bool bBdo, const CLi& oLi, bool& bWasP)
|
void readLink (NSStringUtils::CStringBuilder* oXml, const std::vector<NSCSS::CNode>& sSelectors, std::wstring sRStyle, bool bBdo, const CLi& oLi, bool& bWasP)
|
||||||
{
|
{
|
||||||
std::wstring sRef = L"";
|
std::wstring sRef = L"";
|
||||||
std::wstring sTitle = L"";
|
std::wstring sTitle = L"";
|
||||||
@ -879,7 +985,7 @@ private:
|
|||||||
|
|
||||||
// Перекрестная ссылка внутри файла
|
// Перекрестная ссылка внутри файла
|
||||||
if(bCross)
|
if(bCross)
|
||||||
m_oDocXml += L"<w:hyperlink w:tooltip=\"Current Document\" w:anchor=\"cHyp";
|
*oXml += L"<w:hyperlink w:tooltip=\"Current Document\" w:anchor=\"cHyp";
|
||||||
// Внешняя ссылка
|
// Внешняя ссылка
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -891,18 +997,18 @@ private:
|
|||||||
m_oDocXmlRels += L"\" TargetMode=\"External\"/>";
|
m_oDocXmlRels += L"\" TargetMode=\"External\"/>";
|
||||||
|
|
||||||
// Пишем в document.xml
|
// Пишем в document.xml
|
||||||
m_oDocXml += L"<w:hyperlink w:tooltip=\"";
|
*oXml += L"<w:hyperlink w:tooltip=\"";
|
||||||
m_oDocXml += sTitle;
|
*oXml += sTitle;
|
||||||
m_oDocXml += L"\" r:id=\"rHyp";
|
*oXml += L"\" r:id=\"rHyp";
|
||||||
}
|
}
|
||||||
m_oDocXml += std::to_wstring(m_nHyperlinkId++);
|
*oXml += std::to_wstring(m_nHyperlinkId++);
|
||||||
m_oDocXml += L"\">";
|
*oXml += L"\">";
|
||||||
bWasP = false;
|
bWasP = false;
|
||||||
readStream(sSelectors, sRStyle += L"<w:rStyle w:val=\"a\"/>", bBdo, oLi, bWasP);
|
readStream(oXml, sSelectors, sRStyle += L"<w:rStyle w:val=\"a\"/>", bBdo, oLi, bWasP);
|
||||||
m_oDocXml += L"</w:hyperlink>";
|
*oXml += L"</w:hyperlink>";
|
||||||
}
|
}
|
||||||
|
|
||||||
void readImage()
|
void readImage (NSStringUtils::CStringBuilder* oXml)
|
||||||
{
|
{
|
||||||
while(m_oLightReader.MoveToNextAttribute())
|
while(m_oLightReader.MoveToNextAttribute())
|
||||||
{
|
{
|
||||||
@ -953,12 +1059,12 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(bRes)
|
if(bRes)
|
||||||
ImageRels(sImageId, L"i" + sImageName);
|
ImageRels(oXml, sImageId, L"i" + sImageName);
|
||||||
}
|
}
|
||||||
m_oLightReader.MoveToElement();
|
m_oLightReader.MoveToElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImageRels(const std::wstring& sImageId, const std::wstring& sImageName)
|
void ImageRels (NSStringUtils::CStringBuilder* oXml, const std::wstring& sImageId, const std::wstring& sImageName)
|
||||||
{
|
{
|
||||||
m_nImageId++;
|
m_nImageId++;
|
||||||
// Прописать рельсы
|
// Прописать рельсы
|
||||||
@ -996,25 +1102,25 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Пишем в document.xml
|
// Пишем в document.xml
|
||||||
m_oDocXml += L"<w:r><w:drawing><wp:inline distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\"><wp:extent cx=\"";
|
*oXml += L"<w:r><w:drawing><wp:inline distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\"><wp:extent cx=\"";
|
||||||
m_oDocXml += std::to_wstring(nWx);
|
*oXml += std::to_wstring(nWx);
|
||||||
m_oDocXml += L"\" cy=\"";
|
*oXml += L"\" cy=\"";
|
||||||
m_oDocXml += std::to_wstring(nHy);
|
*oXml += std::to_wstring(nHy);
|
||||||
m_oDocXml += L"\"/><wp:docPr id=\"";
|
*oXml += L"\"/><wp:docPr id=\"";
|
||||||
m_oDocXml += sImageId;
|
*oXml += sImageId;
|
||||||
m_oDocXml += L"\" name=\"\"/><a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\"><pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\"><pic:nvPicPr><pic:cNvPr id=\"";
|
*oXml += L"\" name=\"\"/><a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\"><pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\"><pic:nvPicPr><pic:cNvPr id=\"";
|
||||||
m_oDocXml += sImageId;
|
*oXml += sImageId;
|
||||||
m_oDocXml += L"\" name=\"\"/><pic:cNvPicPr></pic:cNvPicPr></pic:nvPicPr><pic:blipFill><a:blip r:embed=\"rPic";
|
*oXml += L"\" name=\"\"/><pic:cNvPicPr></pic:cNvPicPr></pic:nvPicPr><pic:blipFill><a:blip r:embed=\"rPic";
|
||||||
m_oDocXml += sImageId;
|
*oXml += sImageId;
|
||||||
m_oDocXml += L"\"/><a:stretch/></pic:blipFill><pic:spPr bwMode=\"auto\"><a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"";
|
*oXml += L"\"/><a:stretch/></pic:blipFill><pic:spPr bwMode=\"auto\"><a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"";
|
||||||
m_oDocXml += std::to_wstring(nWx);
|
*oXml += std::to_wstring(nWx);
|
||||||
m_oDocXml += L"\" cy=\"";
|
*oXml += L"\" cy=\"";
|
||||||
m_oDocXml += std::to_wstring(nHy);
|
*oXml += std::to_wstring(nHy);
|
||||||
m_oDocXml += L"\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></pic:spPr></pic:pic></a:graphicData></a:graphic></wp:inline></w:drawing></w:r>";
|
*oXml += L"\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></pic:spPr></pic:pic></a:graphicData></a:graphic></wp:inline></w:drawing></w:r>";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void readSVG()
|
void readSVG (NSStringUtils::CStringBuilder* oXml)
|
||||||
{
|
{
|
||||||
// Сохранить как .svg картинку
|
// Сохранить как .svg картинку
|
||||||
NSStringUtils::CStringBuilder oSVG;
|
NSStringUtils::CStringBuilder oSVG;
|
||||||
@ -1081,7 +1187,7 @@ private:
|
|||||||
pMetafile->Release();
|
pMetafile->Release();
|
||||||
pFonts->Release();
|
pFonts->Release();
|
||||||
|
|
||||||
ImageRels(sImageId, sImageId + L".png");
|
ImageRels(oXml, sImageId, sImageId + L".png");
|
||||||
}
|
}
|
||||||
|
|
||||||
std::wstring content()
|
std::wstring content()
|
||||||
|
|||||||
Reference in New Issue
Block a user