Проблема с отображением PDF в Flex mx: элемент управления HTML в Windows / Reader X - PullRequest
0 голосов
/ 28 октября 2011

У меня проблема с отображением PDF вне видимой области элемента управления mx: HTML во Flex.Когда приложение запускается - для mx: HTML устанавливается определенный размер, но его можно увеличить, если приложение развернуто.Для репликации выполните следующие условия:

  • Проблема возникает только в Windows (Windows 7, а не на Mac)
  • Проблема возникает только при установленном Reader X (не в предыдущих версиях)
  • Проблема возникает только при запуске встроенного приложения, не возникает в режиме отладки / разработки из FlashBuilder

Ниже приведен код для воспроизведения проблемы.Это выглядит немного грязно с группами внутри групп, но в нашем приложении есть еще кое-что, что я просто вырезал, чтобы иметь небольшое тестовое приложение для воспроизведения проблемы:

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
                   xmlns:s="library://ns.adobe.com/flex/spark"
                   xmlns:mx="library://ns.adobe.com/flex/mx"
                   width="1004" height="510" backgroundColor="#000000" >
<fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;
        protected function press_clickHandler():void
        {
            htmlContent.location = "vt1_04_using_flash_builder.pdf";
        }
    ]]>
</fx:Script>
<fx:DesignLayer>
    <mx:HDividedBox id="myDividedBox" left="10" right="5" top="39" bottom="61" liveDragging="false">
        <mx:Panel id="pnlTreeCtrl" width="250" height="100%" headerHeight="0">
            <s:Button id="press" buttonMode="true" click="press_clickHandler()" 
                      right="84" top="8" label="Press"/>
        </mx:Panel>
        <s:Group id="groupCourseMain" height="100%" >
            <s:Group id="groupCourseHTML" right="0" top="30" bottom="0" width="100%">
                <mx:HTML id="htmlContent" top="0" bottom="0" width="100%" />     
            </s:Group>
        </s:Group>
    </mx:HDividedBox>
</fx:DesignLayer>
</s:WindowedApplication>

Редактировать: Красныйстрелка показывает, где плавающая серая полоса в Reader X появляется за пределами видимой области:

enter image description here

1 Ответ

2 голосов
/ 29 декабря 2011

Кажется, это известная ошибка без исправления.

Обходной путь - изменить ширину браузера после загрузки документа и каждый раз, когда его родительская группа изменяется. Хитрость заключается в изменении размера одного пикселя, чтобы вызвать перерисовку. Следующий код, кажется, работает. Это лучшее, что я мог сделать, возможно, есть лучшие решения.

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
                       xmlns:s="library://ns.adobe.com/flex/spark"
                       xmlns:mx="library://ns.adobe.com/flex/mx"
                       width="1004" height="510" backgroundColor="#000000" >
   <fx:Script>
      <![CDATA[
         import mx.events.FlexEvent;
         import mx.events.ResizeEvent;
         protected function press_clickHandler():void
         {
            htmlContent.location = "test.pdf";
         }

         protected function htmlContent_completeHandler(event:Event):void
         {
            this.htmlContent.width = this.groupCourseHTML.width - 1;
         }

         protected function groupCourseHTML_resizeHandler(event:ResizeEvent):void
         {
            this.htmlContent.percentWidth = 100;
         }
      ]]>
   </fx:Script>
   <fx:DesignLayer>
      <mx:HDividedBox id="myDividedBox" left="10" right="5" top="39" bottom="61" liveDragging="false">
         <mx:Panel id="pnlTreeCtrl" width="250" height="100%" headerHeight="0">
            <s:Button id="press" buttonMode="true" click="press_clickHandler()" 
                      right="84" top="8" label="Press"/>
         </mx:Panel>
         <s:Group id="groupCourseMain" height="100%" >
            <s:Group id="groupCourseHTML" right="0" top="30" bottom="0" width="100%" resize="groupCourseHTML_resizeHandler(event)">
               <mx:HTML id="htmlContent" top="0" bottom="0" width="100%" complete="htmlContent_completeHandler(event)"/>     
            </s:Group>
         </s:Group>
      </mx:HDividedBox>
   </fx:DesignLayer>
</s:WindowedApplication>
...