コード例 #1
0
// format page size according to locale (e.g. "29.7 x 21.0 cm" or "11.69 x 8.27 in")
// Caller needs to free the result
static WCHAR *FormatPageSize(BaseEngine *engine, int pageNo, int rotation)
{
    RectD mediabox = engine->PageMediabox(pageNo);
    SizeD size = engine->Transform(mediabox, pageNo, 1.0f / engine->GetFileDPI(), rotation).Size();

    const WCHAR *formatName = L"";
    switch (GetPaperFormat(size)) {
    case Paper_A4: formatName = L" (A4)"; break;
    case Paper_A3: formatName = L" (A3)"; break;
    case Paper_A5: formatName = L" (A5)"; break;
    case Paper_Letter: formatName = L" (Letter)"; break;
    case Paper_Legal: formatName = L" (Legal)"; break;
    case Paper_Tabloid: formatName = L" (Tabloid)"; break;
    case Paper_Statement: formatName = L" (Statement)"; break;
    }

    bool isMetric = GetMeasurementSystem() == 0;
    double unitsPerInch = isMetric ? 2.54 : 1.0;
    const WCHAR *unit = isMetric ? L"cm" : L"in";

    double width = size.dx * unitsPerInch;
    double height = size.dy * unitsPerInch;
    if (((int)(width * 100)) % 100 == 99)
        width += 0.01;
    if (((int)(height * 100)) % 100 == 99)
        height += 0.01;

    ScopedMem<WCHAR> strWidth(str::FormatFloatWithThousandSep(width));
    ScopedMem<WCHAR> strHeight(str::FormatFloatWithThousandSep(height));

    return str::Format(L"%s x %s %s%s", strWidth.Get(), strHeight.Get(), unit, formatName);
}
コード例 #2
0
static short GetPaperSize(BaseEngine *engine) {
    RectD mediabox = engine->PageMediabox(1);
    SizeD size = engine->Transform(mediabox, 1, 1.0f / engine->GetFileDPI(), 0).Size();

    switch (GetPaperFormat(size)) {
        case Paper_A4:
            return DMPAPER_A4;
        case Paper_A3:
            return DMPAPER_A3;
        case Paper_A5:
            return DMPAPER_A5;
        case Paper_Letter:
            return DMPAPER_LETTER;
        case Paper_Legal:
            return DMPAPER_LEGAL;
        case Paper_Tabloid:
            return DMPAPER_TABLOID;
        case Paper_Statement:
            return DMPAPER_STATEMENT;
        default:
            return 0;
    }
}