Logo  

PDFViewer-logo
The PDFViewer Home Page




 Rubriken:

Valid HTML 4.01!

Towel Day - Keine Panik


  Last Modified: 15. June 2004
 von D. Droege

 

(Old) NEWS

June 2004: There is a new Version of PDFViewer (1.41) available. It provides Compact Font Format (CFF, aka Type1C) and TrueType (TTF) support using external programs. See below.

The Application

PDFViewer is an application to view so called PDF files on NEXTSTEP/OpenStep Systems. PDF is Adobes "Portable Document Format", intended to make media-rich documents accessible on any kind of computer and system platform. The PDF format is used by the Adobe Acrobat suite of programs. For more information about PDF have a look at the Adobe web site or at the PDF specification.

PDFViewer runs on all Next/OpenStep systems since NEXTSTEP 3.1. It is "quad-fat", that is, compiled for Motorola (NeXT), Intel, SPARC and HP-PA architectures. PDFViewer is freely available and can be found on most major Nextstep FTP archive sites. In case you can't locate it on a FTP server near you, or if you want to try a possibly newer version not yet uploaded to the archives, you might want to look into my FTP download area. Be warned though that such newer versions might not yet be as stable as the uploaded ones. For further information about the program have a look into the Readme file.
PDFViewer is "localized" and provides English, German and French as languages for its user interface.

Security and Encryption

The PDF format allows to encrypt documents. Though this method is proven not to be as secure as desired (look here for details on (un-)security of PDF files), appropriate decryption must be provided by the PDF reading program to view such documents. PDFViewer provides decryption if equiped with an additional bundle ("Plug-In").

Due to legal reasons, this bundle is only available here at my FTP download area as Standard.pdfcrypt.tar.gz. The current (as of 1997) U.S. laws disallow the export of such cryptographic software, while importing it is legal. You may thus download it from the above place if you live in the U.S, but you should not place it in a public place where it could be transfered to another country.

Here in Germany, usage and distribution of the bundle are not restricted by any laws, at least not for now (and hopefully this won't change, though some bone heads try to). For any other country you should know yourself.

NEW  Compact Font Format and TrueType support

[Attention: There was a bug in cfftot1 included in the lcdf-typetools-2.2 package. Please upgrade to the -2.4 package.]

In June 2004 I added support for CFF and TrueType fonts embedded in PDF files after I happily found the cfftot1 program which is part of Eddie Kohlers LCDF Typetools and ttf2pt1 at http://ttf2pt1.sourceforge.net/.

As both programs are rather tricky to compile on Nextstep or Openstep I provide binaries for both in my download area (see Locations below). They are compiled using Nextstep 3.3 and run on Openstep as well.
cfftot1 and its friends can be found in the lcdf-typetools-2.4.NI.b.tar.gz package. It needs a special compiler, therefore I can only provide binaries for m68k and iX86 machines.
ttf2pt1 is in the ttf2pt1-3.4.4_ModDr.NIHS.b.tar.gz package. I had to modify it a little to deal with nameless embedded TrueType fonts (as generated by ghostscript e.g.). You can find the modifications in the file ttf2pt1-3.4.4.newNOpt.diff, additionally I will suggest these modifications for inclusion in the official release.

To use the CFF to Type1 conversion set a default for PDFViewer, like

   dwrite PDFViewer CFFtoPFAProg "cd '%s'; /use/local/bin/cfftot1 -q -a -o %s.pfa %s.cff"

The first '%s' will be replaced with the name of the temporary directory (/tmp by default, see below), any further '%s' (up to 3) will be replaced with the font name, e.g. 'Optima-Oblique'.

Similar, to use the TrueType to Type1 conversion, set the TTFtoPFAProg default for PDFViewer, like

   dwrite PDFViewer TTFtoPFAProg "cd '%s'; /usr/local/bin/ttf2pt1 -e -G a -l latin1 -N %s %s.ttf"

As with CFFtoPFAProg, the first '%s' will be replaced with the name of the temporary directory (/tmp by default, see below), any further '%s' (up to 3) will be replaced with the font name, e.g. 'Tahoma'.

If you want to use another directory than /tmp as scratch directory for conversion, change this with

   dwrite PDFViewer FontConvDir '/some/other/temp/dir'

Currently, the generated files in FontConvDir are not deleted but kept and reused if they occur in other documents. This might pose problems with partially included fonts. If so, please drop me a note and a suggestion what to do with these files.

Compiling the lcdf-typetools

It is rather tricky to copmpile the LCDF Typetools on Openstep and even more on Nextstep. Here are some hints: The official Openstep C/C++ Compiler (gcc version 2.7.2.1, NeXT-version cc-744.13) is not capable to compile the LCDF Typetools due to his rather limited C++ support. I was successful using the "egcs-2.91.66" release I installed long ago on my Openstep system. This beast is available at the PEANUTS-Archive in this directory as egcs-i386.1.1.2.2.NI.b.tar.gz resp. egcs-m68k.1.1.2.2.NI.b.tar.gz. (This is the gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release) version)

