<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Soul Of Free Loop &#187; PDF</title>
	<atom:link href="https://zohead.com/archives/tag/pdf/feed" rel="self" type="application/rss+xml" />
	<link>https://zohead.com</link>
	<description>Uranus Zhou&#039;s Blog</description>
	<lastBuildDate>Sat, 19 Jul 2025 15:42:46 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8</generator>
	<item>
		<title>有关Raspberry Pi 32位framebuffer的问题</title>
		<link>https://zohead.com/archives/raspberry-pi-32bit-fb-color/</link>
		<comments>https://zohead.com/archives/raspberry-pi-32bit-fb-color/#comments</comments>
		<pubDate>Wed, 17 Oct 2012 14:55:03 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[树莓派]]></category>
		<category><![CDATA[16位]]></category>
		<category><![CDATA[32位]]></category>
		<category><![CDATA[fbpdf]]></category>
		<category><![CDATA[framebuffer]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[XBMC]]></category>
		<category><![CDATA[颜色]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=321</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/raspberry-pi-32bit-fb-color/ 之前写过一篇 Raspberry Pi（以下简称 RPI） 下使用 fbpdf 即 framebuffer 模式下的 PDF 阅读器的文章（详情请点击 [这里]），文中提到需要修改 config.txt 开启 RPI 的 32 位 framebuffer 支持，但需要注意的是 RPI 的 32 位 framebuffer 并不是真正的 32 位的，其实只有 20120615 种颜色，而且实际上还需要忽略 alpha 位，这在使用 fbpdf 软件看 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/raspberry-pi-32bit-fb-color/" target="_blank">https://zohead.com/archives/raspberry-pi-32bit-fb-color/</a></p>
<p>之前写过一篇 Raspberry Pi（以下简称 RPI） 下使用 fbpdf 即 framebuffer 模式下的 PDF 阅读器的文章（详情请点击 [<a href="https://zohead.com/archives/raspberry-pi-fbpdf/" target="_blank">这里</a>]），文中提到需要修改 config.txt 开启 RPI 的 32 位 framebuffer 支持，但需要注意的是 RPI 的 32 位 framebuffer 并不是真正的 32 位的，其实只有 20120615 种颜色，而且实际上还需要忽略 alpha 位，这在使用 fbpdf 软件看 PDF 时似乎没有太大的问题。</p>
<p>但今天用看图的软件看一张 32 位的桌面截图时，有点傻眼了，效果如下：</p>
<p><a href="http://zohead.com/wp-content/uploads/raspberry-pi-32bit-fb-color-error.jpg" target="_blank"><img class="alignnone" title="Raspberry Pi 32位framebuffer颜色错误" src="http://zohead.com/wp-content/uploads/raspberry-pi-32bit-fb-color-error.jpg" alt="Raspberry Pi 32位framebuffer颜色错误" width="492" height="276" /></a></p>
<p>大家也能看出来，其实这就是 Windows 7 默认的浅蓝色桌面壁纸图片，但实际的显示颜色完全不对了，而去掉 config.txt 中的 32 位 framebuffer 支持则没问题。</p>
<p>另外据 RPI 上 XBMC 媒体中心软件 Raspbmc 的开发人员介绍，32 位的 framebuffer 下 XBMC 软件也会存在问题，由此看来 RPI 默认将 framebuffer 的颜色深度设置为 16 位是有其道理的。</p>
<p>上面的 fbpdf 文章中的 fbpdf 程序已经更新为 16 位 framebuffer 的版本，如果对此有不同见解的欢迎提出指正哦。 ^_^</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/raspberry-pi-32bit-fb-color/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Raspberry Pi framebuffer PDF阅读器 - fbpdf</title>
		<link>https://zohead.com/archives/raspberry-pi-fbpdf/</link>
		<comments>https://zohead.com/archives/raspberry-pi-fbpdf/#comments</comments>
		<pubDate>Tue, 09 Oct 2012 17:24:07 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[树莓派]]></category>
		<category><![CDATA[fbpdf]]></category>
		<category><![CDATA[framebuffer]]></category>
		<category><![CDATA[mupdf]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[Raspbian]]></category>
		<category><![CDATA[Wheezy]]></category>
		<category><![CDATA[X11]]></category>
		<category><![CDATA[编译]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=307</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/raspberry-pi-fbpdf/ 最近拷了几个 PDF 电子书到 Raspberry Pi 树莓派小主板系统上，准备小充下电，结果在 Debian Wheezy Raspbian 的 Linux X11 系统下用以前用的 xpdf 软件看 PDF 的不爽：由于 Raspberry Pi 的 CPU 是 ARMv6 700MHz 的，性能一般，而且内存只有 256MB，所以跑 Linux X11 虽然没什么问题，但老感觉看大一点的 PDF 有点拖顿。 后来装了比较小巧的 mupdf 软件（Raspbi [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/raspberry-pi-fbpdf/" target="_blank">https://zohead.com/archives/raspberry-pi-fbpdf/</a></p>
<p>最近拷了几个 PDF 电子书到 Raspberry Pi 树莓派小主板系统上，准备小充下电，结果在 Debian Wheezy Raspbian 的 Linux X11 系统下用以前用的 xpdf 软件看 PDF 的不爽：由于 Raspberry Pi 的 CPU 是 ARMv6 700MHz 的，性能一般，而且内存只有 256MB，所以跑 Linux X11 虽然没什么问题，但老感觉看大一点的 PDF 有点拖顿。</p>
<p>后来装了比较小巧的 mupdf 软件（Raspbian 系统的话直接用 <strong>apt-get install mupdf</strong> 命令就可以安装）之后在 X11 环境下看 PDF 电子书似乎情况好了很多，mupdf 功能很简单，甚至都没有独立的启动方式，直接双击 PDF 文件运行，或者通过命令行方式运行，主界面也没有工具栏之类的多余东西，操作全部键盘来完成，浏览 PDF 的速度也很快，对中文支持也很好。关于 mupdf 的介绍请参考其官网：<a href="http://www.mupdf.com/" target="_blank">http://www.mupdf.com/</a>。</p>
<p>后来想到平时用 Raspberry Pi 主要还是用命令行模式，我对 Linux X11 一向比较反感 ^_^，感觉是不是可以直接用 framebuffer 的形式看 PDF，结果还真找到一个 fbpdf 软件。</p>
<p>fbpdf 是基于 mupdf 的代码基础上实现的纯 framebuffer 下的 PDF 阅读器，和 mupdf 的功能基本相当，用这个可以省去 X11 和 GTK+ 等一堆臃肿的玩意，在 framebuffer 上看不仅速度快而且占用内存也小，并且可以充分利用 Raspberry Pi 上 framebuffer 的硬件加速。但不幸的是 Raspberry Pi 的 Raspbian 源中没有 fbpdf 包，看来只能自己编译了。</p>
<p>fbpdf 的 Git 版本库地址（可以直接用 git clone 命令弄下来哦）：</p>
<p><a href="http://repo.or.cz/w/fbpdf.git" target="_blank">http://repo.or.cz/w/fbpdf.git</a></p>
<p>首先到 mupdf 官网下载 mupdf 源代码和 mupdf-thirdparty 第三方程序的源代码：</p>
<p><a href="http://www.mupdf.com/download/mupdf-1.1-source.tar.gz" target="_blank">http://www.mupdf.com/download/mupdf-1.1-source.tar.gz</a><br />
<a href="http://www.mupdf.com/download/mupdf-thirdparty.zip" target="_blank">http://www.mupdf.com/download/mupdf-thirdparty.zip</a></p>
<p>需要说明的是我的编译环境是 armhf 的 Raspbian 默认开发环境。编译 mupdf 之前需要先安装 libfreetype6-dev、libjbig2dec0-dev、libjpeg8-dev 等开发软件包。mupdf 编译安装好之后会产生 fitz 库的头文件和静态库文件 libfitz.a，libfitz.a 在编译 fbpdf 时需要用到。</p>
<p>特别需要注意的是 mupdf 和 fbpdf 使用的是修改过的 openjpeg-1.5.0 版本的 openjpeg 库，不能直接使用 Raspbian 系统中的 libopenjpeg2 库，因此需要先编译 mupdf-thirdparty 中的 openjpeg-1.5.0 库，为了防止和 Raspbian 默认的 openjpeg 库冲突，建议将 openjpeg-1.5.0 库安装到自定义的目录（非 /usr/lib、/usr/local/lib 等系统默认使用的目录），然后编译 fbpdf 时直接使用 openjpeg-1.5.0 产生的静态库文件 libopenjpeg.a。</p>
<p>在 Raspberry Pi 编译 fbpdf 时会有一些小报错，需要修改下代码和 Makefile，编译 fbpdf 时由于要使用 libfitz.a 静态库，因此生成的 fbpdf 可执行文件也会比较大（我编译产生的将近 6MB）。</p>
<p>在 Raspbian 系统的默认 framebuffer 文本终端下运行 <strong>fbpdf /home/xxx.pdf</strong> （/home/xxx.pdf 为 PDF 文件的路径）就可以查看 PDF 文件了，你的 Raspberry Pi 在用 fbpdf 打开 PDF 时很可能会遇到这个错误直接退出：<span style="color: #0000ff;">fbpdf: fbval_t doesn't match fb depth</span>。</p>
<p><strong><span style="text-decoration: underline;">简单说明下这个错误的原因：</span></strong></p>
<p>fbpdf 程序中默认使用的 framebuffer 颜色数（BPP）是 32 位的，但 Raspberry Pi 默认的 framebuffer 只使用 16 位颜色（也就是下面的 framebuffer_depth 默认为 16），这样 fbpdf 程序运行时检查 framebuffer 参数发现不匹配就会报上面的错误，我尝试过跳过这项检查可以不报错，但 PDF 文件的显示渲染效果相当差。</p>
<p><strong><span style="text-decoration: underline;">解决方法也是必须要有的：</span></strong></p>
<p>注意：不建议使用此方法，建议直接使用最下面的 16 位 framebuffer 版本。</p>
<p><del>打开启动分区下的 config.txt 配置文件（路径为：<strong>/boot/config.txt</strong>），加入下面两行然后重启系统就可以解决：</del></p>
<p><del><em><span style="color: #008000;">framebuffer_depth=32</span></em><br />
<em><span style="color: #008000;">framebuffer_ignore_alpha=1</span></em></p>
<p></del></p>
<p><del>第一行 framebuffer_depth=32 指定 Raspberry Pi 的 framebuffer 使用 32 位颜色，第二行 framebuffer_ignore_alpha=1 是在使用 32 位颜色时才需要指定的，表示忽略 ARGB 颜色中的 alpha 通道。需要说明的是即使 config.txt 配置文件中指定了使用 32 位实际上也只有 20120615 种颜色的哦，不过对使用上没有影响的。</del></p>
<p>有关 Raspberry Pi 的 config.txt 配置文件的详细说明请参考这里：<a href="http://elinux.org/RPi_config.txt" target="_blank">http://elinux.org/RPi_config.txt</a>。</p>
<p>把上面的配置文件修改好重启之后，下面是用我编译好的 fbpdf 程序查看一个 5MB 的 PDF 电子书的截图，在 Raspberry Pi 这样的微型板上速度是相当之快的：</p>
<p><a href="http://zohead.com/wp-content/uploads/fbpdf-raspberry-pi.jpg"><img class="alignnone" title="fbpdf on Raspberry Pi" src="http://zohead.com/wp-content/uploads/fbpdf-raspberry-pi.jpg" alt="fbpdf on Raspberry Pi" width="546" height="307" /></a></p>
<p>从截图中可以看到图片和中文都是可以正常显示的哦。</p>
<p>framebuffer 模式下的 fbpdf 也是全部通过键盘操作，不过快捷键和 mupdf 是不同的，将常用的快捷键简单介绍如下（注意是 J、K 等单按键是区分大小写的哦），大多数快捷键都可以在前面加数字指定次数之类的（深得 VI 的精髓啊，哈哈）。具体请参考 fbpdf 代码中的 README 说明文档：</p>
<table style="background-color: #858585;" width="400" border="0" cellspacing="1" cellpadding="0">
<tbody>
<tr>
<td style="color: #ffffff; font-weight: bold;" width="120">快捷键</td>
<td style="color: #ffffff; font-weight: bold;">操作</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">Ctrl + F 或 J</td>
<td style="background-color: #e7e7e7;">下一页（5J 跳至下面第 5 页，6J 类推）</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">Ctrl + B 或 K</td>
<td style="background-color: #e7e7e7;">上一页</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">G</td>
<td style="background-color: #e7e7e7;">跳到具体某页，G 前面没有数字则跳到最后一页</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">z</td>
<td style="background-color: #e7e7e7;">按 10% 的倍数放大（15z 为放大到 150%）</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">i</td>
<td style="background-color: #e7e7e7;">显示 PDF 文件信息</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">q</td>
<td style="background-color: #e7e7e7;">退出 fbpdf</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">j</td>
<td style="background-color: #e7e7e7;">向下滚动（不自动翻页）</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">k</td>
<td style="background-color: #e7e7e7;">向上滚动（不自动翻页）</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">h</td>
<td style="background-color: #e7e7e7;">向左滚动（不自动翻页）</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">l</td>
<td style="background-color: #e7e7e7;">向右滚动（不自动翻页）</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">Ctrl + L</td>
<td style="background-color: #e7e7e7;">重新绘制</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">e</td>
<td style="background-color: #e7e7e7;">重新加载当前 PDF 文件</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">f</td>
<td style="background-color: #e7e7e7;">适合高度</td>
</tr>
<tr>
<td style="background-color: #e7e7e7;">w</td>
<td style="background-color: #e7e7e7;">适合宽度</td>
</tr>
</tbody>
</table>
<p>不想自己费劲去修改编译的朋友欢迎下载我已经编译好的 fbpdf 单文件程序：</p>
<p><del>http://miseal.googlecode.com/files/fbpdf-raspberry-pi-v20121009.7z</del></p>
<p><strong><span style="text-decoration: underline; color: #ff0000;">2012.10.17 更新：</span></strong></p>
<p>将近发现 Raspberry Pi 的 32 位 framebuffer 存在颜色显示不完全的问题，建议使用下面的使用 16 位 framebuffer 的 fbpdf 程序，运行也非常好（上面的不建议使用，config.txt 中也不需要改成 32 位了）：</p>
<p><a href="http://miseal.googlecode.com/files/fbpdf-raspberry-pi-v20121016.7z" target="_blank">http://miseal.googlecode.com/files/fbpdf-raspberry-pi-v20121016.7z</a></p>
<p>运行此 fbpdf 程序需要先安装 libfreetype6、libjbig2dec0、libjpeg8 等软件包（apt-get install 直接安装就行的）。</p>
<p>此 fbpdf 程序是我自己修改编译的，我编译时网上尚无其它人在 Raspberry Pi framebuffer 下使用过 fbpdf 软件，使用中有任何问题欢迎提出指正哦，玩的开心 ^_^</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/raspberry-pi-fbpdf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
