Gio*_*diX 5 c++ printing pdf mfc
在我的应用程序中,(MFC, C++)
我有一个按钮可以PDF
在路径中创建一个文件。现在我想创建另一个按钮,该按钮将从路径开始打印 pdf 并选择一些选项,例如方向和份数……但我无法做到这一点……
我看到这CPrintDialog
显示了打印机的默认对话框,但我无法使用路径附加 PDF 文件。
我也看到了
ShellExecute(NULL, L"print", L"C:\\Documents\\1.pdf", NULL, NULL, SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)
可行,但这样我无法选择任何参数...
如何使用CPrintDialog
打印路径中的现有 PDF?
Gio*_*diX -2
我已经用解决方法解决了。CDC
我没有使用 ShellExecute,而是使用附加到类的 hDC 的对象来绘制我想要打印的所有内容CPrintDialog
。请记住根据打印机 DPI 管理绘图的大小,如下所示。
一个片段仅供参考:
CPrintDialog printDialog(FALSE);
printDialog.GetDefaults();
printDialog.m_pd.Flags &= ~PD_RETURNDEFAULT;
DEVMODE* pDevMode = printDialog.GetDevMode();
pDevMode->dmFields = DM_ORIENTATION | DM_PAPERSIZE | DM_PRINTQUALITY ;
pDevMode->dmOrientation = DMORIENT_LANDSCAPE;
pDevMode->dmPaperSize = DMPAPER_A4;
::GlobalUnlock(printDialog.m_pd.hDevMode);
if (printDialog.DoModal() == IDOK)
{
CDC* pDC = new CDC;
pDC->Attach(printDialog.m_pd.hDC);
pDCPDF->StartDoc(_T(""));
pDCPDF->StartPage();
// ...
//draw what you want
// ...
pDCPDF->EndPage();
pDCPDF->EndDoc(); //this starts the printer
pDCPDF->DeleteDC();
}
Run Code Online (Sandbox Code Playgroud)
希望尽快达到15名的声誉来投票其他问题的答案。感谢安德鲁·科米金的回答。
归档时间: |
|
查看次数: |
4499 次 |
最近记录: |