开发过程中遇到的问题
1.虚拟打印机打印的时候保存SPL文件后能解析成TIFF多层图片,而实际打印机比如惠普打印的时候生成的SPL文件就不能解析成图片了,后来比较了下两种打印的状态下生成的SPL文件,发现对于同份文件中用物理打印机(惠普)生成的SPL要比用虚拟打印机(腾讯)的要大的多,而且在程序调试的过程中发现用物理打印机生成的SPL文件的数据格式和用虚拟打印机生成的SPL文件不一样,所以我认为是不是惠普的驱动程序对原始的SPL文件处理了,我想问的是有没有办法让处理过的SPL文件还原为标准的SPL文件?或者直接重某些入口直接获取标准的SPL,好像有看到过替换打印处理器,但是我是一JAVA程序员研究VB才几天所以不明白,希望各位高手能帮助解答 2.监听打印服务的过程中,使用的是c#.net
public void testPrintJob()
{
while (this.bRun)
{
try
{
ManagementClass c = new ManagementClass("Win32_PrintJob");
ManagementObjectCollection co = c.GetInstances();
foreach (ManagementObject m in co)
{
foreach (PropertyData p in m.Properties)
{
Console.WriteLine(p.Name + "--------" + p.Value);
}
string statusMask = m.GetPropertyValue("StatusMask").ToString();
//statusMask为16是正在打印状态,本意是想在打印的时候SPOOL FILE应该已经生成完毕了,然后去获取SPL生成对应的TIFF图片
if (statusMask.Equals("16"))
{ //暂停打印机
m.InvokeMethod("Pause", null);
//将SPL转换为图片,自己写的一个DLL提供图片转换(目前只能转换由虚拟打印机生成的SPL文件)
this.savePic();
break;
}
}
}
catch(Exception e){
e.GetBaseException();
}
}
//this.timer1.Enabled = true;
this.LogMessage("Service Started");
}
在监控的过程中发现StatusMask有时候为8(Spooling),有时候为16(正在打印),有时候为17(正在打印 ¦暂停)。我可以将其转换为2进制然后读取相应的位来判断打印所处的状态,我想是正在打印的状态下SPOOL文件应该是已经填充完毕了是,请问是这样么。还有没有什么更加好的办法?
1.虚拟打印机打印的时候保存SPL文件后能解析成TIFF多层图片,而实际打印机比如惠普打印的时候生成的SPL文件就不能解析成图片了,后来比较了下两种打印的状态下生成的SPL文件,发现对于同份文件中用物理打印机(惠普)生成的SPL要比用虚拟打印机(腾讯)的要大的多,而且在程序调试的过程中发现用物理打印机生成的SPL文件的数据格式和用虚拟打印机生成的SPL文件不一样,所以我认为是不是惠普的驱动程序对原始的SPL文件处理了,我想问的是有没有办法让处理过的SPL文件还原为标准的SPL文件?或者直接重某些入口直接获取标准的SPL,好像有看到过替换打印处理器,但是我是一JAVA程序员研究VB才几天所以不明白,希望各位高手能帮助解答 2.监听打印服务的过程中,使用的是c#.net
public void testPrintJob()
{
while (this.bRun)
{
try
{
ManagementClass c = new ManagementClass("Win32_PrintJob");
ManagementObjectCollection co = c.GetInstances();
foreach (ManagementObject m in co)
{
foreach (PropertyData p in m.Properties)
{
Console.WriteLine(p.Name + "--------" + p.Value);
}
string statusMask = m.GetPropertyValue("StatusMask").ToString();
//statusMask为16是正在打印状态,本意是想在打印的时候SPOOL FILE应该已经生成完毕了,然后去获取SPL生成对应的TIFF图片
if (statusMask.Equals("16"))
{ //暂停打印机
m.InvokeMethod("Pause", null);
//将SPL转换为图片,自己写的一个DLL提供图片转换(目前只能转换由虚拟打印机生成的SPL文件)
this.savePic();
break;
}
}
}
catch(Exception e){
e.GetBaseException();
}
}
//this.timer1.Enabled = true;
this.LogMessage("Service Started");
}
在监控的过程中发现StatusMask有时候为8(Spooling),有时候为16(正在打印),有时候为17(正在打印 ¦暂停)。我可以将其转换为2进制然后读取相应的位来判断打印所处的状态,我想是正在打印的状态下SPOOL文件应该是已经填充完毕了是,请问是这样么。还有没有什么更加好的办法?
解决方案 »
- 关于在vc++6.0中配置OpenGL环境
- listen 被调用后,是如何监听客户端连接的呢
- 急!在线等 定义了类:class CPropertyPageOne : public CPropertyPage ,可在CPropertyPageOne中找不到初始化的虚函数OnInitDialog()
- 求助子进程问题,急急急
- 为什么不能在cview上正确画图。
- 关于多国语言程序设计的方法。 中文/英文 等。
- CListCtrl中没有获得选中项下标的函数?
- 能给我说说CListCtrl怎么用吗?
- 怎么才能让程序暂时停止一会?
- Ftp问题!
- VC Active控件 如何嵌入网页?
- 自绘CTabCtrl,但ON_WM_MOUSEMOVE不响应
在JOB_INFO_2找那个可以获取到TOTALPAGES..这个是针对打印任务的总页数可是不包括份数所以必须要获取JOB_INFO_2中的DEVMODE,然后在DEVMODE中获取dmcopies这个属性问题出来了。天杀的word居然在dmcopies这个上面有BUG 返回的值永远都是1
只有重新安装OFFICE2003SPL3或者是office2007spl1才能够正常的使用dmcopies这个属性可是我写的是监控程序 我不可能强迫客户端去安装这个补丁的请问各位高手 这个问题我该如何解决?
在JOB_INFO_2找那个可以获取到TOTALPAGES..这个是针对打印任务的总页数可是不包括份数所以必须要获取JOB_INFO_2中的DEVMODE,然后在DEVMODE中获取dmcopies这个属性问题出来了。天杀的word居然在dmcopies这个上面有BUG 返回的值永远都是1
只有重新安装OFFICE2003SPL3或者是office2007spl1才能够正常的使用dmcopies这个属性可是我写的是监控程序 我不可能强迫客户端去安装这个补丁的请问各位高手 这个问题我该如何解决?遇到相同的问题
希望楼主能够共享一下解决方案!
email: [email protected]
谢谢!!
或者由虚拟打印机生成的SPL