I am using GDI+ to print an image to A4-size paper, but the printed image gets cropped. I’ve looked through the DrawImage
function documentation, but I can’t seem to achieve perfect printing on every device. Are there any parameters that I might have overlooked?
Gdiplus::Image image(imagePath);
std::cerr << "Error: Failed to load image." << std::endl;
EndPage(printerDC);
EndDoc(printerDC);
DeleteDC(printerDC);
ClosePrinter(printerHandle);
Gdiplus::GdiplusShutdown(gdiplusToken);
free(pDevMode);
return -8;
}
// Create a Graphics object from the printer's device context
Gdiplus::Graphics graphics(printerDC);
if (graphics.GetLastStatus() != Gdiplus::Ok) {
std::cerr << "Error: Failed to create graphics object." << std::endl;
EndPage(printerDC);
EndDoc(printerDC);
DeleteDC(printerDC);
ClosePrinter(printerHandle);
Gdiplus::GdiplusShutdown(gdiplusToken);
free(pDevMode);
return -9;
}
// Draw the image on the printer's device context
Gdiplus::Status status = graphics.DrawImage(&image, 0, 0);
if (status != Gdiplus::Ok) {
std::cerr << "Error: Failed to draw image." << std::endl;
EndPage(printerDC);
EndDoc(printerDC);
DeleteDC(printerDC);
ClosePrinter(printerHandle);
Gdiplus::GdiplusShutdown(gdiplusToken);
free(pDevMode);
return -10;
}