Shallow Thoughts
Akkana's Musings on Open Source, Science, and Nature.
Thu, 12 Jun 2008
I discovered a handy tip for Linux Firefox' printing Page Setup today.
Normal web page printing uses "Portrait" mode: you read the page
with the paper oriented so that it's taller than it is wide.
Once a week, I need to print a form from a club web site to bring
to the meetings. It's a table that's much wider than it is tall,
so I want to print it that way: in "Landscape" mode.
In Firefox 2 (at least on Linux), you can't do that from the Print
dialog -- there's no Portrait/Landscape option. So you have to use
a separate dialog, Page Setup, following these steps:
- Run Page Setup
- Change Portrait to Landscape
- Click OK
- Print (bring up the Print dialog and click OK)
- Run Page Setup
- Change Landscape to Portrait
- Click OK
Kind of a lot of steps just to print one landscape page!
But if you forget,
the next page you print from Firefox will be printed in Landscape
mode and will take twice as many pages as it should (if you don't
notice what's happening and dive for the printer's OFF switch in time,
that being the only way to cancel a printing job once it hits the printer).
This morning, it finally occurred to me that Firefox was storing this
setting somehow, most likely in prefs.js.
If I could find the setting and force it in user.js (which takes
precedence over prefs.js and is not updated by Firefox), I could make
Firefox set itself back to Portrait every time it starts up.
(prefs.js and user.js are both generally found in $HOME/.mozilla/firefox/).
Some greppery-pokery revealed the solution.
I needed only to add a line in user.js that looks like this:
user_pref("print.printer_CUPS/Epson.print_orientation", 0);
and presto! my problem was solved.
Oddly, it's set separately for every printer you have defined, even
though there's no way to set one printer to Landscape while another
one is still on Portrait (the Page Setup dialog is global, and applies
to every printer Firefox knows about). "Epson" is the CUPS name of my
primary printer; replace that with your printer's name (as set in
CUPS), and add a similar line for each printer you have. For the
printers I've used, 0 is Portrait and 1 is Landscape, but you can
verify that by typing:
grep orientation prefs.js | grep name
That command will also help you
if you're not sure what printers you have defined, or you don't use
CUPS but want to try this under a different print spooler.
(Don't be misled by all the orientation prefs with "tmp" in the name.)
As a minor digression, there's actually a secret pref that's supposed
to give another way around the problem:
user_pref("print.whileInPrintPreview", true);
This lets you do all your printing from the Print Preview window,
which offers its own Portrait and Landscape buttons. That would
be a nice solution. Alas, the Portrait and Landscape buttons in that
dialog currently don't work, and since this preference is undocumented
and unmaintained, filing more bugs isn't likely to help.
(I should mention that this all pertains to Firefox 2.
I haven't switched to Firefox 3 yet,
so I don't know the state of its printing UI, or whether this
preference is either helpful or effective there.)
Tags: mozilla, firefox, printing, tips
[
20:07 Jun 12, 2008
More tech/web |
permalink to this entry
]
Thu, 01 Jun 2006
On Dapper, whenever I tried to add a new printer or make any
modifications to the existing printer's settings, I would eventually
come to a dialog prompting me to enter username and password for
'CUPS'. There seemed to be no right answer: there is no user called
"cups" (there's a "cupsys", but that's not what it was asking for),
and trying either my own username and password, or root's, just
popped up the dialog again. A second attempt always led to a blank
white page.
But Carla
knew the answer. You're supposed to read:
zless /usr/share/doc/cupsys/README.Debian.gz
then skip to the end of the file where there's a brief hint
about this problem, stating that "Administration over the web
interface is disabled by default since it
requires the CUPS daemon to be able to read /etc/shadow."
Note that they don't actually disable it in a way that
tells users it's disabled. CUPS apparently doesn't check for
read permission on the shadow file before opening it,
or check whether there was an error in reading it;
it just silently bombs out with no indication what went wrong.
To fix it:
adduser cupsys shadow
adduser yourname lpadmin
You may not need the second line if you're already in group
lpadmin (type
groups to find out).
Then reboot. (Restarting cups and logging out and back in might
be enough: you need to get cups and your login session seeing their
new group permissions.)
Now, magically, the CUPS web interface works!
Tags: linux, printing
[
22:15 Jun 01, 2006
More linux |
permalink to this entry
]
Sun, 23 Apr 2006
Firefox' print system doesn't know how to print just even or just
odd pages of a document, so when I need to print out a web page
and want it double sided, I've been doing the Duplex Dance:
hover over the printer ready to grab each page as it comes out
the front so that I can quickly flip it and feed it back into the
top of the printer fast enough that the printer doesn't time out
with "Out of Paper".
Of course, more often I just sigh and let it print single sided
because that's just way too much hassle.
But today is Earth Day, so I decided it was time to find a better
solution. The solution, obviously, begins with telling the browser
to print to a Postscript file. Then the challenge is to find a way to
print only the odd pages of the Postscript file, put the pages back
in the printer, then print only the even pages.
First I tried to use mpage, which claims to be able to do this.
It looked like this command should do it:
mpage -j 1%2 file.ps | lpr
But it didn't work -- it said it was spooling something to the
printer, but nothing ever came out. Upon saving the mpage output
to a file, I found that gv couldn't show it, citing postscript
errors.
But it turns out there's a much easier way: the CUPS lp program
has an option called page-set precisely for this purpose,
and it's smart about detecting postscript input.
This command did the trick:
lp -o page-set=odd file.ps
Then flip the sheets, insert back into the printer, and repeat
with
even instead of
odd. Lovely!
This is documented in http://localhost:631/help/options.html?QUERY=odd#PAGESET
-- and the CUPS in-browser help has a search function that took me
right to it, I'm happy to note.
Other programs which may to be able to split postscript files into
odd and even pages include psselect and perhaps dviduplex.
With a smarter print dialog (one that allowed specifying a custom
print command, like Mozilla's used to) you could even define several
custom printers, one that printed even pages and one that printed
odd. Alas, Firefox' print dialog doesn't allow such things, or even
allow defining extra printers.
(The Mozilla bug asking for odd/even printing is bug
35228).
From a quick search of about:config, it
looks like you might be able to set up something by hand using
the print.printer_CUPS/printername.print_command preference
(by default mine was set to
lpr ${MOZ_PRINTER_NAME:+'-P'}${MOZ_PRINTER_NAME}) but I
notice something even more interesting: two variables called
print.printer_CUPS/printername.print_evenpages and
print.printer_CUPS/printername.print_oddpages (both set to
true by default). Also interesting are plex.0.name and
plex.count.
Might be an easy way to get duplex printing
straight from the browser, after doing a little hand-editing to
try and persuade Firefox that there's more than one printer.
I'll try it next time I need to print something.
(It seems wrong to spend Earth Day printing more pages than I
actually need.)
Tags: linux, printing
[
19:21 Apr 23, 2006
More linux |
permalink to this entry
]
Sat, 18 Mar 2006
I needed to send a formal letter, so I thought, as a nice touch,
I'd print the address on the envelope rather than handwriting it.
I felt sure I remembered glabels, that nice, lightweight,
straightforward label printing program, having envelope options.
But nope, it doesn't have any paper sizes corresponding to envelopes.
(It has a size called A10 but it's 1.0236 x 1.4567 inches, not the 4.13 x
9.50 I'd expect for a number-ten envelope.)
Darn, that would have been perfect.
OpenOffice doesn't have anything in its templates list that
corresponds to an envelope, nor does it have anything in the Wizards
list. But googling showed me -- aha! -- that it's hidden in the
Insert menu, Insert->envelope -- so if you want to
create a new envelope document, create some other type of document
first, go to Insert and bring up the envelope dialog, click New to get
the envelope, then close the blank dummy document.
But then it doesn't offer a choice of envelope sizes, and puts the text in
odd places so you have to fiddle with the margins to get the recipient
and return address in normal places. Then, when you go to Preview or
Printer Settings, it has forgotten all about the fact that it's doing
an envelope and now tries to print in the middle of a sheet of paper.
In theory you could fix this by setting the paper size to the size of
the envelope -- except that OOo doesn't actually have any envelope
sizes in its paper list.
Okay, let's try abiword instead.
Abiword has a nice selection of paper sizes, including some common
envelope sizes. Choosing A10 envelope and Landscape mode lets me
compose a nice looking envelope. But then when I go to Print Preview,
it turns out it wants to print it in portrait mode, with the addresses
going across the short dimension of the envelope. The Print dialog
offers a Paper tab which includes an Orientation dropdown, but
changing that from Landscape to Portrait makes no difference: the
preview still shows the addresses disappearing off the short dimension
of the envelope.
I suppose I should try kword. But it depends on nine other packages,
and I was tired of fighting. I gave up and wrote the address
out by hand.
The next day, though, I went back to gLabels, poked around for a bit
and found out about "Template Designer" (in the File menu).
It's almost there ... it's easy to set up custom sizes, but it
prints them in the middle of a US-letter page, rather than lined
up against the edge of the printer's feeder. I'm dubious that you
could feed real envelopes this way with any reliability. Still,
it's a lot closer than the word processing programs could get.
Tags: linux, printing
[
17:36 Mar 18, 2006
More linux |
permalink to this entry
]
Mon, 20 Dec 2004
I've forever struggled with Debian's printing system.
A few months ago, Debian unstable introduced a new package called
printconf which, once I discovered by accident it required
the parallel port to be in EPP mode, actually detected and
configured my trusty Epson Photo 700. It was a happy day!
But since then, the printing system has broken again.
It wasn't so bad when printing did nothing at all, or printed
random garbage characters or postscript instead of a picture.
But now (for the past month or so), what it does is print out
a centimeter or so of reasonable graphics, after which the printer
starts to issue horrible grinding noises
and has to be powered off in order to stop the destruction.
I discovered through much fiddling that I could get the printer
working again (on a non-Debian system) by powering it off and
leaving it that way for quite a while (a few minutes doesn't seem to
be enough, but 20 minutes is), then plugging it into the SuSE 9.1
machine and running a series of clean/nozzle test/clean cycles.
Eventually, after the second round where the nozzle test prints
clean, the printer works normally again from SuSE or Redhat.
I still don't know whether all that loud grinding is doing
any permanent damage to the printer.
I suspect the actual problem may be something like paper size.
In the few months during which printing actually worked,
I had lots of problems with mozilla's printouts overrunning the
page, which turned out to be due to Xprint having its own idea of
paper size (A4) rather than following the system setting (usletter).
I never did find a place to configure Xprint's idea of paper size,
so I uninstalled Xprint, and mozilla magically became able to print
on usletter paper. But it's possible there are other parameters
buried in the debian printing system somewhere, perhaps telling
the printer to print to paper wider than it's capable of.
I've filed bugs, but they never get any response which might offer
a clue how I could help debug this; I suspect Debian's print
spooling system is basically orphaned. I've tried installing
and uninstalling every combination of the myriad print spooling
components I can find. I'd love to uninstall it all and build the
whole spooler from source, and then perhaps try to track down
the problem and fix it, but there are so many pieces which all
work together in undocumented ways that I don't know where to start.
(Perhaps by installing exactly the component set that SuSE does?)
I'm reluctantly giving up on Debian for my primary desktop machine.
I like almost everything else about Debian, and I've run it for
several years on my primary machine; but during that time I've
only had a few months here and there where printing briefly worked
before breaking again. There must be a distro that can do easy
software updates like Debian, yet is still capable of driving
a printer without damaging it!
Tags: linux, debian, printing
[
22:46 Dec 20, 2004
More linux |
permalink to this entry
]
Fri, 05 Nov 2004
Printing's been broken on my Debian machine forever.
For one brief shining moment back in July I
briefly
got it working, then a week later a dist-upgrade broke it again
and it's been broken ever since.
Last week Debian Weekly
News mentioned a new package called "printconf" which supposedly
autoconfigures usb and parallel printers for CUPS. Now, setting
aside for the moment that there's already a package called
printconf, which configures a completely different spooler than
CUPS, and that it's very confusing of Debian to resurrect an old
name for a completely different purpose, of course I wanted to try
it.
At apt-get time, it asked me whether I wanted to configure my
printers now, and of course I said yes. The package installed,
it printed a message about restarting CUPS, and no more details.
Did it do anything?
I visited the CUPS configuration url (CUPS is configured via a web
browser) and the entry looked like my old printer entry. Just for
ducks I clicked "print a test page". Nada. So I removed the entry,
went back to my root shell and typed printconf. It printed
"Restarting cups ... done." No other info. Back to the web
configuration page ... no printer there.
Eventually I discovered the -v option, which at least told me that
it wasn't finding any parallel printers. I know this printer can be
detected via the parallel port (SuSE and Mandrake both autoconfigure
it), so something was wrong. Time to look at the BIOS.
A bunch of reboots later, I finally managed to get into my machine's
BIOS screen (hint: repeatedly press DEL during boot. The screen saying
DEL is the right key only flashes for a fraction of a second, so
there's no hope of ever reading it and I wasted several boot cycles
pressing function keys instead) and changed the parallel port from
"ECP" to "ECP/EPP". Back into Debian -- and voila! printconf saw
the printer, autoconfigured it with some magic the earlier entry
hadn't had, and after a year and a half I have a debian printer again!
(Incidentally, the parallel port setting isn't why the printer
wasn't working before; it was something about the CUPS
configuration. Printing used to work on this machine several
years ago and the BIOS settings haven't changed since then.)
All hail printconf! I wonder if it's ever occurred to anyone to
mention in the man page that it needs an EPP (or ECP/EPP?) parallel
port?
Tags: linux, debian, printing
[
21:05 Nov 05, 2004
More linux |
permalink to this entry
]
Tue, 03 Aug 2004
Someone sent me mail asking about my CD label page, and that
inspired me to fire up gLabels for the first time in a while.
Debian has 1.93.3 (on sarge, anyway) and it's looking very nice!
There's now a separate pane for object properties, which I'm not
entirely crazy about (takes up a lot of screen space relative to
using a dialog) but the most important thing is that the label
outlines now draw even if covered by an image. That means that
you can reasonably line up a CD label image with the template now,
which makes my old patch to gimp-print much less needed.
The gimp-print patch might not be needed at all, if libgnomeprint
could print with high quality. I wonder if that's coming?
I haven't actually tried printing to see what the quality is
like now. I should probably snarf the latest gimp-print and
update my patch anyway.
Tags: linux, printing
[
12:34 Aug 03, 2004
More linux |
permalink to this entry
]
Tue, 20 Jul 2004
After a year of no printing on sid, I went back to sarge to see if I could
still print from there.
When I dist-upgraded my ancient sarge, one of the questions it asked me
was whether to replace printers.conf. That sounded suspicious: I saved
the old printers.conf, then allowed it to replace it with its new
version.
Well, sure enough, with the new printers.conf it didn't know about
my Epson, and when I went to the cups admin url to add it, there
was no "add printer" button. Just like I'd always seen in sid.
In sid, someone once gave me the direct url to "add a printer",
but when I followed it, I didn't get a working setup anyway.
I decided to try copying my old printers.conf on top of the new one.
And voila, it worked! Printing works okay from sarge. (It still has
the problem of the cups test page outlines not aligning well with the
physical printer page, so it may not work for printing labels, but
it's a start.)
So I moved over to sid, and tried the same printers.conf. Voila,
something came out of the printer, the first I've ever seen that
happen from sid! It didn't entirely work: I printed a few lines
using lpr, and the printer printed those lines but then didn't
eject the page, and I had to wrestle with the printer to get the
paper out. So all is not quite well in sid land, but it's much
farther along than it was using only the tools available in sid
(rather than my two-year-old printers.conf originally configured
on a much older sarge).
The other interesting file that upgrade asked me about was
epson.conf, which turns out to be for the epson scanner, not the
epson printer. Perhaps by using that (I saved the old sarge file)
I'll eventually be able to get scanning working on sid! That
would be lovely. For now, I'm using sarge a lot more.
Tags: linux, debian, printing
[
22:09 Jul 20, 2004
More linux |
permalink to this entry
]