com.lowagie.text

## Class DocWriter

- java.lang.Object
- - com.lowagie.text.DocWriter

All Implemented Interfaces:
  DocListener, ElementListener, java.util.EventListener

Direct Known Subclasses:
  HtmlWriter, PdfWriter, RtfWriter2

    public abstract class DocWriter
    extends java.lang.Object
    implements DocListener

An abstract `Writer` class for documents.

`DocWriter` is the abstract class of several writers such as `PdfWriter` and `HtmlWriter`. A `DocWriter` can be added as a `DocListener` to a certain `Document` by getting an instance (see method `getInstance()` in the specific writer-classes). Every `Element` added to the original `Document` will be written to the `OutputStream` of the listening `DocWriter`.

See Also:
  `Document`, `DocListener`

### Field Summary

Fields
`protected boolean` `closeStream` Closes the stream on document close
`protected Document` `document` This is the document that has to be written.
`static byte` `EQUALS` This is some byte that is often used.
`static byte` `FORWARD` This is some byte that is often used.
`static byte` `GT` This is some byte that is often used.
`static byte` `LT` This is some byte that is often used.
`static byte` `NEWLINE` This is some byte that is often used.
`protected boolean` `open` Is the writer open for writing?
`protected OutputStreamCounter` `os` The outputstream of this writer.
`protected Rectangle` `pageSize` The pageSize.
`protected boolean` `pause` Do we have to pause all writing actions?
`static byte` `QUOTE` This is some byte that is often used.
`static byte` `SPACE` This is some byte that is often used.
`static byte` `TAB` This is some byte that is often used.

### Constructor Summary

Constructors
`protected` `DocWriter()`
`protected` `DocWriter(Document document, java.io.OutputStream os)` Constructs a `DocWriter`.

### Method Summary

Methods
`boolean` `add(Element element)` Signals that an `Element` was added to the `Document`.
`protected void` `addTabs(int indent)` Writes a number of tabs.
`void` `close()` Signals that the `Document` was closed and that no other `Elements` will be added.
`void` `flush()` Flushes the `BufferedOutputStream`.
`static byte[]` `getISOBytes(java.lang.String text)` Converts a `String` into a `Byte` array according to the ISO-8859-1 codepage.
`boolean` `isCloseStream()` Checks if the stream is to be closed on document close
`boolean` `isPaused()` Checks if writing is paused.
`boolean` `newPage()` Signals that an new page has to be started.
`void` `open()` Signals that the `Document` was opened.
`void` `pause()` Let the writer know that all writing has to be paused.
`void` `resetFooter()` Resets the footer of this document.
`void` `resetHeader()` Resets the header of this document.
`void` `resetPageCount()` Sets the page number to 0.
`void` `resume()` Let the writer know that writing may be resumed.
`void` `setCloseStream(boolean closeStream)` Sets the close state of the stream after document close
`void` `setFooter(HeaderFooter footer)` Changes the footer of this document.
`void` `setHeader(HeaderFooter header)` Changes the header of this document.
`boolean` `setMarginMirroring(boolean MarginMirroring)` Parameter that allows you to do left/right margin mirroring (odd/even pages)
`boolean` `setMarginMirroringTopBottom(boolean MarginMirroring)` Parameter that allows you to do top/bottom margin mirroring (odd/even pages)
`boolean` `setMargins(float marginLeft, float marginRight, float marginTop, float marginBottom)` Sets the margins.
`void` `setPageCount(int pageN)` Sets the page number.
`boolean` `setPageSize(Rectangle pageSize)` Sets the pagesize.
`protected void` `write(java.lang.String string)` Writes a `String` to the `OutputStream`.
`protected void` `write(java.lang.String key, java.lang.String value)` Writes a key-value pair to the outputstream.
`protected void` `writeEnd()` Writes an endtag to the outputstream.
`protected void` `writeEnd(java.lang.String tag)` Writes an endtag to the outputstream.
`protected boolean` `writeMarkupAttributes(java.util.Properties markup)` Writes the markup attributes of the specified `MarkupAttributes` object to the `OutputStream`.
`protected void` `writeStart(java.lang.String tag)` Writes a starttag to the outputstream.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### NEWLINE

    public static final byte NEWLINE

