All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.fop.render.rtf.rtflib.rtfdoc.RtfHeader Maven / Gradle / Ivy

There is a newer version: 1.2.2.1-jre17
Show newest version
/*
 * 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: RtfHeader.java 1805173 2017-08-16 10:50:04Z ssteiner $ */

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 [email protected] 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;

/**
 * 

RTF file header, contains style, font and other document-level information.

* *

This work was authored by Bertrand Delacretaz ([email protected]), * Andreas Putz ([email protected]), and * Marc Wilhelm Kuester.

*/ 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) } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy