Skip to content
Back to top

# Buffer

Buffer objects are used for working with binary data, e.g. returned from `asJPEG`. They can be used much like arrays, but are much more efficient since they only store bytes.

## Constructors

class Buffer(data)

  Creates a new Buffer initialized with contents from data.

  Arguments:

    - data (`Buffer | ArrayBuffer | Uint8Array | string | null`) – Contents used to populate buffer, or leave it empty if `null`.

      var buffer = new mupdf.Buffer("hello world")

## Instance properties

Buffer.prototype.length

  The number of bytes in this buffer (read-only).

  Throws:

    TypeError on attempted writes.

  Returns:

    number

Buffer.prototype.[n]

  only mutool run

  Get or set the byte at index `n`.

  See `readByte()` and `writeByte()` for the equivalent in mupdf.js.

  Throws:

    RangeError on out of bounds accesses.

      var byte = buffer[0]

## Instance methods

Buffer.prototype.asString()

  Returns the contents of this buffer as a string.

  Returns:

    string

      var str = buffer.asString()

Buffer.prototype.asUint8Array()

  only mupdf.js

  Returns the contents of this buffer as a Uint8Array.

  Returns:

    Uint8Array

      var arr = buffer.asUint8Array()

Buffer.prototype.getLength()

  Returns the number of bytes in this buffer.

  Returns:

    number

      var length = buffer.getLength()

Buffer.prototype.readByte(at)

  Returns the byte at the specified index `at` if within `0 <= at < getLength()`. Otherwise returns `undefined`.

  Arguments:

    - at (`number`) – Index to read byte at.

  Returns:

    number

      buffer.readByte(0)

Buffer.prototype.slice(start, end)

  Create a new buffer containing a (subset of) the data in this buffer. Start and end are offsets from the beginning of this buffer, and if negative from the end of this buffer. If `start` points to the end of this buffer, or if `end` point to at or before `start`, then an empty buffer will be returned.

  Arguments:

    - start (`number`) – Start index.

    - end (`number`) – End index (optional).

  Returns:

    Buffer

      var buffer = new mupdf.Buffer()
      buffer.write("hello world") // buffer contains "hello world"
      var newBuffer = buffer.slice(1, -1) // newBuffer contains "ello worl"

Buffer.prototype.write(str)

  Append the string as UTF-8 to the end of this buffer.

  Arguments:

    - str (`string`) – String to append.

      buffer.write("hello world")

Buffer.prototype.writeBuffer(data)

  Append the contents of the `data` buffer to the end of this buffer.

  Arguments:

    - data (`Buffer | ArrayBuffer | Uint8Array | string`) – Data buffer to append.

      buffer.writeBuffer(anotherBuffer)

Buffer.prototype.writeByte(byte)

  Append a single byte to the end of this buffer. Only the least significant 8 bits of the value are appended.

  Arguments:

    - byte (`number`) – The byte value to append.

      buffer.writeByte(0x2a)

Buffer.prototype.writeLine(str)

  Append string to the end of this buffer ending with a newline.

  Arguments:

    - str (`string`) – String to append.

      buffer.writeLine("a line")

Buffer.prototype.writeRune(c)

  only mutool run

  Encode a unicode character as UTF-8 and append to the end of the buffer.

  Arguments:

    - c (`number`) – The character unicode codepoint.

      buffer.writeRune(0x4f60) // To append U+4f60, 你
      buffer.writeRune(0x597d) // To append U+597d, 好
      buffer.writeRune(0xff01) // To append U+ff01, ！

Buffer.prototype.save(filename)

  Write the contents of the buffer to a file.

  Arguments:

    - filename (`string`) – Filename to save to.

      buffer.save("buffer.dat")