This is some byte that is often used.

See Also:
  Constant Field Values

#### TAB

    public static final byte TAB

This is some byte that is often used.

See Also:
  Constant Field Values

#### LT

    public static final byte LT

This is some byte that is often used.

See Also:
  Constant Field Values

#### SPACE

    public static final byte SPACE

This is some byte that is often used.

See Also:
  Constant Field Values

#### EQUALS

    public static final byte EQUALS

This is some byte that is often used.

See Also:
  Constant Field Values

#### QUOTE

    public static final byte QUOTE

This is some byte that is often used.

See Also:
  Constant Field Values

#### GT

    public static final byte GT

This is some byte that is often used.

See Also:
  Constant Field Values

#### FORWARD

    public static final byte FORWARD

This is some byte that is often used.

See Also:
  Constant Field Values

#### pageSize

    protected Rectangle pageSize

The pageSize.

#### document

    protected Document document

This is the document that has to be written.

#### os

    protected OutputStreamCounter os

The outputstream of this writer.

#### open

    protected boolean open

Is the writer open for writing?

#### pause

    protected boolean pause

Do we have to pause all writing actions?

#### closeStream

    protected boolean closeStream

Closes the stream on document close

### Constructor Detail

#### DocWriter

    protected DocWriter()

#### DocWriter

    protected DocWriter(Document document,
             java.io.OutputStream os)

Constructs a `DocWriter`.

Parameters:
  `document` - The `Document` that has to be written
  `os` - The `OutputStream` the writer has to write to.

### Method Detail

#### add

    public boolean add(Element element)
                throws DocumentException

Signals that an `Element` was added to the `Document`.

This method should be overridden in the specific `DocWriter`classes derived from this abstract class.``

Specified by:
  `add` in interface `ElementListener`
Parameters:
  `element` - A high level object to add
Returns:
  `false`
Throws:
  `DocumentException` - when a document isn't open yet, or has been closed

#### open

    public void open()

Signals that the `Document` was opened.

Specified by:
  `open` in interface `DocListener`

#### setPageSize

    public boolean setPageSize(Rectangle pageSize)

Sets the pagesize.

Specified by:
  `setPageSize` in interface `DocListener`
Parameters:
  `pageSize` - the new pagesize
Returns:
  a `boolean`

#### setMargins

    public boolean setMargins(float marginLeft,
                     float marginRight,
                     float marginTop,
                     float marginBottom)

Sets the margins.

This does nothing. Has to be overridden if needed.

Specified by:
  `setMargins` in interface `DocListener`
Parameters:
  `marginLeft` - the margin on the left
  `marginRight` - the margin on the right
  `marginTop` - the margin on the top
  `marginBottom` - the margin on the bottom
Returns:
  `false`

#### newPage

    public boolean newPage()

Signals that an new page has to be started.

This does nothing. Has to be overridden if needed.

Specified by:
  `newPage` in interface `DocListener`
Returns:
  `true` if the page was added, `false` if not.

#### setHeader

    public void setHeader(HeaderFooter header)

Changes the header of this document.

This method should be overridden in the specific `DocWriter`classes derived from this abstract class if they actually support the use of headers.``

Specified by:
  `setHeader` in interface `DocListener`
Parameters:
  `header` - the new header

#### resetHeader

    public void resetHeader()

Resets the header of this document.

This method should be overridden in the specific `DocWriter`classes derived from this abstract class if they actually support the use of headers.``

Specified by:
  `resetHeader` in interface `DocListener`

#### setFooter

    public void setFooter(HeaderFooter footer)

Changes the footer of this document.

This method should be overridden in the specific `DocWriter`classes derived from this abstract class if they actually support the use of footers.``

Specified by:
  `setFooter` in interface `DocListener`
Parameters:
  `footer` - the new footer

#### resetFooter

    public void resetFooter()

Resets the footer of this document.

This method should be overridden in the specific `DocWriter`classes derived from this abstract class if they actually support the use of footers.``

Specified by:
  `resetFooter` in interface `DocListener`

