Difference between revisions of "Help:Экспорт в текстовые процессоры"

From Wiki4Intranet
Jump to: navigation, search
m (Картинка с большим разрешением)
 
(3 intermediate revisions by one other user not shown)
Line 15: Line 15:
 
Они остаются «связанными» с хранящимися на сервере, и если обновить картинки на сервере, а затем «обновить связи в документе» — то картинки обновятся.
 
Они остаются «связанными» с хранящимися на сервере, и если обновить картинки на сервере, а затем «обновить связи в документе» — то картинки обновятся.
  
Если документ надо высылать заказчику — то связи перед этим необходимо разорвать. Разрыв связей выполняется в MS Word 2003 через меню Связи, а в MS Word 2010 через ссылку справа внизу страницы Файл.
+
Если документ надо высылать куда-то, где Wiki недоступна (например, заказчику) — то связи перед этим необходимо разорвать. Разрыв связей выполняется в MS Word 2003 через меню Связи, а в MS Word 2010 через ссылку справа внизу страницы Файл.
  
 
В Справке далее упоминаются [[Справка:Шаблоны|шаблоны]] (<tt><nowiki>{{Шаблон}}</nowiki></tt>), они могут быть не во всех wiki-системах — они сознательно не сделаны реплицируемыми чтобы не повредить возможные индивидуальные настройки для конкретных заказчиков. Но при отсутствии — их надо брать из основной wiki.
 
В Справке далее упоминаются [[Справка:Шаблоны|шаблоны]] (<tt><nowiki>{{Шаблон}}</nowiki></tt>), они могут быть не во всех wiki-системах — они сознательно не сделаны реплицируемыми чтобы не повредить возможные индивидуальные настройки для конкретных заказчиков. Но при отсутствии — их надо брать из основной wiki.
Line 52: Line 52:
 
{{Word/SectionBreak}}
 
{{Word/SectionBreak}}
 
</nowiki></pre>
 
</nowiki></pre>
 +
 +
== Нумерация картинок ==
 +
 +
Если экспорт в Word нужен для публикуемого документа, то часть необходима нумерация картинок. Для этого после каждого рисунка надо ставить вызов шаблона <code>Word/ImgNum</code>, который породит стандартную центрированную надпись
 +
 +
{{Word/ImgNum}}
 +
 +
При публикации из нее будет сделан номер рисунка. Первым параметром в макрос передается подпись к рисунку, если она не пуста - после номера ставится точка.
  
 
== Картинка с большим разрешением ==
 
== Картинка с большим разрешением ==
Line 68: Line 76:
 
Если картинка имеет такие размеры, что нормально помещается при печати в указанную ширину, то увеличиваться она не будет.
 
Если картинка имеет такие размеры, что нормально помещается при печати в указанную ширину, то увеличиваться она не будет.
  
== Вставка картинок из svn ==
+
Для картинок, нарисованных в Graphwiz (таг <code>graph</code>) надо задавать размер size="6.5,10" в случае стандартных полей 3 и 1.5 см.
 
+
В проекте можно использовать картинки из svn. Плюс — их не надо загружать. Минус — при вставке надо задавать размеры явною.
+
 
