/**
* Attach a different print buffer to the printer. Buffers are responsible for handling text output to the printer.
*
* @param PrintBuffer $buffer The buffer to use.
* @throws InvalidArgumentException Where the buffer is already attached to a different printer.
*/
function setPrintBuffer(PrintBuffer $buffer)
{
if ($buffer === $this->buffer) {
return;
}
if ($buffer->getPrinter() != null) {
throw new InvalidArgumentException("This buffer is already attached to a printer.");
}
if ($this->buffer !== null) {
$this->buffer->setPrinter(null);
}
$this->buffer = $buffer;
$this->buffer->setPrinter($this);
}