生成pdf的方法多了,最近公司要求大家提供的文件要用pdf格式,一个一个装软件太累,于是做了一个pdf生成的工具给大家使用,方便别人也方便自己。
方法1.命令模式 适用在linux的用户。
安装软件包 ps2pdf 作用是吧ps文件转换成pdf文件。
安装软件包2, paps 或 u2ps 是吧文件转换成ps格式的文件。
或干脆安装一个假的打印机驱动,让打印机驱动为我们转换,这个方法比较好,没有编码的问题。
就是随便找一个打印机驱动,只要有打印机支持PostScript就好了,一般名字里就能体现出来。
安装完这些以后就可以用 ps2pdf input.file output.file来转换了。
paps在有中文的情况下要转换utf编码。
iconv -f gb2312 -t utf8 input.file |paps |ps2pdf - output.pdf
方法2.是在做完方法一的基础上,配置samba.模拟一个打印机,把需要转换的文件转换过来。
samba配置如下:smb.conf
# 在global 段里面指定编码。
dos charset = gb2312
unix charset = gb2312
display charset = gb2312
# 授权可以使用的机器。
hosts allow = 172.16.2. 172.16.1. 127.
security = share
load printers = yes
printing = bsd
; printcap name = /dev/null
; disable spoolss = yes
# 打印机和共享目录设置。
[Create_PDF]
comment = PDF Printers
path = /dev/shm
browseable = yes
guest ok = no
writable = no
printable = yes
print command = /usr/bin/Create_pdf %s
use client driver = yes
lpq command =
lprm command =
[PDF_File]
comment = All PDF File
path = /var/pdf_file
guest ok = yes
writable = yes
share modes = yes
这个配置里面用到了一个 Create_pdf 脚本,如下:
#!/bin/sh
# Variables and Function definition
PATH=$PATH:/sbin:/usr/sbin
PRINTNAME="$(date +%Y%m%d_%H%M)"
OUTDIR=/var/pdf_file
# Program Main
dos2unix /dev/shm/$1
ps2pdf $1 $OUTDIR/$PRINTNAME.pdf
rm -f /dev/shm/$1
如果怕打印的文件太多可以在crontab里加上
01 00 * * * for i in /var/pdf_file/*; do rm -f $i ;done
Windows客户端如果要使用就添加一个网络打印机,随便找一个打印机驱动,只要有打印机支持PostScript就好了,一般名字里就能体现出来。然后打开文档,选打印,选新加入的打印机就可以了。
方法3、这个方法网上介绍的很多,原理同方法2,就是下载一个cups-pdf软件来实现的。
cups-pdf homepage http://www.cups-pdf.de
安装 PDF backend for CUPS
cd /usr/lib/cups/backend
wget ftp://ftp.kde.org/pub/kde/printing/pdfdistiller
mv pdfdistiller pdf
chmod +x pdf
/etc/init.d/cups restart
用 CUPS 网页管理接口新增 PDF 打印机
Name: pdfprinter
Device: PDF Writing
Device URI: pdf:/path/to/dir/ ##这里是保存pdf文件的目录
Make: Postscript
其他使用默认即可
配置 cupsd 和 samba 服务:samba已经有了,这里就列出cupsd的
Order Deny,Allow
Deny From All
Allow From 192.168.1.0/24
AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 192.168.1.0/24
Browsing On
BrowseProtocols cups
BrowseOrder Deny,Allow
Deny From All
BrowseAllow From @LOCAL
Listen 0.0.0.0:631
重新启动cups服务
/etc/init.d/cups restart
以浏览器登入管理:
阅读(1888) | 评论(2) | 转发(0) |