Ghostscript的介绍和移植

2023-05-16

               

        关于ghostscript(以下简称gs)。Gs是一个地下工作者,一般用户不熟悉它,因为它上不和用户直接打交道,下不直接接触打印机。但是在打印工作中它却扮演了极为重要的解色。

        一般从用户常见文件如图片或者word到打印机经过这么几套工序,以word为例子:

Doc -> 中间文件(如pdf,以前是postscript)->打印机语言(如:PCL)->打印机

        Gs所做的工作就是将中间文件转化为适应各种打印机的打印机语言(或者叫光栅文件)。然后将该文件发送给打印机,打印机将光栅文件打印到纸张上,就是一次完整的打印过程。

        我使用两个版本的gs有8.15和9.04,前者静态编译出来4M大小,后者是16M大小。前者是打印文字需要装字库,但是后者不需要。前者对PDF的处理不是太完善,其实也可以理解,8.15版本是2004年发布的,而9.04是2011年发布的。所以这个只给出9.04版本的编译脚本:

#!/bin/sh#author kangear#date   2014.05.08#build  ghostscript9.00#print PDF return code "0" not "1", Fix 8.15 return "1"DESTDIR=${PWD}/_install# 1. download sourcewget http://iweb.dl.sourceforge.net/project/ghostscript/GPL%20Ghostscript/9.04/ghostscript-9.04.tar.bz2 &&# 2.解压源码tar xvjf ghostscript-9.04.tar.bz2  &&# 3.分别拷贝为PC版本和ARM版本cp ghostscript-9.04 ghostscript-9.04-arm -r && mv ghostscript-9.04 ghostscript-9.04-pc  &&# 4.编译PC版本cd ghostscript-9.04-pc && ./configure && make XCFLAGS=-DHAVE_SYS_TIME_H=1  && cd ../ &&# 5.修改Makefile.in中STDLIBS=@PTHREAD_LIBS@ -lm 为STDLIBS=@PTHREAD_LIBS@ -static -lmcd ghostscript-9.04-arm && sed -i '387s/STDLIBS=@PTHREAD_LIBS@ -lm/STDLIBS=@PTHREAD_LIBS@ -static -lm/' ./Makefile.in &&# *5.1. 修定/tmp目录sed -i '74s/"\/tmp\/"/"\/data\/misc\/printer\/tmp\/"/' ./base/gp_unifs.c &&# 6.配置arm版本./configure --host=arm-linux --prefix=/system/usr/ --disable-fontconfig --disable-gtk --disable-cups &&# 7.拷贝PC版本工具test  -d ./obj/aux || mkdir -p obj/aux/ && cp ../ghostscript-9.04-pc/obj/aux/genarch ../ghostscript-9.04-pc/obj/aux/genconf ../ghostscript-9.04-pc/obj/aux/echogs ../ghostscript-9.04-pc/obj/aux/mkromfs ./obj/aux/  &&# 8.编译make XCFLAGS=-DHAVE_SYS_TIME_H=1 || cp ../ghostscript-9.04-pc/obj/aux/mkromfs ./obj/aux/  &&make XCFLAGS=-DHAVE_SYS_TIME_H=1 &&# 9.安装make install DESTDIR=${DESTDIR}# 10.rm -rf ${DESTDIR}/system/usr/share/ghostscript/9.04/docrm -rf ${DESTDIR}/system/usr/share/ghostscript/9.04/examplescd ${DESTDIR}/system/usr/bin && rm -f !(gs) && cd - &&cd ${DESTDIR}/ && tar cvzf gs904.tar.gz system/

     注意gs的启动需要${TEMPDIR}(一般是/tmp目录),但是Android中没有/tmp目录所以就启动不了,要像脚本中修改/tmp目录或者在Android系统根目录中建立tmp目录。

可以直接将输出到打印机的设备节点,但是也可以只生成PCL文件,通过其它方式传送到打印机,这里基于hpijs来生成PCL文件。例如:

gs -sDEVICE=ijs -sIjsServer=hpijs -dIjsUseOutputFD -sDeviceManufacturer="HEWLETT-PACKARD" -sDeviceModel="deskjet 5550" -r300x300 -dNOPAUSE -dSAFER -sstdout=%stderr -sOutputFile=%stdout  test.pdf > pcl3gui.bin

会将test.pdf文件生成pcl3gui格式的PCL文件。无论通过什么方式将其传送到打印机都可以实现打印机test.pdf文件内容。

    文章写的草率了。暂就这样结束了。还要赶着研究其它内容。



           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ghostscript的介绍和移植 的相关文章