+
Для этого следует сделать пару шаблонов, примерно таких (если репозитарий расположен в <nowiki>https://svn.office.custis.ru/svnproject</nowiki>).
+
 
+
'''Шаблон:SvnProjectImagePath'''
+
<pre><nowiki>
+
https://svn.office.custis.ru/svnproject
+
</nowiki></pre>
+
 
+
'''Шаблон:SvnProjectImage'''
+
<pre><nowiki>
+
<div><html><img src="https://svn.office.custis.ru/svnproject/</html>{{{1}}}" {{#if:{{DOCEXPORT}} | {{#if:{{{4|}}}
+
| width="{{#expr: ceil( {{{6|16.5}}} / 2.54 * 96 ) }}" {{#if:{{{5|}}}
+
| height="{{#expr: ceil( {{{6|16.5}}} / 2.54 * 96 / {{{4}}} * {{{5}}} )}}"}} |}}}}<html> style="</html>{{{3|}}}<html>"></html></div>
+
{{#if:{{DOCEXPORT}}||{{#if:{{{2|}}}|<div style="float:right; font-size:small; border: dashed 1px darkGrey">{{{2|}}}</div>}}}}
+
</nowiki></pre>
+
 
+
Аргументы:
+
# файл с картинкой
+
# ссылка на оригинал, если есть
+
# стиль, используется в html, а word2010 его игнорирует
+
# ширина исходного изображения в пикселях
+
# высота исходного изображения в пикселях
+
# требуемая ширина в сантиметрах
+
 
+
И далее вставлять их примерно так
+
 
+
<pre><nowiki>
+
{{SvnProjectImage|AccountStandard-Legend.png|Оригинал [{{SvnProjectImagePath}} svn] AccountStandard.vsd||720|342}}
+
</nowiki></pre>
+
 
+
или, на альбомной странице
+
 
+
<pre><nowiki>
+
{{Word/LandscapePageBegin}}
+
{{SvnProjectImage|AccountStandard-Balance.png|Оригинал [{{SvnProjectImagePath}} svn] AccountStandard.vsd||1050|719|25}}
+
{{Word/LandscapePageEnd}}
+
</nowiki></pre>
+
  
 
== Колонтитулы ==
 
== Колонтитулы ==
Line 155: Line 124:
 
Если в статье требуется написать части, видимые только при её просмотре в Wiki, или наоборот — видимые только при экспорте, можно использовать [[Справка:Магические_слова|волшебное слово]] <tt><nowiki>{{DOCEXPORT}}</nowiki></tt>, принимающее значение «1» при экспорте и "" (пустую строку) при просмотре, и [[rupedia:Википедия:Функции_парсера_(расширение)|функцию парсера]] <tt><nowiki>{{#if: {{DOCEXPORT}} | Текст для экспорта | Текст для просмотра }}</nowiki></tt>.
 
Если в статье требуется написать части, видимые только при её просмотре в Wiki, или наоборот — видимые только при экспорте, можно использовать [[Справка:Магические_слова|волшебное слово]] <tt><nowiki>{{DOCEXPORT}}</nowiki></tt>, принимающее значение «1» при экспорте и "" (пустую строку) при просмотре, и [[rupedia:Википедия:Функции_парсера_(расширение)|функцию парсера]] <tt><nowiki>{{#if: {{DOCEXPORT}} | Текст для экспорта | Текст для просмотра }}</nowiki></tt>.
  
== Расширение MediaWiki ==
+
== Известные проблемы ==
  
Описанные выше манипуляции работают именно в наших сборках MediaWiki ([[4intranet:MediaWiki4Intranet|MediaWiki4Intranet]]), на википедии не прокатят :) За них отвечает расширение [[4intranet:DocExport|DocExport]], плюс патч в код <tt>action=raw</tt>, позволяющий возвращать любой Content-Type, плюс шаблоны:
+
* Если в статье встречаются картинки с длинными названиями (больше 255 символов в URL-кодировке) — после пересохранения документа в <tt>*.doc</tt> Word их портит (часть после 255-го символа отрезается). Решение проблемы — сохранять такие документы в <tt>*.docx</tt>, либо разрывать связи, таким образом вставляя картинки в сам документ.
  
<subpagelist>
+
== Расширение MediaWiki ==
namespace=Template
+
parent=Word
+
</subpagelist>
+
 
+
Если хочется поставить это расширение в свою Wiki, его исходники можно взять:
+
* [[4intranet:MediaWiki4Intranet#Установка|Вместе со сборкой MediaWiki4Intranet]].
+
* Скачать из Subversion: {{Cmd|svn co http://wiki.4intra.net/svn/mediawiki4intranet/extensions/DocExport/}}
+
 
+
Если хочется ещё и накатить патч для разрешения любого Content-Type - его можно скачать [http://wiki.4intra.net/svn/mediawiki4intranet/custisinstall/patches/Y-000-any-raw-ctype.diff тут (версия для MediaWiki 1.16)].
+
 
+
Ставится как обычно, прописыванием в LocalSettings.php строчки:
+
  
<code-php>
+
Всё описанное обеспечивается расширением [[4intranet:DocExport]].
require_once "$IP/extensions/DocExport/DocExport.php";
+
</code-php>
+
  
{{replicate-from-custiswiki-to-4intranet}}
+
<noinclude>[[Category:Справка]]</noinclude>
[[Category:Справка]]
+

Latest revision as of 15:52, 7 August 2020

Все статьи в наших MediaWiki можно экспортировать в текстовые процессоры, такие как MS Word или Open Office Writer. Это сделано для того, чтобы потом, добавив небольшую обработку напильником, получить из веб-статьи бумажный, нарезанный на отдельные страницы документ, без всяких вспомогательных навигационных ссылок.

Эта фунциональность вызывается ссылками в левой панели:

«→M$WORD»
Экспорт статьи в MS Word.
«→OOffice»
Экспорт статьи в OpenOffice. Кстати, если нужен PDF, то проще всего его получить именно из OpenOffice.

Технически, передается обработанный HTML, в котором

  • Все ссылки (включая ссылки на изображения) сделаны абсолютными
  • Убран всякий навигационный мусор (ну и куча эвристик по мелочи, чтобы осталось только важное для печати, и выглядело прилично)
  • Устанавливается Content-Type, такой, чтобы броузер вызвал Word или OpenOffice соответственно.
  • Местами вставляется специальные HTML-классы, которые понимает только Word (для реализации счетчиков, хитрого форматирования и т. п.).

Текстовый процессор, открыв этот HTML, по абсолютным ссылкам закачивает в документ картинки. Они остаются «связанными» с хранящимися на сервере, и если обновить картинки на сервере, а затем «обновить связи в документе» — то картинки обновятся.

Если документ надо высылать куда-то, где Wiki недоступна (например, заказчику) — то связи перед этим необходимо разорвать. Разрыв связей выполняется в MS Word 2003 через меню Связи, а в MS Word 2010 через ссылку справа внизу страницы Файл.

В Справке далее упоминаются шаблоны ({{Шаблон}}), они могут быть не во всех wiki-системах — они сознательно не сделаны реплицируемыми чтобы не повредить возможные индивидуальные настройки для конкретных заказчиков. Но при отсутствии — их надо брать из основной wiki.

Вставка разрыва страницы

{{Word/PageBreak}}

Имеется еще Word/SectionBreak, но он сбрасывает все настройки, в частности, после него имеем не A4, а Letter.

Оглавление, отражаемое в Word

Следующий код, будучи вставленным на вики-страницу, сгенерирует авто-обновляемое поле «Оглавление» для ворда.

{{Word/WordToc}}

Вставка Альбомной страницы

Иногда, например, когда встречается широкая картинка, надо дать понять текстовому процессору, что надо создать страницу с альбомной ориентацией. Это делается с помощью шаблонов:

{{Word/LandscapePageBegin}}
Тут собственно содержимое альбомной страницы.
{{Word/LandscapePageEnd}}

либо так:

{{Word/SectionBreak}}
<div class="SectionLandscape">
  Тут собственно содержимое альбомной страницы.
</div>
{{Word/SectionBreak}}

Нумерация картинок

Если экспорт в Word нужен для публикуемого документа, то часть необходима нумерация картинок. Для этого после каждого рисунка надо ставить вызов шаблона Word/ImgNum, который породит стандартную центрированную надпись

Рис. @@

При публикации из нее будет сделан номер рисунка. Первым параметром в макрос передается подпись к рисунку, если она не пуста - после номера ставится точка.

Картинка с большим разрешением

Большие картинки, вставляемые обычным образом, при экспорте в word не помещаются на страницу. Чтобы этого избежать, надо вставлять картинку Файл:ИмяКартинки.png шаблоном

{{Word/MaxImg|ИмяКартинки.png}}

При этом картинке устанавливается ширина, равная 16.5 см, чтобы масштабировал word при импорте, а в браузере будет то, что укажешь дополнительными параметрами после имени файла. Если картинка расположена на альбомной странице, или надо задать другую ширину, то это можно сделать параметром w:

{{Word/MaxImg|ИмяКартинки.png|w=25}}

Если картинка имеет такие размеры, что нормально помещается при печати в указанную ширину, то увеличиваться она не будет.

Для картинок, нарисованных в Graphwiz (таг graph) надо задавать размер size="6.5,10" в случае стандартных полей 3 и 1.5 см.

Колонтитулы

Вот чем хорош ворд, так тем, что своим псевдо-HTML’ем и псевдо-CSS’ом позволяет закодировать почти всё, если вы в нём разберётесь :)

При экспорте из вики по умолчанию подставляется один нижний колонтитул с номером страницы. Первая страница по умолчанию не нумеруется. Но можно задать и собственные колонтитулы, как глобально для всех страниц, так и для отдельной страницы. Для этого сначала нужно получить их HTML-представление.

Делается это так: создаём обычный Word-документ с требуемыми колонтитулами, в нём же нужно сразу задать отдельные колонтитулы для первой и для чётных/нечётных страниц, если таковые требуются. Колонтитулы привязываются к секциям документа, и очень желательно, чтобы Word-документ был маленький и в нём была одна секция, чтобы потом не запутаться в этом мусоре. Дальше нужно сохранить документ как HTML и немного пошаманить. Сохранится он в виде пары файла с именем вида page.htm и папки page.files, в которой будет файл header.htm. Вот он-то нам и нужен. Его нужно открыть блокнотом и скопировать содержимое на обычную страницу Wiki, желательно, с именем, оканчивающимся на «.htm». Кроме того, в скопированном тексте нужно заменить строчку

<meta http-equiv=Content-Type content="text/html; charset=windows-1251">

на строчку

<meta http-equiv=Content-Type content="text/html; charset=utf-8">

Необязательный шаг, можно проделать ради интереса: из скопированного текста можно убрать куски вида <div style='mso-element:footnote-separator' id=fs> ... </div>, у которых id отличается от «h1», «f1», «fh1», «ff1», «eh1», «ef1». Эти аббревиатуры не меняются от документа к документу и означают: «header/footer section 1», «first page header/footer section 1», «even page header/footer section 1». То бишь, именно <div>'ы с этими ID задают текст колонтитулов.

И последнее, что нужно проделать для вставки этих колонтитулов на свою страницу — поместить на неё магический текст:

{{#docexportcss:
@page SectionNumbered {
	mso-first-header:url("{{fullurl: <ИМЯ_СТРАНИЦЫ_С_КОЛОНТИТУЛАМИ.htm> |action=raw&ctype=text%2Fhtml%3B+charset%3Dutf-8}}") fh1;
	mso-first-footer:url("{{fullurl: <ИМЯ_СТРАНИЦЫ_С_КОЛОНТИТУЛАМИ.htm> |action=raw&ctype=text%2Fhtml%3B+charset%3Dutf-8}}") ff1;
	mso-header:url("{{fullurl: <ИМЯ_СТРАНИЦЫ_С_КОЛОНТИТУЛАМИ.htm> |action=raw&ctype=text%2Fhtml%3B+charset%3Dutf-8}}") h1;
	mso-footer:url("{{fullurl: <ИМЯ_СТРАНИЦЫ_С_КОЛОНТИТУЛАМИ.htm> |action=raw&ctype=text%2Fhtml%3B+charset%3Dutf-8}}") f1;
	mso-even-header:url("{{fullurl: <ИМЯ_СТРАНИЦЫ_С_КОЛОНТИТУЛАМИ.htm> |action=raw&ctype=text%2Fhtml%3B+charset%3Dutf-8}}") eh1;
	mso-even-footer:url("{{fullurl: <ИМЯ_СТРАНИЦЫ_С_КОЛОНТИТУЛАМИ.htm> |action=raw&ctype=text%2Fhtml%3B+charset%3Dutf-8}}") ef1;
}
@page SectionLandscape {
	mso-first-header:url("{{fullurl: <ИМЯ_СТРАНИЦЫ_С_КОЛОНТИТУЛАМИ.htm> |action=raw&ctype=text%2Fhtml%3B+charset%3Dutf-8}}") fh1;
	mso-first-footer:url("{{fullurl: <ИМЯ_СТРАНИЦЫ_С_КОЛОНТИТУЛАМИ.htm> |action=raw&ctype=text%2Fhtml%3B+charset%3Dutf-8}}") ff1;
	mso-header:url("{{fullurl: <ИМЯ_СТРАНИЦЫ_С_КОЛОНТИТУЛАМИ.htm> |action=raw&ctype=text%2Fhtml%3B+charset%3Dutf-8}}") h1;
	mso-footer:url("{{fullurl: <ИМЯ_СТРАНИЦЫ_С_КОЛОНТИТУЛАМИ.htm> |action=raw&ctype=text%2Fhtml%3B+charset%3Dutf-8}}") f1;
	mso-even-header:url("{{fullurl: <ИМЯ_СТРАНИЦЫ_С_КОЛОНТИТУЛАМИ.htm> |action=raw&ctype=text%2Fhtml%3B+charset%3Dutf-8}}") eh1;
	mso-even-footer:url("{{fullurl: <ИМЯ_СТРАНИЦЫ_С_КОЛОНТИТУЛАМИ.htm> |action=raw&ctype=text%2Fhtml%3B+charset%3Dutf-8}}") ef1;
}
}}

Глобальные стили экспорта

При большом желании и наличии прав вики-админа можно править глобальные стили экспорта в Word / OpenOffice.

Для этого можно менять страницы MediaWiki:Docexport-word.css и MediaWiki:Docexport-oo.css. Есть ещё MediaWiki:Docexport-word-orig.css и MediaWiki:Docexport-oo-orig.css, но их лучше не трогать и не убирать их включения из первых двух, ибо в этих случаях перестанут приходить обновления стандартных стилей для экспорта.

Магия для вывода текста только при экспорте

Если в статье требуется написать части, видимые только при её просмотре в Wiki, или наоборот — видимые только при экспорте, можно использовать волшебное слово {{DOCEXPORT}}, принимающее значение «1» при экспорте и "" (пустую строку) при просмотре, и функцию парсера {{#if: {{DOCEXPORT}} | Текст для экспорта | Текст для просмотра }}.

Известные проблемы

  • Если в статье встречаются картинки с длинными названиями (больше 255 символов в URL-кодировке) — после пересохранения документа в *.doc Word их портит (часть после 255-го символа отрезается). Решение проблемы — сохранять такие документы в *.docx, либо разрывать связи, таким образом вставляя картинки в сам документ.

Расширение MediaWiki

Всё описанное обеспечивается расширением 4intranet:DocExport.