Size PrinterJob::GetDefaultPageSize(String *name) { Size sz(6000 * 210 / 254, 6000 * 297 / 254); Vector<String> dpp = Split(System("lpoptions -l"), '\n'); for (int i = 0; i < dpp.GetCount(); i++){ int pos = max(dpp[i].FindAfter("Page Size"), dpp[i].FindAfter("PageSize")); if (pos >= 0){ pos = dpp[i].Find('*', pos); //return A4 if there is not default page size if (pos < 0) return sz; //skip '*' pos++; int len = dpp[i].Find(' ', pos); if (len < 0) len = dpp[i].GetLength(); len -= pos; //page name String nm = dpp[i].Mid(pos, len); if(name) *name = nm; const PageSizeName *p = FindPageSize(nm); if(p) { sz = p->GetDots(); return sz; } } } //return A4 if there is not default page size return sz; }
Report message to a moderator