随机推荐

  • 《一》初识NB-IoT(NB-IoT背景,简介,标准化过程,技术优势,与其他无线技术对比)

    初识NB IoT 时间 xff1a 2018 11 27 一 背景 物联网的无线通信技术种类繁多 xff0c 大致可以归为两大类 xff1a 一类是短距离通信技术 xff1a 包括Zigbee WiFi 蓝牙等 xff1b 另一类则被称为广
  • 《C Primer Plus 》--C++初识

    向着每天一点c知识进发 学习C 43 43 xff0c 需要先了解C语言的一些知识 xff0c C 43 43 是在C语言高度集成 C 43 43 编程方式 xff1a 融合了三种编程语言 xff0c C语言代表的过程性语言 xff0c 类
  • ubuntu18.04 ros qt开发环境搭建

    开发环境ubuntu18 04 qt5 11 ros melodic 1 从https ros qtc plugin readthedocs io en latest source How to Install Users html qt
  • C++实现视频格式转换PC客户端工具(支持多任务,暂停,断点续转,删除等基本功能)

    在接到这个任务时 xff0c 当时有些懵 xff0c 网上找了很多资料 xff0c 开源项目没有发现与之类似 xff0c 大多都是像迅雷这样子支持多任务下载 xff0c 断点续传 所以现在对于这个个人做个总结方便后期回顾 xff0c 同时对
  • 如何在GitHub上上传自己的项目

    转载 https blog csdn net m0 37725003 article details 80904824
  • C/C++Linux服务器开发 一、磁盘存储链式的B树与B+树

    在前一篇博客中我们分析了 随处可见的红黑树 xff0c 相信大家都有了一定的了解 想了解的朋友可以去上面瞅瞅呢 而今天我们就要介绍适合磁盘存储的B树 b树的介绍 以及性质网上有很多 xff0c 不是很了解得可以先找找 xff0c 要知道B树
  • QWidget指定父类设置样式无效的解决方案

    第一种 xff1a 在派生的类种重写事件 xff0c 并添加下面几段代码 void NEWWidget paintEvent QPaintEvent QStyleOption opt opt init this QPainter p thi
  • Qt局域网聊天(群聊和私聊)

    本次设计是一个简易的局域网聊天 xff0c 功能设计主要分为群聊和私聊两部分 xff0c 每部分都支持基础聊天以及文件传输功能 参考了 Qt及Qt Quick开发实战精解 中群聊实例 xff0c 在群聊的基础设计了私聊这部分内容以及其他一些
  • 基于Qt、FFMpeg的音视频播放器设计一(准备环境)

    前言 xff1a 整个项目的源代码 https download csdn net download hfuu1504011020 10672140 最近刚完成基于Qt FFMpeg的音视频播放器相关C 43 43 程序 xff0c 实现了
  • 基于Qt、FFMpeg的音视频播放器设计二(FFMpeg视频处理)

    在上一篇中我们介绍了如何在VS2013中配置文件以及FFMpeg的开发环境准备 xff0c 本篇我们说下视频处理的原理以及实现 对于视频的处理我们这里对它分开总结 xff0c 不然看起来会显得很冗余复杂 xff0c 不易理解 主要分为以下几
  • 基于Qt、FFMpeg的音视频播放器设计三(Qt界面设计及OpenGL绘制视频)

    本部分总结了一下界面绘制和OpenGL绘制视频 xff0c 由于使用的是Qt的openGL xff0c 功能上没有那么复杂 xff0c 实现起来也比较简单 xff0c 毕竟人家已经给封好的 xff0c 完整的代码中使用OpenGL绘制视频
  • 基于Qt、FFMpeg的音视频播放器设计四(视频播放进度控制)

    上面介绍了如何使用opengl绘制视频和Qt的界面设计 xff0c 也比较简单 xff0c 现在我们看下如何控制视频播放及进度的控制 xff0c 内容主要分为以下几个部分 1 创建解码线程控制播放速度 2 通过Qt打开外部视频 3 视频总时
  • VS2008中Unicode编码转UTF-8编码

    今天在pc客户端传数据 Json格式 给服务端时 在存储到数据库 Mysql 时总是出现乱码现象 xff0c 使用的是http协议 xff0c 以及json的解码 后一篇说明 这里我们先说下转码 在vs2008中编码方式有Unicode编码
  • 串口显示乱码的原因总结

    分享一下我老师大神的人工智能教程 xff01 零基础 xff0c 通俗易懂 xff01 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 xff0c 造福人民 xff0c 实现我们中华民族伟大
  • Linux出现Input/output error

    分享一下我老师大神的人工智能教程 xff01 零基础 xff0c 通俗易懂 xff01 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 xff0c 造福人民 xff0c 实现我们中华民族伟大
  • 错误 expected '}' before ' ' token

    分享一下我老师大神的人工智能教程 xff01 零基础 xff0c 通俗易懂 xff01 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 xff0c 造福人民 xff0c 实现我们中华民族伟大
  • 浅谈C语言中的布尔(bool)类型

    分享一下我老师大神的人工智能教程 xff01 零基础 xff0c 通俗易懂 xff01 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 xff0c 造福人民 xff0c 实现我们中华民族伟大
  • C++类成员空间分配和虚函数表

    C 43 43 类成员空间分配和虚函数表 xff0c 非常详细的一篇文章 xff0c 受益匪浅 https www cnblogs com secondtonone1 p 7205108 html utm source 61 itdadao
  • 外部时钟与内部时钟区别 作用 使用条件

    分享一下我老师大神的人工智能教程 xff01 零基础 xff0c 通俗易懂 xff01 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 xff0c 造福人民 xff0c 实现我们中华民族伟大
  • Ghostscript的介绍和移植

    关于ghostscript 以下简称gs Gs是一个地下工作者 xff0c 一般用户不熟悉它 xff0c 因为它上不和用户直接打交道 xff0c 下不直接接触打印机 但是在打印工作中它却扮演了极为重要的解色 一般从用户常见文件如图片或者wo