通过调用Microsoft Print to PDF 把png 打印成pdf

void png2pdf(){
    ::CoInitialize(NULL);
	Gdiplus::GdiplusStartupInput gdiplusStartupInput;
	ULONG_PTR gdiplusToken;
	Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
    
    std::vector<std::wstring> vec;
    vec.push_back(L"aa");
    vec.push_back(L"bb");


    
    std::wstring sPath = L"C:\\Users\\qinxw\\Desktop\\png\\";
    std::wstring sDst = L"C:\\Users\\qinxw\\Desktop\\11\\";


    for (auto it : vec)
    {
        std::wstring filename = sPath + it + L".png";
        std::wstring sSave = sDst + it + L".pdf";
        Gdiplus::Bitmap* bitmap = Gdiplus::Bitmap::FromFile(filename.c_str());


        DEVMODE dm;
        ZeroMemory(&dm, sizeof(DEVMODE));
        dm.dmSize = sizeof(DEVMODE);
        dm.dmFields = DM_PAPERSIZE | DM_ORIENTATION;
        dm.dmPaperSize = DMPAPER_A4_TRANSVERSE;
        dm.dmOrientation = DMORIENT_LANDSCAPE;
        dm.dmPrintQuality = DMRES_HIGH;

        DOCINFO di;
        ZeroMemory(&di, sizeof(DOCINFO));
        di.cbSize = sizeof(DOCINFO);
        di.lpszDocName = L"My PDF Document";
        di.lpszOutput = sSave.c_str();


        HDC hdc = CreateDC(NULL, L"Microsoft Print to PDF", NULL, &dm);
        StartDoc(hdc, &di);

        StartPage(hdc);
        Gdiplus::Graphics graphics(hdc);
        graphics.DrawImage(bitmap, 0, 0);
        EndPage(hdc);


        EndDoc(hdc);
        DeleteDC(hdc);
        delete bitmap;

    }

	::CoUninitialize();
	Gdiplus::GdiplusShutdown(gdiplusToken);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值