com.lowagie.text.rtf.parser.destinations.RtfDestinationStylesheetTable Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of itext2 Show documentation
Show all versions of itext2 Show documentation
Itext is a java library to create and manipulate PDFs.
This is a fork of version 2.1.7 the last MPL/LGPL version.
It's focused basically on mantain compatibility with newer bouncycastle releases and small bugfixes.
/*
* $Id: RtfDestinationStylesheetTable.java 3580 2008-08-06 15:52:00Z howard_s $
*
* Copyright 2007 by Howard Shank ([email protected])
*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the License.
*
* The Original Code is 'iText, a free JAVA-PDF library'.
*
* The Initial Developer of the Original Code is Bruno Lowagie. Portions created by
* the Initial Developer are Copyright (C) 1999-2006 by Bruno Lowagie.
* All Rights Reserved.
* Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer
* are Copyright (C) 2000-2006 by Paulo Soares. All Rights Reserved.
*
* Contributor(s): all the names of the contributors are added in the source code
* where applicable.
*
* Alternatively, the contents of this file may be used under the terms of the
* LGPL license (the ?GNU LIBRARY GENERAL PUBLIC LICENSE?), in which case the
* provisions of LGPL are applicable instead of those above. If you wish to
* allow use of your version of this file only under the terms of the LGPL
* License and not to allow others to use your version of this file under
* the MPL, indicate your decision by deleting the provisions above and
* replace them with the notice and other provisions required by the LGPL.
* If you do not delete the provisions above, a recipient may use your version
* of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE.
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the MPL as stated above or under the terms of the GNU
* Library General Public License as published by the Free Software Foundation;
* either version 2 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more
* details.
*
* If you didn't download this code from the following link, you should check if
* you aren't using an obsolete version:
* http://www.lowagie.com/iText/
*/
package com.lowagie.text.rtf.parser.destinations;
import com.lowagie.text.Element;
import com.lowagie.text.rtf.parser.RtfImportMgr;
import com.lowagie.text.rtf.parser.RtfParser;
import com.lowagie.text.rtf.parser.ctrlwords.RtfCtrlWordData;
import com.lowagie.text.rtf.parser.ctrlwords.RtfCtrlWordType;
import com.lowagie.text.rtf.style.RtfParagraphStyle;
import com.lowagie.text.rtf.style.RtfStyleTypes;
/**
* RtfDestinationStylesheetTable
handles data destined for the
* Stylesheet Table destination
*
* @author Howard Shank ([email protected])
* @since 2.1.0
*/
public class RtfDestinationStylesheetTable extends RtfDestination {
@SuppressWarnings("unused")
private String styleName = "";
/**
* RtfParagraphStyle
object for setting styleshee values
* as they are parsed from the input.
*/
@SuppressWarnings("unused")
private RtfParagraphStyle rtfParagraphStyle = null;
@SuppressWarnings("unused")
private String elementName = "";
/**
* RTF Style number from stylesheet table.
*/
private int styleNr = 0;
/**
* What kind of style is this, Paragraph or Character or Table
*/
private int styleType = RtfStyleTypes.PARAGRAPH;
// Alignment
/**
* Alignment - page 85
* \qc, \qj, \ql, \qr, \qd, \qkN, \qt
*/
private int alignment = Element.ALIGN_LEFT;
/**
* Percentage of line occupied by Kashida justification (0 low, 10 medium, 20 high).
* \qkN
*/
private int justificationPercentage = 0;
// Indentation
/**
* First line indentation.
*/
private int firstLineIndent = 0;
/**
* Left indentation
*/
private int leftIndent = 0;
/**
* Right indentation
*/
private int rightIndent = 0;
/**
* Automatically adjust right indentation when docunent grid is defined
*/
private int adustRightIndent = 0;
/**
* Mirror indents?
*/
private int mirrorIndent = 0;
// Document Foratting Properties
/**
* Override orphan/widow control.
*/
private int overrideWidowControl = -1;
// Asian Typography
/**
* auto spacing betwee DBC and English
*/
private int AutoSpaceBetweenDBCEnglish = 0;
/**
* auto spacing betwee DBC and numbers
*/
private int AutoSpaceBetweenDBCNumbers = 0;
/**
* No Character wrapping
*/
private int noCharacterWrapping = 0;
/**
* No Word wrapping
*/
private int noWordWrapping = 0;
/**
* No overflow period and comma
*/
private int noOverflowPeriodComma = 0;
//////////////////////////////////////////////////////
/**
* The RtfImportHeader to add color mappings to.
*/
@SuppressWarnings("unused")
private RtfImportMgr importHeader = null;
@SuppressWarnings("unused")
private String type = "";
public RtfDestinationStylesheetTable() {
super(null);
}
public RtfDestinationStylesheetTable(RtfParser parser, String type) {
super(parser);
this.importHeader = parser.getImportManager();
this.type = type;
}
public void setParser(RtfParser parser) {
this.rtfParser = parser;
this.importHeader = parser.getImportManager();
}
public void setType(String value) {
this.type = value;
}
public void setElementName(String value) {
this.elementName = value;
}
/* (non-Javadoc)
* @see com.lowagie.text.rtf.parser.destinations.RtfDestination#handleOpenNewGroup()
*/
public boolean handleOpeningSubGroup() {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see com.lowagie.text.rtf.direct.RtfDestination#closeDestination()
*/
public boolean closeDestination() {
return true;
}
public boolean handleControlWord(RtfCtrlWordData ctrlWordData) {
boolean result = true;
this.onCtrlWord(ctrlWordData); // event handler
if(this.rtfParser.isImport()) {
// information
// start of a stylesheet element
if(ctrlWordData.ctrlWord.equals("s")) { }
if(ctrlWordData.ctrlWord.equals("cs")) {}
if(ctrlWordData.ctrlWord.equals("ds")) {}
if(ctrlWordData.ctrlWord.equals("ts")) {}
if(ctrlWordData.ctrlWord.equals("tsrowd")) {}
if(ctrlWordData.ctrlWord.equals("keycode")) {}
if(ctrlWordData.ctrlWord.equals("shift")) { }
if(ctrlWordData.ctrlWord.equals("ctrl")) { }
if(ctrlWordData.ctrlWord.equals("alt")) { }
//cells
if(ctrlWordData.ctrlWord.equals("fn")) { }
if(ctrlWordData.ctrlWord.equals("additive")) { }
if(ctrlWordData.ctrlWord.equals("sbasedon")) { }
if(ctrlWordData.ctrlWord.equals("snext")) { }
if(ctrlWordData.ctrlWord.equals("sautoupd")) { }
if(ctrlWordData.ctrlWord.equals("shidden")) { }
if(ctrlWordData.ctrlWord.equals("slink")) { }
if(ctrlWordData.ctrlWord.equals("slocked")) { }
if(ctrlWordData.ctrlWord.equals("spersonal")) { }
if(ctrlWordData.ctrlWord.equals("scompose")) { }
if(ctrlWordData.ctrlWord.equals("sreply")) { }
/* FORMATTING */
// brdrdef/parfmt/apoctl/tabdef/shading/chrfmt
if(ctrlWordData.ctrlWord.equals("styrsid")) { }
if(ctrlWordData.ctrlWord.equals("ssemihidden")) { }
if(ctrlWordData.ctrlWord.equals("sqformat")) { }
if(ctrlWordData.ctrlWord.equals("spriority")) { }
if(ctrlWordData.ctrlWord.equals("sunhideused")) { }
/* TABLE STYLES */
if(ctrlWordData.ctrlWord.equals("tscellwidth")) { }
if(ctrlWordData.ctrlWord.equals("tscellwidthfts")) { }
if(ctrlWordData.ctrlWord.equals("tscellpaddt")) { }
if(ctrlWordData.ctrlWord.equals("tscellpaddl")) { }
if(ctrlWordData.ctrlWord.equals("tscellpaddr")) { }
if(ctrlWordData.ctrlWord.equals("tscellpaddb")) { }
if(ctrlWordData.ctrlWord.equals("tscellpaddft"))/*0-auto, 3-twips*/ { }
if(ctrlWordData.ctrlWord.equals("tscellpaddfl"))/*0-auto, 3-twips*/ { }
if(ctrlWordData.ctrlWord.equals("tscellpaddfr"))/*0-auto, 3-twips*/ { }
if(ctrlWordData.ctrlWord.equals("tscellpaddfb"))/*0-auto, 3-twips*/ { }
if(ctrlWordData.ctrlWord.equals("tsvertalt")) { }
if(ctrlWordData.ctrlWord.equals("tsvertalc")) { }
if(ctrlWordData.ctrlWord.equals("tsvertalb")) { }
if(ctrlWordData.ctrlWord.equals("tsnowrap")) { }
if(ctrlWordData.ctrlWord.equals("tscellcfpat")) { }
if(ctrlWordData.ctrlWord.equals("tscellcbpat")) { }
if(ctrlWordData.ctrlWord.equals("tsbgbdiag")) { }
if(ctrlWordData.ctrlWord.equals("tsbgfdiag")) { }
if(ctrlWordData.ctrlWord.equals("tsbgcross")) { }
if(ctrlWordData.ctrlWord.equals("tsbgdcross")) { }
if(ctrlWordData.ctrlWord.equals("tsbgdkcross ")) { }
if(ctrlWordData.ctrlWord.equals("tsbgdkdcross")) { }
if(ctrlWordData.ctrlWord.equals("tsbghoriz")) { }
if(ctrlWordData.ctrlWord.equals("tsbgvert")) { }
if(ctrlWordData.ctrlWord.equals("tsbgdkhor")) { }
if(ctrlWordData.ctrlWord.equals("tsbgdkvert")) { }
if(ctrlWordData.ctrlWord.equals("tsbrdrt")) { }
if(ctrlWordData.ctrlWord.equals("tsbrdrb")) { }
if(ctrlWordData.ctrlWord.equals("tsbrdrl")) { }
if(ctrlWordData.ctrlWord.equals("tsbrdrr")) { }
if(ctrlWordData.ctrlWord.equals("tsbrdrh")) { }
if(ctrlWordData.ctrlWord.equals("tsbrdrv")) { }
if(ctrlWordData.ctrlWord.equals("tsbrdrdgl")) { }
if(ctrlWordData.ctrlWord.equals("tsbrdrdgr")) { }
if(ctrlWordData.ctrlWord.equals("tscbandsh")) { }
if(ctrlWordData.ctrlWord.equals("tscbandsv")) { }
}
if(ctrlWordData.ctrlWordType == RtfCtrlWordType.FLAG ||
ctrlWordData.ctrlWordType == RtfCtrlWordType.TOGGLE ||
ctrlWordData.ctrlWordType == RtfCtrlWordType.VALUE) {
this.rtfParser.getState().properties.setProperty(ctrlWordData);
}
switch(this.rtfParser.getConversionType()) {
case RtfParser.TYPE_IMPORT_FULL:
result = true;
break;
case RtfParser.TYPE_IMPORT_FRAGMENT:
result = true;
break;
case RtfParser.TYPE_CONVERT:
result = true;
break;
default: // error because is should be an import or convert
result = false;
break;
}
return result;
}
/* (non-Javadoc)
* @see com.lowagie.text.rtf.direct.RtfDestination#handleGroupEnd()
*/
public boolean handleCloseGroup() {
return true;
}
/* (non-Javadoc)
* @see com.lowagie.text.rtf.direct.RtfDestination#handleGroupStart()
*/
public boolean handleOpenGroup() {
return true;
}
/* (non-Javadoc)
* @see com.lowagie.text.rtf.direct.RtfDestination#handleCharacter(int)
*/
public boolean handleCharacter(int ch) {
styleName += (char)ch;
return true;
}
public void createNewStyle() {
//public RtfParagraphStyle(String styleName, String fontName, int fontSize, int fontStyle, Color fontColor)
//this.rtfParagraphStyle = new RtfParagraphStyle();
}
/**
* Set the justification percentage from parsed value.
* @param percent The justification percentage
* @return The justification percentage
*/
public int setJustificationPercentage(int percent) {
this.justificationPercentage = percent;
return this.justificationPercentage;
}
/**
* Get the justification percentage.
* @return The justification percentage value.
*/
public int getJustificationPercentage() {
return this.justificationPercentage;
}
/**
* Set the alignment value from the parsed value.
* @param alignment The alignment value.
* @return The alignment value.
*/
public int setAlignment(int alignment) {
this.alignment = alignment;
return this.alignment;
}
/**
* Get the alignment value.
* @return The alignment value.
*/
public int getAlignment() {
return this.alignment;
}
/**
* Get the first line indent value.
*
* @return the firstLineIndent
*/
public int getFirstLineIndent() {
return firstLineIndent;
}
/**
* Set the first line indent value.
* @param firstLineIndent the firstLineIndent to set
*/
public void setFirstLineIndent(int firstLineIndent) {
this.firstLineIndent = firstLineIndent;
}
/**
* Get the left indent value
* @return the left indent
*/
public int getIndent() {
return leftIndent;
}
/**
* Set the left indent value from the value parsed.
* @param indent the left indent value.
*/
public void setIndent(int indent) {
this.leftIndent = indent;
}
/**
* Get the right indent adjustment value
* @return the adustRightIndent value
*/
public int getAdustRightIndent() {
return adustRightIndent;
}
/**
* Set the right indent adjustment value
* @param adustRightIndent the adustRightIndent to set
*/
public void setAdustRightIndent(int adustRightIndent) {
this.adustRightIndent = adustRightIndent;
}
/**
* Get the left indent value
* @return the leftIndent
*/
public int getLeftIndent() {
return leftIndent;
}
/**
* Set the left indent value
* @param leftIndent the leftIndent to set
*/
public void setLeftIndent(int leftIndent) {
this.leftIndent = leftIndent;
}
/**
* Get the value indicating if document has mirrored indents.
*
* @return the mirrorIndent
*/
public int getMirrorIndent() {
return mirrorIndent;
}
/**
* Set the mirrored indent value from the parsed value.
*
* @param mirrorIndent the mirrorIndent to set
*/
public void setMirrorIndent(int mirrorIndent) {
this.mirrorIndent = mirrorIndent;
}
/**
* Get the right indent value.
*
* @return the rightIndent
*/
public int getRightIndent() {
return rightIndent;
}
/**
* Set the right indent value.
*
* @param rightIndent the rightIndent to set
*/
public void setRightIndent(int rightIndent) {
this.rightIndent = rightIndent;
}
/**
* Get the ovirride widow control value.
*
* @return the overrideWidowControl
*/
public int getOverrideWidowControl() {
return overrideWidowControl;
}
/**
* Set the override widow control.
*
* @param overrideWidowControl the overrideWidowControl to set
*/
public void setOverrideWidowControl(int overrideWidowControl) {
this.overrideWidowControl = overrideWidowControl;
}
/**
* Get the auto space between DBC and English indicator.
*
* @return the autoSpaceBetweenDBCEnglish
*/
public int getAutoSpaceBetweenDBCEnglish() {
return AutoSpaceBetweenDBCEnglish;
}
/**
* Set the auto space between DBC and English indicator.
*
* @param autoSpaceBetweenDBCEnglish the autoSpaceBetweenDBCEnglish to set
*/
public void setAutoSpaceBetweenDBCEnglish(int autoSpaceBetweenDBCEnglish) {
AutoSpaceBetweenDBCEnglish = autoSpaceBetweenDBCEnglish;
}
/**
* Get the auto space between DBC and Numbers indicator.
* @return the autoSpaceBetweenDBCNumbers
*/
public int getAutoSpaceBetweenDBCNumbers() {
return AutoSpaceBetweenDBCNumbers;
}
/**
* Set the auto space between DBC and Numbers indicator.
* @param autoSpaceBetweenDBCNumbers the autoSpaceBetweenDBCNumbers to set
*/
public void setAutoSpaceBetweenDBCNumbers(int autoSpaceBetweenDBCNumbers) {
AutoSpaceBetweenDBCNumbers = autoSpaceBetweenDBCNumbers;
}
/**
* Get no character wrapping indicator.
*
* @return the noCharacterWrapping
*/
public int getNoCharacterWrapping() {
return noCharacterWrapping;
}
/**
* Set the no character wrapping indicator from parsed value
*
* @param noCharacterWrapping the noCharacterWrapping to set
*/
public void setNoCharacterWrapping(int noCharacterWrapping) {
this.noCharacterWrapping = noCharacterWrapping;
}
/**
* Get the no overflow period comma indicator.
*
* @return the noOverflowPeriodComma
*/
public int getNoOverflowPeriodComma() {
return noOverflowPeriodComma;
}
/**
* Set the no overflow period comma indicator from the parsed value.
*
* @param noOverflowPeriodComma the noOverflowPeriodComma to set
*/
public void setNoOverflowPeriodComma(int noOverflowPeriodComma) {
this.noOverflowPeriodComma = noOverflowPeriodComma;
}
/**
* Get the no word wrapping indicator.
*
* @return the noWordWrapping
*/
public int getNoWordWrapping() {
return noWordWrapping;
}
/**
* Set the no word wrapping indicator from the parsed value.
*
* @param noWordWrapping the noWordWrapping to set
*/
public void setNoWordWrapping(int noWordWrapping) {
this.noWordWrapping = noWordWrapping;
}
/**
* Get this style number.
*
* @return the styleNr
*/
public int getStyleNr() {
return styleNr;
}
/**
* Set this style number from the parsed value.
*
* @param styleNr the styleNr to set
*/
public void setStyleNr(int styleNr) {
this.styleNr = styleNr;
}
/**
* Get this style type.
* For example Style, Character Style, etc.
*
* @return the styleType
*/
public int getStyleType() {
return styleType;
}
/**
* Set the style type.
*
* @param styleType the styleType to set
*/
public void setStyleType(int styleType) {
this.styleType = styleType;
}
/* (non-Javadoc)
* @see com.lowagie.text.rtf.parser.destinations.RtfDestination#setToDefaults()
*/
public void setToDefaults() {
styleName = "";
styleNr = 0;
alignment = Element.ALIGN_LEFT;
justificationPercentage = 0;
firstLineIndent = 0;
leftIndent = 0;
rightIndent = 0;
adustRightIndent = 0;
mirrorIndent = 0;
overrideWidowControl = -1;
AutoSpaceBetweenDBCEnglish = 0;
AutoSpaceBetweenDBCNumbers = 0;
noCharacterWrapping = 0;
noWordWrapping = 0;
noOverflowPeriodComma = 0;
}
}