for Openstep: running './configure --without-kpathsea' and 'make' (GNU make!) produced a usable cfftot1 (besides a lot of other programs).

for Nextstep:
install egcs-2.91.66 (see above), then in file /usr/local/lib/gcc-lib/i386-next-nextstep3/egcs-2.91.66/specs.nextstep3 delete '-read_only_relocs suppress' from the line behind '*link:'
then you need some include files from an Openstep installation into the directory /usr/local/i386-next-nextstep3/include/ (or /usr/local/m68k-next-nextstep3/include/ if you work on black hardware). The needed files come from an Openstep /usr/include/bsd directory and are

    sys/cdefs.h
    i386/endian.h
    i386/types.h
    m68k/endian.h
    m68k/types.h
    hppa/endian.h
    hppa/types.h
    sparc/endian.h
    sparc/types.h
    machine/endian.h
    machine/types.h
Additionally, you must create a symbolic link:
    ln -s . /usr/local/i386-next-nextstep3/include/bsd
(or for "m68k" ... you get the picture)

I'm not sure, if this is really all, but this should at least solve most of the problems

Compiling the ttf2pt1

Unpack the ttf2pt1-3.4.4 package from Sourceforge, apply the diff-file ttf2pt1-3.4.4.newNOpt.diff using the 'patch' program (or simply get the modified source from my download area, the package is called ttf2pt1-3.4.4_Dr.s.tar.gz).

There is no ./configure, so you have to tweak the Makefile. It uses some unusual methods, esspecially for installing, so you will have to poke around quite a bit. But copying the generated executables to the desired location should work as well.

You'll need some additional files: the getopt routines from some recent GNU software, e.g. make-3.80 (the needed files are getopt.c getopt1.c getopt.h gettext.h).
Then, you need an implementation of snprintf(). There is one available at http://www.ijs.si/software/snprintf/ which worked fine for me - just copy the files snprintf.c and snprintf.h into the ttf2pt1-3.4.4 directory.
Then extend the list of .o files to be generated and linked with ttftpt1 by getopt.o getopt1.o and snprintf.o.
Don't forget to add the option -Dstrdup=NXCopyStringBuffer to the CFLAGS definition.

Those were the essential steps I did to get it compiled. Your mileage may vary.

Status

Currently, further development of PDFViewer occurs occasionally at best. The latest version uploaded to the archives ist v1.22b, the latest available one is v1.41 (June 2004). See the the README file for new features. The successor of Openstep, Apple's MacOS X (Server) has its own PDF viewing capabilities, since PDF becomes its central graphics format (replacing PostScript).

Some initial work to make PDFViewer a native OpenStep application had been done late in 1997. This version of PDFViewer (version 2.0-alpha) is available at the local download area (see above), but is very unstable, not reliable and not recomended to use. This pre-version is available for Rhapsody DR2 (PPC and Intel) and for Openstep 4.x.

Warning: The 2.0 versions are not recomended to use. Please use version 1.41 which runs fine on any Nextstep/Openstep system since 3.1.

Locations

Here are some FTP locations where you can get PDFViewer from. These are large servers and thus rather suitable for downloads. (If you come across other interesting locations, let me know.) The exact file names vary according to PDFViewer's current version number, therefore the links point to the directory it lives in. Sorry - I don't know of any server in the U.S. (yet).
If you'd like to see any further information here about PDFViewer please drop me a note.
Detlev Droege, University of Koblenz, Dept. of Computer Science,
P.O.Box 201 602, 56016 Koblenz, Germany,
EMail: droege@informatik.uni-koblenz.de
Fon: +49-261-287-2769 Fax: +49-261-287-100-2769