java自带有打印的支持,在javax.print包里
典型的应用程序使用 Java Print Service API 执行以下步骤来处理打印请求:
选择一个 DocFlavor。
创建一个属性集。
找到一个可处理由 DocFlavor 和属性集所指定的打印请求的 PrintService。
创建一个 Doc 对象,该对象封装 DocFlavor 和实际的打印数据,这些打印数据可采用很多形式,包括:Postscript 文件、JPEG 图像、URL 或纯文本。
从 PrintService 获得一个由 DocPrintJob 表示的 PrintJob。
调用 PrintJob 的 print 方法。
以下代码示例说明了 Java Print Service API 的典型用法:找到可在 A4 大小的纸张上打印 5 份 Postscript 文档双面副本的打印机、根据某个返回的 PrintService 创建 PrintJob 并调用 print 方法。
FileInputStream psStream
try {
psStream = new FileInputStream("file.ps")
} catch (FileNotFoundException ffne) {
}
if (psStream == null) {
return
}
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.POSTSCRIPT
Doc myDoc = new SimpleDoc(psStream, psInFormat, null)
PrintRequestAttributeSet aset =
new HashPrintRequestAttributeSet()
aset.add(new Copies(5))
aset.add(MediaSize.A4)
aset.add(Sides.DUPLEX)
PrintService[] services =
PrintServiceLookup.lookupPrintServices(psInFormat, aset)
if (services.length >0) {
DocPrintJob job = services[0].createPrintJob()
try {
job.print(myDoc, aset)
} catch (PrintException pe) {}
}
jni 是由Java调用C/C++的动态链接库 (DLL)。所以把.class-->.h-->dll ,想法是不正确的,
同时也违背了Jni的初衷。
Dll是由C/C++生成的。
以前的一个项目用到了Java调用C/C++的DLL,所以对这个还算熟悉。
那个dLL是由C++程序员写的,在Microsoft Visual C++ 6.0编辑器中可以生成。然后由Java程序员用JNI来调用DLL里面实现的功能(方法)。