Skip to the content.

上一页      主目录      下一页

50. PostScript


本章包括创建、操作或查看PostScript文件和创建或查看可移植文档格式PDF文件的应用程序。

50.1 Enscript-1.6.6


简介Enscript

Enscript将ASCII文本文件转换为PostScript, HTML, RTF, ANSI和overstrikes。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

当心

Enscript无法将UTF-8编码文本转换为PostScript。该问题在Needed Encoding Not a Valid Option页面的Locale Related Issues一节中有详细讨论。解决方案是使用paps-0.7.1代替Enscript,将UTF-8编码的文本转换为PostScript。

包信息

Enscript 依赖

可选

texlive-20220321 (或 install-tl-unx)

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/Enscript

安装Enscript

运行以下命令安装Enscript:

./configure --prefix=/usr              \
            --sysconfdir=/etc/enscript \
            --localstatedir=/var       \
            --with-media=Letter &&
make &&

pushd docs &&
  makeinfo --plaintext -o enscript.txt enscript.texi &&
popd

如果你已经安装了texlive-20220321,你可以通过发出(不支持并行make)来创建Postscript和PDF文档:

make -j1 -C docs ps pdf

要测试结果,执行: make check.

现在,作为root用户:

make install &&

install -v -m755 -d /usr/share/doc/enscript-1.6.6 &&
install -v -m644    README* *.txt docs/*.txt \
                    /usr/share/doc/enscript-1.6.6

如果你构建了Postscript和PDF文档,以root用户使用以下命令安装它:

install -v -m644 docs/*.{dvi,pdf,ps} \
                 /usr/share/doc/enscript-1.6.6

命令解释

--sysconfdir=/etc/enscript: 该开关将配置数据放在/etc/enscript而不是/usr/etc中。

--localstatedir=/var: 此开关将运行时数据的目录设置为/var而不是/usr/var

--with-media=Letter: 此开关将中间格式设置为字母大小,而不是默认的A4。

内容

安装程序: diffpp, enscript, mkafmmap, over, sliceprint, 和 states

安装库: None

安装目录: /etc/enscript, /usr/share/doc/enscript-1.6.6, 和 /usr/share/enscript

简单描述

diffppdiff输出文件转换为适合用enscript打印的格式。

enscript 是一个过滤器,主要用于打印脚本,它将ASCII文本文件转换为PostScript、HTML、RTF、ANSI和overstrikes。

mkafmmap 从给定文件创建字体映射。

over 是一个脚本,它调用enscript并传递正确的参数来创建过度突出的字体。

sliceprint 用长线分割文档。

states 是一个awk-like的文本处理工具,带有一些状态机扩展。它是为突出显示程序源代码和用于状态信息有助于输入处理的类似任务而设计的。

50.2 ePDFView-0.1.8


简介ePDFView

ePDFView是一个免费的独立轻量级PDF文档查看器,使用Poppler和GTK+库。它是Evince的一个很好的替代品,因为它不依赖于GNOME库。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

ePDFView 依赖

必要

GTK+-2.24.33Poppler-23.02.0

推荐 (主要用于桌面环境)

desktop-file-utils-0.26hicolor-icon-theme-0.17

可选

Cups-2.4.2

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/epdfview

安装ePDFView

运行以下命令安装ePDFView:

patch -Np1 -i ../epdfview-0.1.8-fixes-2.patch &&
./configure --prefix=/usr &&
make

这个包没有附带测试套件。

现在,作为root用户:

make install

对于桌面环境用户,需要进一步(可选)说明才能在菜单中正确显示epdfview.desktop。作为root用户:

for size in 24 32 48; do
  ln -svf ../../../../epdfview/pixmaps/icon_epdfview-$size.png \
          /usr/share/icons/hicolor/${size}x${size}/apps
done &&
unset size &&

update-desktop-database &&
gtk-update-icon-cache -t -f --include-image-data /usr/share/icons/hicolor

命令解释

patch -Np1 -i ../epdfview-0.1.8-fixes-2.patch 这个补丁做了四件事:修复了glib-2.32或更高版本的编译问题,纠正了在最新版本的poppler中红色显示为蓝色的问题,允许应用程序在Cups-2.4.2安装时进行编译,并修复了嵌入png图像的显示问题。

内容

安装程序: epdfview

安装库: None

安装目录: /usr/share/epdfview

简单描述

epdfview 是一个Gtk+-2程序,用于查看PDF文档。

50.3 fop-2.8


简介fop

FOP(格式化对象处理器)包包含一个由XSL格式化对象(XSL-FO)驱动的打印格式化程序。它是一个Java应用程序,读取格式化对象树并将结果页面呈现给指定的输出。目前支持的输出格式包括PDF、PCL、PostScript、SVG、XML(区域树表示)、print、AWT、MIF和ASCII文本。主要输出目标是PDF。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

必要额外下载:

推荐包

fop 依赖

必要

apache-ant-1.10.13

可选

a graphical environment (运行测试), JAI Image I/O Tools, 和 JEuclid

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/fop

安装fop

确保在开始构建之前正确设置$JAVA_HOME。要构建JIMI SDK和/或XMLUnit扩展类,请确保可以通过CLASSPATH环境变量找到相应的.jar文件。

安装OFFO连字符模式

运行以下命令将XML连字符模式复制到fop源代码树中:

unzip ../offo-hyphenation.zip &&
cp offo-hyphenation/hyph/* fop/hyph &&
rm -rf offo-hyphenation

安装一个临时的Maven二进制文件

从fop-2.5开始,Maven构建系统是必需的。我们使用apache提供的二进制文件,我们将其安装在一个临时位置:

tar -xf ../apache-maven-3.8.6-bin.tar.gz -C /tmp

安装fop组件

与OpenJDK 10及更高版本一起发布的javadoc命令在源代码中的javadoc注释与HTML的一致性方面比以前的版本要严格得多。FOP文档不符合这些标准,因此必须禁用一致性检查。这可以用下面的命令来完成:

sed -i '\@</javad@i\
<arg value="-Xdoclint:none"/>\
<arg value="--allow-script-in-comments"/>\
<arg value="--ignore-source-errors"/>' \
    fop/build.xml

build.xml文件调用不再可用的旧版本PDFBox组件。将更新后的PDFBox组件复制到源代码树中:

cp ../{pdf,font}box-2.0.27.jar fop/lib

运行以下命令编译fop:

cd fop &&

LC_ALL=en_US.UTF-8                     \
PATH=$PATH:/tmp/apache-maven-3.8.6/bin \
ant all javadocs &&

mv build/javadocs .

这个包附带了一个测试套件,但是本书中安装的java基础设施不允许运行它。

现在,以root用户安装Fop:

install -v -d -m755 -o root -g root          /opt/fop-2.8 &&
cp -vR build conf examples fop* javadocs lib /opt/fop-2.8 &&
chmod a+x /opt/fop-2.8/fop                                &&
ln -v -sfn fop-2.8 /opt/fop

最后要做的是清理我们做过的事情:

rm -rf /tmp/apache-maven-3.8.6

命令解释

sed -i … build.xml: 这为javadoc命令添加了三个开关,防止在构建文档时发生一些错误。

export LC_ALL=en_US.UTF-8: 如果使用ASCII语言环境,编译器将失败。

ant target: 这将读取build.xml文件并构建目标:compile编译java源代码,jar-main生成jar存档,jar-hyphenation生成FOP的连字符模式,junit运行junit测试,javadocs构建文档。all目标运行上述所有内容。

ln -v -sf fop-2.8 /opt/fop: 这是可选的,它创建了一个方便的符号链接,这样$FOP_HOME就不必在每次包版本更改时都更改。

配置 fop

配置文件

~/.foprc

配置信息

使用fop来处理一些大的FO(包括从BLFS XML源派生的FO)可能会导致内存错误。除非你在fop脚本中使用的java命令中添加一个参数,否则你可能会收到类似于下面所示的消息:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

为了避免这样的错误,您需要向fop脚本中使用的java命令传递一个额外的参数。这可以通过创建一个~/.foprc(由fop脚本提供)并将参数添加到FOP_OPTS环境变量中来实现。

fop脚本查找一个FOP_HOME环境变量来定位fop类库。您也可以使用~/.foprc文件创建这个变量。使用以下命令创建一个~/.foprc文件:

cat > ~/.foprc << "EOF"
FOP_OPTS="-Xmx<RAM_Installed>m"
FOP_HOME="/opt/fop"
EOF

<RAM_Installed>替换为表示计算机中安装的RAM数量的数字(以兆字节为单位)。一个例子是FOP_OPTS="-Xmx768m"

要在路径中包含fop脚本,以root用户使用以下命令更新系统级配置文件:

cat > /etc/profile.d/fop.sh << "EOF"
# Begin /etc/profile.d/fop.sh

pathappend /opt/fop

# End /etc/profile.d/fop.sh
EOF

注意

运行fop可能有点冗长。默认的日志级别可以从INFO更改为FINEST、FINER、FINE、CONFIG、INFO、WARNING、SEVERE、ALL或OFF中的任何一个。要做到这一点,编辑$JAVA_HOME/jre/lib/logging.properties并将条目更改为.leveljava.util.logging.ConsoleHandler.level到所需的值。

内容

安装程序: fop

安装库: fop.jar 以及位于 /opt/fop/{build,lib} 中的许多支持库类; JAI组件包括 libmlib_jai.so, jai_codec.jar, jai_core.jar, 和 mlibwrapper_jai.jar

安装目录: /opt/fop-2.8

简单描述

fopjava命令的包装器脚本,该脚本设置fop环境并传递所需的参数。

fop.jar 包含所有顶级Java类。

50.4 MuPDF-1.21.1


简介MuPDF

MuPDF是一个轻量级的PDF和XPS查看器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

MuPDF 依赖

必要

GLU-9.0.2Xorg Libraries

推荐

HarfBuzz-7.0.0, libjpeg-turbo-2.1.5.1, OpenJPEG-2.5.0, 和 cURL-7.88.1

可选

xdg-utils-1.1.3 (运行时), jbig2dec, 和 MuJS

必要 (运行时)

a graphical environment

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/mupdf

安装MuPDF

首先,修复Makefile与共享库的正确链接:

sed -i '/MU.*_EXE. :/{
        s/\(.(MUPDF_LIB)\)\(.*\)$/\2 | \1/
        N
        s/$/ -lmupdf -L$(OUT)/
        }' Makefile

运行以下命令安装MuPDF:

cat > user.make << EOF &&
USE_SYSTEM_FREETYPE := yes
USE_SYSTEM_HARFBUZZ := yes
USE_SYSTEM_JBIG2DEC := no
USE_SYSTEM_JPEGXR := no # not used without HAVE_JPEGXR
USE_SYSTEM_LCMS2 := no # need lcms2-art fork
USE_SYSTEM_LIBJPEG := yes
USE_SYSTEM_MUJS := no # build needs source anyway
USE_SYSTEM_OPENJPEG := yes
USE_SYSTEM_ZLIB := yes
USE_SYSTEM_GLUT := no # need freeglut2-art fork
USE_SYSTEM_CURL := yes
USE_SYSTEM_GUMBO := no
EOF

export XCFLAGS=-fPIC                               &&
make build=release shared=yes                      &&
unset XCFLAGS

这个包没有附带测试套件。

现在,作为root用户:

make prefix=/usr                        \
     shared=yes                         \
     docdir=/usr/share/doc/mupdf-1.21.1 \
     install                            &&

chmod 755 /usr/lib/libmupdf.so          &&
ln -sfv mupdf-x11 /usr/bin/mupdf

命令解释

ln -sfv mupdf-x11 /usr/bin/mupdf : 这个符号链接在运行mupdf时选择mupdf-glmupdf-x11

内容

安装程序: mupdf (符号链接), mupdf-gl, mupdf-x11, mupdf-x11-curl, muraster, 和 mutool

安装库: libmupdf.so

安装目录: /usr/include/mupdf, /usr/share/doc/mupdf-1.21.1

简单描述

mupdf 是一个程序,用于查看PDF, XPS, EPUB, 和 CBZ文档,以及各种图像格式,如PNG, JPEG, GIFF, 和 TIFF。

mupdf-glmupdf相同,使用opengl渲染器。

mupdf-x11mupdf相同,使用X窗口渲染器。

muraster 是一个用于对PDF文档执行栅格化任务的程序。

mutool 是一个对PDF文件执行各种操作的程序,如合并和清理PDF文档。

libmupdf.so 包含mupdf API函数。

50.5 paps-0.7.1


简介paps

paps是一个通过Pango工作的文本到PostScript转换器。它的输入是一个UTF-8编码的文本文件,并输出矢量化的PostScript。它可用于打印Pango支持的任何复杂脚本。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

paps 依赖

必要

Pango-1.50.12

可选

Doxygen-1.9.6

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/Paps

安装paps

运行以下命令安装paps:

./configure --prefix=/usr --mandir=/usr/share/man &&
make

这个包没有附带测试套件。

现在,作为root用户:

make install

内容

安装程序: paps

安装库: None

安装目录: None

简单描述

paps 是一个支持UTF-8字符编码的文本到PostScript转换器。

上一页      主目录      下一页