6

I have a humble Brother HL-1110 monochrome laser printer with 1MB of RAM. That's pretty short and, in the beginning, I thought I was only going to be able to print plain text documents or small PDF documents because laser printers need to store the entire page in their memory before they actually print it.

But, for some reason, this doesn't seem to be the case. Many of my prints are well above 1MB, and some are at around 40MB per page (at least that's what CUPS claims to be the case).

I'm very glad I can print large documents but I'm also confused. Presumably, my printer should run out of memory; but it doesn't. Why is that?

2
  • Just found tomshardware.co.uk/forum/2294-3-printer-memory-work which is an interesting discussion on stuff to add to the answers below.
    – Chris
    May 25, 2014 at 22:45
  • 1
    You're lucky, I have the exact same printer and it often fails with an "Out of memory" error while printing even simple files. It does manage sometimes to print larger ones, but the printer can and does run out of memory. The official troubleshooting solution for this is: "Reduce the complexity of your document or lower the print quality".
    – anol
    Nov 16, 2014 at 0:03

3 Answers 3

3

You can't print a page that won't fit in 1MB. It's not possible to stream information to the printer as it needs it. The entire page must fit in memory.

At 300DPI, you need 10.98KB per square inch (300*300/8/1024) to permit any possible output. If you multiply this by the printable area of a standard piece of paper, you get 984KB (10.98 * 8.3 * 10.8). So 1MB is sufficient to print an entire page at 300DPI.

Compression can be used to allow a page to include some portions at higher resolutions, and the driver should be smart enough to do the best job it can rendering the page you print in the memory available.

8
  • Why exactly do you divide by 8 and then by 1024?
    – gpo
    May 25, 2014 at 22:27
  • There are 8 bits in a byte and 1,024 bytes in a kilobyte. So you need 300*300 bits, or 300*300/8 bytes, or 300*300/8/1024 kilobytes. May 25, 2014 at 22:32
  • 1
    Does each dot not have an intensity of some kind? I assumed much like a pixel on a screen that in monochrome you'd still have 8 bits/1 byte of intensity information.
    – Chris
    May 25, 2014 at 22:34
  • Also as a note you seem to be referring to "letter" format paper as your standard whereas most of the world use A4 which is slightly larger in area (8.267*11.692). Being pedantic but its worth stating the exact format of paper you are using since "standard" varies by country. Of note is that I assume this reasoning is broadly correct and compression answers any last bits of question.
    – Chris
    May 25, 2014 at 22:41
  • Just to annoy you: The term "monochrome" is maybe not uniquely defined. Wikipedia, for instance, makes a difference between 8-bit Grayscale and 1-bit Monochrome (en.wikipedia.org/wiki/Binary_image) but also mentions that Grayscale is sometimes referred to as Monochrome. "Monochrome" means "one color", but still it is unclear whether intensity is included in the term or not (cf. en.wiktionary.org/wiki/monochrome). @DavidSchwartz You are also not exactly right. 1024 Byte are not 1 Kilobyte but one Kibibyte. 1000 Byte are 1 Kilobyte.
    – Lukas
    May 25, 2014 at 22:51
2

Your printer will not run out of memory as you think. The memory holds what is necessary to print what is there at the time, the moment it processes that, it is available to be "re-filled". The "document" flows through the printer, nothing is retained. It is a buffer. As @Keltari says below, it can also be used to store printer fonts.

5
  • OK, so that 1MB is more like a buffer, right? And, in that case, would you know when does a job fail? Because I've had that happen too.
    – gpo
    May 25, 2014 at 15:45
  • It's a buffer. There will be a notification )usually somewhere on your desktop depending on your system) that the print operation has failed.
    – Xavierjazz
    May 25, 2014 at 17:00
  • 1
    Some printer memory is used to store printer fonts, as well
    – Keltari
    May 25, 2014 at 17:01
  • I'm sorry, I must have expressed myself poorly. I wanted to know the circumstances under which a job fails, and not how I get notified. Is it, for example, when a buffer overflow/underflow happens? Does the printer need a steady data flow? Just curious.
    – gpo
    May 25, 2014 at 20:59
  • The Brother HL-1110 is a GDI printer. That means that it does not render the page to be printed itself, but gets a bitmap for the entire page from the driver. Since a laser printer prints an entire page at once, it needs internal buffer space to store at lease one page. The HL-1110 has only 1MB of buffer which is just enough to store a full page (A4 or US letter) at 300 DPI. I'd assume that a compression technique is used to store higher resolution bitmaps as well (e.g. 600 DPI). If you have a page bitmap that cannot be compressed well this fails resulting in an "out of memory" error.
    – dasup
    Aug 26, 2015 at 16:29
1

As David said; just because a page that you are printing is >1MB, doesn't mean that the image sent to the printer is the same size.

A Word doc, for example, will hold loads of information within the file;

  • the actual text on the page

  • the font of the text

  • the size of the font

  • the text colour

  • background colour

I could go on. However, when its sent to the printer, the printer does not need to know the name of the font or the size of the font or even what is highlighted. It will just be told "print this colour in this place".

Imagine the page to be a huge grid. The PC will tell the printer "you need to print black from 'cell' A1 to D5".

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .