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。
包信息
-
下载 (HTTP): https://ftp.gnu.org/gnu/enscript/enscript-1.6.6.tar.gz
-
下载 (FTP): ftp://ftp.gnu.org/gnu/enscript/enscript-1.6.6.tar.gz
-
下载 MD5 校验和: 3acc242b829adacabcaf28533f049afd
-
下载大小: 1.3 MB
-
预计所需磁盘空间: 14 MB
-
预计构建时间: 0.1 SBU
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
简单描述
diffpp 将diff输出文件转换为适合用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平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://anduin.linuxfromscratch.org/BLFS/epdfview/epdfview-0.1.8.tar.bz2
-
下载 MD5 校验和: e50285b01612169b2594fea375f53ae4
-
下载大小: 456 KB
-
预计所需磁盘空间: 6 MB
-
预计构建时间: 小于 0.1 SBU
额外下载
ePDFView 依赖
必要
GTK+-2.24.33 和 Poppler-23.02.0
推荐 (主要用于桌面环境)
desktop-file-utils-0.26 和 hicolor-icon-theme-0.17
可选
用户笔记: 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平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://archive.apache.org/dist/xmlgraphics/fop/source/fop-2.8-src.tar.gz
-
下载 MD5 校验和: 610bfd7797755d744b2c4f61422478cf
-
下载大小: 22 MB
-
预计所需磁盘空间: 517 MB (包括下载到用户目录的文件)
-
预计构建时间: 0.6 SBU
额外下载
必要额外下载:
-
PDFBox:
https://archive.apache.org/dist/pdfbox/2.0.27/pdfbox-2.0.27.jar
ddd46402b1692eed9e5c73b4a94c45d8
2.7 MB -
PDFBox Fonts:
https://archive.apache.org/dist/pdfbox/2.0.27/fontbox-2.0.27.jar
587744efe2a82d3584c2f3969fa4dca0
1.5 MB -
Maven build system:
https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
0e07de4a7b5c84ebed737a2002f52019
8.3 MB (此外,大约90 MB的文件被下载到building用户的目录中)
推荐包
- 用于格式化对象(OFFO)连字符模式的对象:
https://downloads.sourceforge.net/offo/2.2/offo-hyphenation.zip
bf9c09bf05108ef9661b8f08d91c2336
862 KB
fop 依赖
必要
可选
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并将条目更改为.level和java.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
简单描述
fop 是java命令的包装器脚本,该脚本设置fop环境并传递所需的参数。
fop.jar 包含所有顶级Java类。
50.4 MuPDF-1.21.1
简介MuPDF
MuPDF是一个轻量级的PDF和XPS查看器。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://www.mupdf.com/downloads/archive/mupdf-1.21.1-source.tar.gz
-
下载 MD5 校验和: 62690ebb86e3683d331554433e58c10a
-
下载大小: 55 MB
-
预计所需磁盘空间: 249 MB
-
预计构建时间: 0.2 SBU (使用并行数=4)
MuPDF 依赖
必要
推荐
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
必要 (运行时)
用户笔记: 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-gl 和 mupdf-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-gl 与mupdf相同,使用opengl渲染器。
mupdf-x11 与mupdf相同,使用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平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://downloads.sourceforge.net/paps/paps-0.7.1.tar.gz
-
下载 MD5 校验和: b058bcc7d958fb53408942088cc1f365
-
下载大小: 140 KB
-
预计所需磁盘空间: 1 MB
-
预计构建时间: 小于 0.1 SBU
paps 依赖
必要
可选
用户笔记: 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转换器。