<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Copyright 2006 The Apache Software Foundation Licensed under the Apache 
	License, Version 2.0 (the "License"); you may not use this file except in 
	compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 
	Unless required by applicable law or agreed to in writing, software distributed 
	under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 
	OR CONDITIONS OF ANY KIND, either express or implied. See the License for 
	the specific language governing permissions and limitations under the License. -->
<document>

	<properties>
		<title>OpenOffice converter for OpenMeetings</title>
		<author email="sebawagner@apache.org">
			OpenMeetings Team
		</author>
	</properties>

	<body>

		<section name="OpenOffice Service for OpenMeetings">

			<p>
				To import .doc, .docx, .odp, .xls, .xlsx, .ppt, .pptx, ... [ all
				files that you can open with OpenOffice ]
				to OpenMeetings and use
				them in the whiteboard you need OpenOffice or LibreOffice
				installed
				the machine that runs OpenMeetings.
			</p>
			<p>
				<i>Since Version 2.0 of OpenMeetings starting of
					OpenOffice/LibreOffice as service in not required, JODConverter
					will automatically start and shut down the service!
				</i>
			</p>
			<p>
				Installation of JODConverter means: You donwload the ZIP binary from
				their
				<a href="http://code.google.com/p/jodconverter/" target="_BLANK"
					ref="nofollow">website</a>
				and then configure in Apache OpenMeetings Administration >
				Configuration (or during installation) the config key
				<tt>jod.path</tt>
				to point to the "lib" directory of the unpacked JODConverter binary.
				There is no restart of OpenMeetings required.
			</p>
			<p>You should use an OpenOffice version greater 3</p>

		</section>


	</body>

</document>