Class EndstreamFilterStream

java.lang.Object
org.apache.pdfbox.pdfparser.EndstreamFilterStream

class EndstreamFilterStream extends Object
This class is only for the readUntilEndStream method, to prevent a final CR LF or LF (but not a final CR!) from being written to the output, unless the beginning of the stream is assumed to be ASCII. This solves PDFBOX-2079 and PDFBOX-2120 and avoids making readUntilEndStream() even more complex than it already is.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private boolean
     
    private boolean
     
    private long
     
    private boolean
     
    private int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    long
    write out a single CR if one was kept.
    void
    filter(byte[] b, int off, int len)
    Write CR and/or LF that were kept, then writes len bytes from the specified byte array starting at offset off to this output stream, except trailing CR, CR LF, or LF.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • hasCR

      private boolean hasCR
    • hasLF

      private boolean hasLF
    • pos

      private int pos
    • mustFilter

      private boolean mustFilter
    • length

      private long length
  • Constructor Details

    • EndstreamFilterStream

      EndstreamFilterStream()
  • Method Details

    • filter

      public void filter(byte[] b, int off, int len)
      Write CR and/or LF that were kept, then writes len bytes from the specified byte array starting at offset off to this output stream, except trailing CR, CR LF, or LF. No filtering will be done for the entire stream if the beginning is assumed to be ASCII.
      Parameters:
      b - byte array.
      off - offset.
      len - length of segment to write.
    • calculateLength

      public long calculateLength()
      write out a single CR if one was kept. Don't write kept CR LF or LF, and then call the base method to flush.