基于虚拟打印的PDF文档归档探索

在很多情况下需要把各种可视的文档如html,word等可打印的文件
转成PDF格式的文件进行保存。因为PDF的具有跨平台性,不可编辑(除用特殊的编辑器),方便加密,加水印,数字签名等特点。
目前的各种主流编程语言如java,.net等都提供了相关的api进行PDF的创建及导出,格式转换,就java语言来说有很多种如itext,yahp,pdfbox等,
但没有那一种技术或者组件能很好的针对不同原始格式的文档进行转换,同时由于在某些情况下,用户对转换后的格式有严格的要求,即转换后的PDF要与原始可视的一致,与
纸张打印的格式效果一致。同时对转换后PDF格式文件的大小方面也有一定的要求。
因此基于PDF虚拟打印机是最简单和广泛的格式转换方案
目前有很多虚拟打印机可以方便的把格式的文档转成pdf格式,如:adobe pdf printer smartprinter ccconverter等等,还包括许多在线的转换网址。
但虚拟打印机提供都是标准的打印机接口API,在转换过程中需要用户进行参与
如指定转换后pdf文件的保存路径(可以设置默认保存路径),手动输入文件名等,同时还有各种类似的虚拟打印专有的打印参数,这些虚拟打印机参数设置并没有提供编程API,smartprinter说可以提供api,但是收费的。

基于现在进行的项目"电子病历归档",下面针对java平台有如下解决方案:
通过PDFCreator(免费开源)虚拟打印机把任何可打印的文(html,dhtml,world,excel,自定义的格式等)转成PDF。
利用PDFCreator内置的保存后动作选项,执行vb script,在vb scripte中通过Microsoft Internet Transfer Control
上传文件至ftp服务器,ftp文件服务器采用apache ftpserver,在此源代码基础上进行二次开发,采用PDFBox对上传的PDF文档进行内容解析提取关键字,以此关键字对文档进行重命名,同时也可以基于lucene 建立基于内容的全文检索索引的创建。

就电子病历归档系统采用这种方案的优点:
1.数据采集不用其他厂商提供接口,做集成比较方便快捷。
2.保证采集上的PDF文档保持了原有的显示打印格式
3.在收集的同事即可建立全文检索的索引创建,不用在另外启用一个目录监视程序。
4.全部是免费开源软件,可控性强,灵活,且不花钱。

目前在电子病历归档系统中采集病历文档比较普遍的方式如下:

1.虚拟打印:
各个系统虚拟打印到某一目录,然后通过一监控程序监视此目录此情况下同步比较困难,目录监控程序的扫描间隔不好确定,由于无法获取打印机的状态,很多情况下虚拟打印机的PDF文档并未创建完成就被目录监控程序读取,造成读取的文档内容错误。

2.与其他系统做接口:
采用接口方式如(socket,或者webservice)要求其他厂商转换PDF文档并且序列此文档上传到归档系统。
缺点:此种方式要求其他厂商配合性比较高
目前医院系统中电子病历分散在不同的系统中如:PACS,LIS,CIS,EMR,AN)等系统中,各个系统架构(c/s,b/s)与开发语言具有多样性(pb,.net,java),同时文档的格式多样性(html,world,自定义模板文档格式),在各个系统内部转成PDF具有一定的困难性,同时转换后的PDF在压缩比率上也区别很大,经过对比采用虚拟打印机转换的PDF文档一般都是经过很好压缩的且显示效果无损。
综上所述在类似于电子病历归档系统这类的文档采集系统应用中,此种方式具有很大的可行性:
其最大的价值在于系统集成上面,系统集成过渡比较平坦,基本不需要修改任何系统,只要把文档打印到虚拟打印上即可(目前这些系统一般都有打印入口,以把这些文档以纸质的方式来查看保存),而不是要求其他厂商配合,利于系统的快速上线,由于全部采用开源的组件,在系统灵活性和费用方面有很大的优点。
======附注
1.PDFCreator下载地址:http://sourceforge.net/projects/pdfcreator/

2. 基于Microsoft Internet Transfer Control 的ftp vb脚本:
=============begin=========
' FTP upload script
' Part of PDFCreator
' License: GPL
' Homepage: http://www.sf.net/projects/pdfcreator
' Version: 1.1.0.0
' Date: September, 1. 2005
' Author: Frank Heind鰎fer

Option Explicit

Const AppTitle = "PDFCreator - FTPUpload"

Dim objArgs, fname, domain, user, pass, rdir

domain="127.0.0.1"
rdir="archive"
user="root"
pass="root"

Set objArgs = WScript.Arguments

If objArgs.Count = 0 Then
MsgBox "This script needs a parameter!", vbExclamation, AppTitle
WScript.Quit
End If

fname = objArgs(0)


Call FTPUpload(domain, rdir, user, pass, fname)

Private Sub FTPUpload(domain, rdir, user, pass, fname)
Dim fso, ftpo
Set fso = CreateObject("Scripting.FileSystemObject")
Set ftpo = CreateObject("InetCtls.Inet.1")
ftpo.URL = "ftp://" & domain
ftpo.UserName = user
ftpo.Password = pass
ftpo.Execute , "CD " & rdir

Do
WScript.Sleep 100
Loop while ftpo.StillExecuting

ftpo.Execute , "Put """ & fname & """ """ & fso.GetFilename(fname) & """"

Do
WScript.Sleep 100
Loop while ftpo.StillExecuting

ftpo.Execute , "Close"
End Sub
=============end=========
福昕PDF虚拟打印机是一种虚拟打印机软件,可以将电子文档、网页、图像等文件转换成PDF格式的文件。它是由福昕软件公司开发的一款功能强大、操作简便的虚拟打印机软件。 使用福昕PDF虚拟打印机,用户只需将需要转换的文件选择打印,并选择福昕PDF虚拟打印机作为打印机设备,然后设置输出的文件路径和名称即可。在转换的过程中,福昕PDF虚拟打印机会将文件按照用户的设置转换成高质量的PDF文件。同时,用户还可以通过设置转换选项,如调整图像质量、选择输出的页面范围、添加水印等来满足个性化的需求。 福昕PDF虚拟打印机除了能够将文件转换成PDF格式外,还支持其他一些辅助功能。例如,用户可以将多个文件合并成一个PDF文件,可以设置文件的安全性,如密码保护和权限控制,以保护文档的安全性。 福昕PDF虚拟打印机在各个领域都得到了广泛应用。在办公场景中,它可以帮助用户将各种文档格式转换成统一的PDF文件,方便归档和共享。在网页浏览中,它可以将网页保存为完整的PDF文件,方便用户离线阅读和存档。在数字出版领域,福昕PDF虚拟打印机可以将电子书转换成PDF格式,提供更好的阅读体验。 总之,福昕PDF虚拟打印机是一款实用的虚拟打印机软件,通过简单的操作,用户可以轻松将各种文件转换成高质量的PDF文件,方便共享、存档和阅读。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值