Я ищу пример документа Microsoft Word, созданного HTML. Он должен содержать заголовок, нижний колонтитул и водяной знак.
HTML-документ Microsoft Word с заголовком, нижним колонтитулом и водяным знаком
Ответ 1
Это пример, надеюсь, что он помогает другим, которые пытаются сгенерировать файл .doc ms word с HTML.
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40">
<head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><title></title>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<style>
@page
{
mso-page-orientation: landscape;
size:29.7cm 21cm; margin:1cm 1cm 1cm 1cm;
}
@page Section1 {
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-header: h1;
mso-footer: f1;
}
div.Section1 { page:Section1; }
table#hrdftrtbl
{
margin:0in 0in 0in 900in;
width:1px;
height:1px;
overflow:hidden;
}
p.MsoFooter, li.MsoFooter, div.MsoFooter
{
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
tab-stops:center 3.0in right 6.0in;
font-size:12.0pt;
}
</style>
<xml>
<w:WordDocument>
<w:View>Print</w:View>
<w:Zoom>100</w:Zoom>
<w:DoNotOptimizeForBrowser/>
</w:WordDocument>
</xml>
</head>
<body>
<div class="Section1">
<p> </p>
<br/>
<table id='hrdftrtbl' border='0' cellspacing='0' cellpadding='0'>
<tr><td> <div style='mso-element:header' id=h1 >
<!-- HEADER-tags -->
<p class=MsoHeader >HEADER</p>
<!-- end HEADER-tags -->
</div>
</td>
<td>
<div style='mso-element:footer' id=f1><span style='position:relative;z-index:-1'>
<!-- FOOTER-tags -->
FOOTER
<span style='mso-no-proof:yes'><!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="[email protected]@[email protected]@[email protected]@[email protected]@5xe" filled="f" stroked="f">
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Picture_x0020_1" o:spid="_x0000_s3073" type="#_x0000_t75"
alt="VHB" style='position:absolute;
margin-right:0pt;margin-top:-400pt;
z-index:-1;
visibility:visible;mso-wrap-style:square;mso-wrap-distance-left:9pt;
mso-wrap-distance-top:0;mso-wrap-distance-right:9pt;
mso-wrap-distance-bottom:0;mso-position-horizontal:absolute;
mso-position-horizontal-relative:text;mso-position-vertical:absolute;
mso-position-vertical-relative:text'>
<v:imagedata src="https://www.google.bg/logos/2012/Rodin-2012-homepage.png"/>
</v:shape><![endif]--></span>
<p class=MsoFooter>
<span style=mso-tab-count:2'></span>
Page <span style='mso-field-code: PAGE '><span style='mso-no-proof:yes'></span> from <span style='mso-field-code: NUMPAGES '></span>
<!-- end FOOTER-tags -->
</span>
</p>
</div>
<div style='mso-element:header' id=fh1>
<p class=MsoHeader><span lang=EN-US style='mso-ansi-language:EN-US'> <o:p></o:p></span></p>
</div>
<div style='mso-element:footer' id=ff1>
<p class=MsoFooter><span lang=EN-US style='mso-ansi-language:EN-US'> <o:p></o:p></span></p>
</div>
</td></tr>
</table>
</div>
</body></html>
Вы можете отрегулировать изображение водяного знака, установив ширину, высоту, верхний край, margin-right на элементе v: shape id = "Picture_x0020_1": встроенный стиль.
Ответ 2
Try:
<img src="http://www.website.com/path/to/image.jpg" width="width_in_points" height="height_in_points" style="width:width_in_poits;height:height_in_points;" />
Для полного примера:
<img src="http://www.website.com/path/to/image.jpg" width="233" height="54" style="width:233pt;height:54pt;" />
Я не очень хорошо знаком с VML и встраиваю изображения в Word, но, насколько мне кажется, это подходит для моих целей, и я могу встроить его в документ Word. Word будет автоматически обрабатывать вложение при первой загрузке.
Просто имейте в виду, что измерение по умолчанию в Word - это как сантиметры, так и точки, поэтому вам нужно делать все это в очках. Вероятно, хороший способ - сначала вставить изображение, открыть в Word, изменить размер, если вам нужно, и получить измерения изображения через слово. Затем вернитесь к своему приложению и задайте ширину и высоту. Постарайтесь сохранить то же соотношение, что и Word, иначе оно изменит размер вашего изображения. По крайней мере, то, что Слово делает со мной.
EDIT:
Я пересмотрел приведенный выше пример изображения - он работает с некоторыми версиями слова, но не вставляет изображение. Вы будете получать предупреждения каждый раз, когда вы откроете файл, спрашивающий вас, хотите ли вы загрузить внешний файл. Если ваши настройки безопасности в офисе мешают вам это сделать, вам нужно вставить файл, используя первый ответ, который я подтвердил для работы с office 2007 +:
<div style='mso-element:header' id=h1 >
<span style='mso-no-proof:yes'>
<!--[if gte vml 1]>
<v:shapetype id="_x0000_t75"
coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="[email protected]@[email protected]@[email protected]@[email protected]@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype>
<v:shape id="_x0000_s1025" type="#_x0000_t75" alt="" style='position:absolute;
margin-left:0;margin-top:2pt;width:537pt;height:57pt;z-index:251659264'>
<v:imagedata src="http://www.website.com.au/path/to/image.jpg"/>
<w:wrap type="square"/>
</v:shape>
<![endif]-->
</span>
</div>
Поместите это в раздел:
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
Просто убедитесь, что все ваши измерения находятся в точках.
Ответ 3
Пример ниже:
- очень лаконичен, поскольку отбирает лишние теги HTML и дает пример с примерно половиной строк кода и другими ответами
- отводит дополнительное необходимое пространство для элемента верхнего/нижнего колонтитула до 1pt (другие ответы добавляют несколько сантиметров невидимого содержимого в документ, что часто приводит к появлению дополнительной пустой страницы в конце)
- находит код верхнего/нижнего колонтитула в верхней части вашего контента, что намного лучше, поскольку он не изменится независимо от длины контента
- содержит рабочие примеры использования ссылок на номера страниц (код ссылки некоторых других ответов не работает)
<html>
<head>
<style type="text/css">
@page Section1 {
margin:0.75in 0.75in 0.75in 0.75in;
size:841.7pt 595.45pt;
mso-page-orientation:landscape;
mso-header-margin:0.5in;
mso-header: h1;
mso-footer-margin:0.5in;
mso-footer: f1;
}
div.Section1 {page:Section1;}
p.headerFooter { margin:0in; text-align: center; }
</style>
</head>
<body><div class=Section1>
<!-- header/footer:
This element will appears in your main document (unless you save in a separate HTML),
therefore, we move it off the page (left 50 inches) and relegate its height
to 1pt by using a table with 1 exact-height row
-->
<table style='margin-left:50in;'><tr style='height:1pt;mso-height-rule:exactly'>
<td>
<div style='mso-element:header' id=h1>
<p class=headerFooter>
Header content goes here
</p>
</div>
</td>
<td>
<div style='mso-element:footer' id=f1>
<p class=headerFooter>
Page
<span style='mso-field-code:PAGE'></span>
of
<span style='mso-field-code:NUMPAGES'></span>
</p>
</div>
</td></tr></table>
Main content goes here.
Here a page break:
<br clear=all style='mso-special-character:line-break; page-break-before:always'>
This is page 2
</div></body>
</html>