none
reportviewer 2010 некорректно отображаются все отчеты (соотношение сторон) RRS feed

  • Вопрос

  • Здравствуйте.

    После обновления reportviewer 2008 (9) до reportviewer 2010 (10) у пользователей работающих через mstsc на терминале в режиме print layout
    неправильно отображаются все отчеты.

    Проблема известная. Вот тут описана лучше всего http://www.codeproject.com/Articles/95750/High-fidelity-printing-through-the-SSRS-Report-Vie
    Соотношение сторон по дефолту для терминальной сессии возвращается как 4/3

    Вот тут чуть подробнее
    -------------------------------------------------------------------------------
    The following routine relies on the fact that Windows will default to a large old 4:3 monitor 320mm x 240mm in physical display area whenever the physical characteristics of the display cannot be determined:
     Collapse | Copy Code
    bool CanPrint()
    {
        if (SystemInformation.TerminalServerSession)
        {
            return false;
        }
        var dim = GetPhysicalScreenDimensions();
        //Windows will return these hard-coded defaults if the monitor
        //does not support reporting its physical dimensions
        return !(dim.Width == 320 && dim.Height == 240);
    }
    It relies on the age old GetDeviceCaps routine:
     Collapse | Copy Code
    private static Size GetPhysicalScreenDimensions()
    {
        Size res = new Size();
        using (Bitmap bitmap = new Bitmap(2, 2))
        {
            using (Graphics graphics = Graphics.FromImage(bitmap))
            {
                IntPtr hdc = graphics.GetHdc();
                res.Width = GetDeviceCaps(hdc, 88);
                res.Height = GetDeviceCaps(hdc, 90);
                graphics.ReleaseHdc(hdc);
            }
        }
        return res;
    }
    [DllImport("gdi32.dll", SetLastError = true)]
    private static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
    Вопрос: можно ли настроить windows server 2008 так чтобы по умолчанию для всех терминальных сессий GetPhysicalScreenDimensions()  возвращала ну например 1280*768
    -------------------------------------------------------------------------------

    Можно ли как то настроить результат для каждого пользователя?
    Кто нибудь сталкивался с такой проблемой?
    Что можно сделать, не изменяя код???

    20 марта 2012 г. 23:19

Ответы