I was affected by a similar problem for the Brother DCP-7055. I'm
posting an analysis and solution here in hope it might help others; if
there are better places to spread the information, pointers are welcome.

It also raises the general question of a policy to handle margins; maybe
that is interesting for the cups-developers, too.

Analysis:

The Brother driver for the DCP-7055 and similar printers consists of several 
stages, probably accumulated over time:
1. A wrapper that installs PPD files and a filter in CUPS
2. The filter, which calls into the older LPD-driver
3. The LPD-Driver calls ghostscript with -sDEVICE=bit to produce raw data, 
which is feed into the rawtobr3 program
4. rawtobr3 prodces a PJL job and PCL commands in a Brother-specific encoding

The problem is that all of these stages contain code to handle the
margins. Rawtobr3 expects a full-sized page and cuts off some fixed
border; the printer itself probably cuts off the rest. The installed
CUPS-filter injects a HWMargin command into the Postscript-file, this
will cause a blank margin region when used with the bit-driver. The
PaperDimension and possible ImageableArea information in the PPD file
also affect the end result, I didn't investigate the details. The code
to handle margins in the result of the pipeline does not seem to be
executed.

If the margin is cut off several times, or if the size of the resulting
image is too small, the end result may appear shifted or the margins may
be wrong, because the image is always positioned on the lower left
corner.

Solution:

1. Change "PCL=1" to "PCL=0" in the filter 
(/usr/local/Brother/Printer/<modelname>/lpd/filter<modelname>). This will 
disable injection of HWMargin.
2. Change the ImageableArea to the full area (as given by PaperDimension) 
without margins in both PPD (original in /usr/share/cups/model, installed in 
/etc/cups/ppd/) to be on the safe side.
3. The other code to shift the image or handle margins in the brother pipeline 
does not seem to be executed

With this changes, I was able to print a full image, correctly centered
and with minimal margins.

An alternative would be to provide a simple filter-script by CUPS for
these Brother printers that just calls ghostscript and rawtobr3
directly, avoiding the byzantine layers of scripts of the brother
driver, and making sure all options are processed correctly. I don't
know if the CUPS developers would be interested in maintaining such a
script.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/962287

Title:
  Brother DCP 7065DN margins are incorrect when printing

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug/962287/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to