【msce c++】 关于调用打印API的一些疑问。

我这边想实现一个批量打印图框的功能。读取dgn信息,获取图框位置,并且套上fence 都已经实现了。就是打印的那部分还有很多疑问。

如下代码,能实现打印fence到pdf,我这边就想做更多的功能,所以有了一些疑问

1.如何打印到实体打印机。

    PrintDescriptionPtr printDescPtr = PrintDescriptionRef::Create(); 
	IPrintDescriptionP printDesc = printDescPtr->GetP();
	if (SUCCESS != printDesc->InitializeFromTCB(L"pdf.pltcfg"))
		return;

	//设置纸张名称
	printDesc->SetFormName(L"ISO A4");

	if(printDesc->IsFenceDefined())
	{
		printDesc->SetPlotArea(PlotAreaMode::Fence);
		printDesc->SetPaperOrientation(PlotOrientation::Portrait);
	}
	else
	{
		MessageBox::Show("没有Fence 未生成pdf");
		return;
	}
	//开始打印
	printDesc->Print(L"C:\\Sample.pdf");

2.打开msce自带的打印功能,可以选择很多打印驱动,其中分为windows的打印驱动和bently的打印驱动。 

bently驱动的pltcfg文件,我这边知道文件在哪。   windows的那些驱动信息,有现成的api获取吗。我的想法就是做个一样的下拉列表出来

Parents
  • MS SDK的例子中有7个有关打印的,不知您读过没有?
    C:\Program Files\Bentley\MicroStationCONNECTSDK\examples\Printing



  • PrintAcctLog 是通过打印机事件,像个钩子一样,来记录打印日志。这个我暂时用不上。

    PrintCustomProperties 也是通过打印机事件,来输出一些属性。 这个我暂时用不上。

    PrintDesc 是一个简单的打印pdf的例子,我上面给出的代码就是它的简化版本。 这个打印pdf没问题,但是上面提到多的功能,就不知道怎么下手了。

    PrintDlgDesc 是获取msce自带打印机上的参数数据的。 这个可能有点用,就是去获取驱动等信息,但是这种方法有点勉强了。还是想通过api直接获取想要的windows驱动。

    PrinterDriver 是做的一个打印驱动,里面的东西很细。我想做的肯定是直接去使用一个驱动,而不是去创建一个驱动。这个我暂时用不上。

    PrintSet 是c++\cli 的环境下,打印一个打印集。依然没有介绍关于如何使用windows打印驱动的东西。

    PrintTextSubst 是打印的时候替换文本内容。这个我暂时用不上。

    例子我都看了,没有关于如何使用windows打印驱动的代码。

  • 你要往实体打印机打印的话,可否尝试将
    printDesc->InitializeFromTCB(L"pdf.pltcfg")

    改成

    printDesc->InitializeFromTCB(L"printer.pltcfg")



    Answer Verified By: 瑞 胡 

  • 老师 这个是可以,但是windows的打印驱动 有很多个,我用"printer.pltcfg" 后  当前的windows打印驱动  是其中的一个,怎么去获取所有的驱动列表呢,怎么把其他的windows打印驱动设置为当前的呢。

Reply Children