#### resetPageCount

    public void resetPageCount()

Sets the page number to 0.

This method should be overridden in the specific `DocWriter`classes derived from this abstract class if they actually support the use of pagenumbers.``

Specified by:
  `resetPageCount` in interface `DocListener`

#### setPageCount

    public void setPageCount(int pageN)

Sets the page number.

This method should be overridden in the specific `DocWriter`classes derived from this abstract class if they actually support the use of pagenumbers.``

Specified by:
  `setPageCount` in interface `DocListener`
Parameters:
  `pageN` - the new page number

#### close

    public void close()

Signals that the `Document` was closed and that no other `Elements` will be added.

Specified by:
  `close` in interface `DocListener`

#### getISOBytes

    public static final byte[] getISOBytes(java.lang.String text)

Converts a `String` into a `Byte` array according to the ISO-8859-1 codepage.

Parameters:
  `text` - the text to be converted
Returns:
  the conversion result

#### pause

    public void pause()

Let the writer know that all writing has to be paused.

#### isPaused

    public boolean isPaused()

Checks if writing is paused.

Returns:
  `true` if writing temporarily has to be paused, `false` otherwise.

#### resume

    public void resume()

Let the writer know that writing may be resumed.

#### flush

    public void flush()

Flushes the `BufferedOutputStream`.

#### write

    protected void write(java.lang.String string)
                  throws java.io.IOException

Writes a `String` to the `OutputStream`.

Parameters:
  `string` - the `String` to write
Throws:
  `java.io.IOException`

#### addTabs

    protected void addTabs(int indent)
                    throws java.io.IOException

Writes a number of tabs.

Parameters:
  `indent` - the number of tabs to add
Throws:
  `java.io.IOException`

#### write

    protected void write(java.lang.String key,
             java.lang.String value)
                  throws java.io.IOException

Writes a key-value pair to the outputstream.

Parameters:
  `key` - the name of an attribute
  `value` - the value of an attribute
Throws:
  `java.io.IOException`

#### writeStart

    protected void writeStart(java.lang.String tag)
                       throws java.io.IOException

Writes a starttag to the outputstream.

Parameters:
  `tag` - the name of the tag
Throws:
  `java.io.IOException`

#### writeEnd

    protected void writeEnd(java.lang.String tag)
                     throws java.io.IOException

Writes an endtag to the outputstream.

Parameters:
  `tag` - the name of the tag
Throws:
  `java.io.IOException`

#### writeEnd

    protected void writeEnd()
                     throws java.io.IOException

Writes an endtag to the outputstream.

Throws:
  `java.io.IOException`

#### writeMarkupAttributes

    protected boolean writeMarkupAttributes(java.util.Properties markup)
                                     throws java.io.IOException

Writes the markup attributes of the specified `MarkupAttributes` object to the `OutputStream`.

Parameters:
  `markup` - a `Properties` collection to write.
Returns:
  true, if writing the markup attributes succeeded
Throws:
  `java.io.IOException`

#### isCloseStream

    public boolean isCloseStream()

Checks if the stream is to be closed on document close

Returns:
  true if the stream is closed on document close

#### setCloseStream

    public void setCloseStream(boolean closeStream)

Sets the close state of the stream after document close

Parameters:
  `closeStream` - true if the stream is closed on document close

#### setMarginMirroring

    public boolean setMarginMirroring(boolean MarginMirroring)

Description copied from interface: `DocListener`
Parameter that allows you to do left/right margin mirroring (odd/even pages)

Specified by:
  `setMarginMirroring` in interface `DocListener`
Returns:
  true if successful
See Also:
  `DocListener.setMarginMirroring(boolean)`

#### setMarginMirroringTopBottom

    public boolean setMarginMirroringTopBottom(boolean MarginMirroring)

Description copied from interface: `DocListener`
Parameter that allows you to do top/bottom margin mirroring (odd/even pages)

Specified by:
  `setMarginMirroringTopBottom` in interface `DocListener`
Returns:
  true if successful
Since:
  2.1.6
See Also:
  `DocListener.setMarginMirroring(boolean)`