Xpdf: Common problems
Home
About
Download
Screen shots
Decryption
Ports & tools
LZW
Problems
Links

Contents

Using t1lib to render the Base-14 fonts

PDF files are allowed to use the Base-14 fonts (Times, Helvetica, and Courier, in regular, bold, and bold-italic; Symbol; and Zapf Dingbats) without embedding them. In order to have xpdf use t1lib to render these (which will make them look much nicer), you need to install these fonts and tell xpdf where to find them.

Ghostscript comes with a set of free, high-quality Type 1 fonts, donated by URW++ Design and Development Incorporated. The xpdf X resources needed for these fonts are:

    xpdf.t1TimesRoman:           /usr/local/share/ghostscript/fonts/n021003l.pfb
    xpdf.t1TimesItalic:          /usr/local/share/ghostscript/fonts/n021023l.pfb
    xpdf.t1TimesBold:            /usr/local/share/ghostscript/fonts/n021004l.pfb
    xpdf.t1TimesBoldItalic:      /usr/local/share/ghostscript/fonts/n021024l.pfb
    xpdf.t1Helvetica:            /usr/local/share/ghostscript/fonts/n019003l.pfb
    xpdf.t1HelveticaOblique:     /usr/local/share/ghostscript/fonts/n019023l.pfb
    xpdf.t1HelveticaBold:        /usr/local/share/ghostscript/fonts/n019004l.pfb
    xpdf.t1HelveticaBoldOblique: /usr/local/share/ghostscript/fonts/n019024l.pfb
    xpdf.t1Courier:              /usr/local/share/ghostscript/fonts/n022003l.pfb
    xpdf.t1CourierOblique:       /usr/local/share/ghostscript/fonts/n022023l.pfb
    xpdf.t1CourierBold:          /usr/local/share/ghostscript/fonts/n022004l.pfb
    xpdf.t1CourierBoldOblique:   /usr/local/share/ghostscript/fonts/n022024l.pfb
    xpdf.t1Symbol:               /usr/local/share/ghostscript/fonts/s050000l.pfb
    xpdf.t1ZapfDingbats:         /usr/local/share/ghostscript/fonts/d050000l.pfb
You will obviously need to replace '/usr/local/share/ghostscript/fonts' with the appropriate path on your system.

Compiling with gcc 2.95

The latest version of gcc is pickier than older versions about the 'const' qualifier. When compiling xpdf, you can get around this by using the -fno-const-strings flag:

    rm -f config.cache
    setenv CXXFLAGS -fno-const-strings
    ./configure
    make
(Setenv is a csh/tcsh construct; for sh/bash, use
    CXXFLAGS=-fno-const-strings ./configure
instead.)

The next release of xpdf will check for this automatically in the configure script.

In addition, it seems that many vendor-supplied X include files will not compile under C++ with gcc 2.95. You can work around this by taking the XFree86 include files, which have been modified to be compliant with ANSI C++.

Building t1lib with non-gnu make

The makefiles in t1lib 0.9.1 used some gnu-make features. If you're having trouble with this, try t1lib 0.9.2 instead. (0.9.2 has some bug fixes, so it's worth upgrading in any case.)

VMS file format

If you're running xpdf under VMS, and getting "Couldn't read xref table" errors, try converting the PDF file to plain fixed record format with no record attributes:

$ SET FILE/ATTRIBUTE=(LRL:512,MRS:512,ORG:SEQ,RAT:NONE,RFM:FIX)

This problem is most often caused by Netscape, which writes everything in stream_lf format.

(Thanks to Henry Juengst and Patrick Moreau for this hint.)

VMS foreign symbol

After installing xpdf on a VMS system, you need to define the xpdf foreign symbol. Load your login.com file under a text editor, and add the line:

$ xpdf :== $disk:[directory_path]xpdf.exe
where disk is the device or logical name of the disk where the executable is located, and [directory_path] is the directory path under the root of the disk. The $ before the disk name is mandatory.

After saving your modified login.com file, issue the command:

$ @sys$login:login
to force a re-execution of the login.com (or create another decterm), and you will be able to use xpdf.

On OpenVMS 7.x a system manager (or user) could also define a logical DCL$PATH, e.g.,

$ASSIGN/SYSTEM/EXECUTIVE_MODE SYS$SYSTEM:,DECW$UTILS: DCL$PATH
in SYS$STARTUP:SYSTARTUP_VMS.COM and then drop applications like XPDF into DECW$UTILS: or into another directory, which should be part of the (DCL$PATH) list.

(Thanks to Patrick Moreau and Henry Juengst for this hint.)