123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-
- /* $Id$ */
-
- package org.apache.fop.render.rtf.rtflib.rtfdoc;
-
- /*
- * This file is part of the RTF library of the FOP project, which was originally
- * created by Bertrand Delacretaz bdelacretaz@codeconsult.ch and by other
- * contributors to the jfor project (www.jfor.org), who agreed to donate jfor to
- * the FOP project.
- */
-
- import java.io.IOException;
- import java.io.Writer;
- import java.util.HashMap;
- import java.util.Map;
-
- /**
- * <p>RTF file header, contains style, font and other document-level information.</p>
- *
- * <p>This work was authored by Bertrand Delacretaz (bdelacretaz@codeconsult.ch),
- * Andreas Putz (a.putz@skynamics.com), and
- * Marc Wilhelm Kuester.</p>
- */
-
- class RtfHeader extends RtfContainer {
- private static final String CHARSET = "ansi";
- private final Map userProperties = new HashMap();
-
- /** Create an RTF header */
- RtfHeader(RtfFile f, Writer w) throws IOException {
- super(f, w);
- new RtfFontTable(this, w);
- new RtfGenerator(this, w);
- // m_userProperties.put("jforVersion",JForVersionInfo.getLongVersionInfo());
- }
-
- /** Overridden to write our own data before our children's data */
- protected void writeRtfContent() throws IOException {
- writeControlWord(CHARSET);
- writeUserProperties();
- RtfColorTable.getInstance().writeColors(this);
- super.writeRtfContent();
- RtfTemplate.getInstance().writeTemplate(this);
- RtfStyleSheetTable.getInstance().writeStyleSheet(this);
- writeFootnoteProperties();
-
- }
-
- /** write user properties if any */
- private void writeUserProperties() throws IOException {
- if (userProperties.size() > 0) {
- writeGroupMark(true);
- writeStarControlWord("userprops");
- for (Object o : userProperties.entrySet()) {
- final Map.Entry entry = (Map.Entry) o;
- writeGroupMark(true);
- writeControlWord("propname");
- RtfStringConverter.getInstance().writeRtfString(writer,
- entry.getKey().toString());
- writeGroupMark(false);
- writeControlWord("proptype30");
- writeGroupMark(true);
- writeControlWord("staticval");
- RtfStringConverter.getInstance().writeRtfString(writer,
- entry.getValue().toString());
- writeGroupMark(false);
- }
- writeGroupMark(false);
- }
- }
-
- /** write directly to our Writer
- * TODO should check that this done at the right point, or even better, store
- * what is written here to render it in writeRtfContent. <-- it is for the color table
- */
- void write(String toWrite) throws IOException {
- writer.write(toWrite);
- }
-
- /** write to our Writer using an RtfStringConverter */
- void writeRtfString(String toWrite) throws IOException {
- RtfStringConverter.getInstance().writeRtfString(writer, toWrite);
- }
-
- /**
- *write properties for footnote handling
- */
- private void writeFootnoteProperties() throws IOException {
- newLine();
- writeControlWord("fet0"); //footnotes, not endnotes
- writeControlWord("ftnbj"); //place footnotes at the end of the
- //page (should be the default, but
- //Word 2000 thinks otherwise)
- }
- }
|