# Рабочее решение для изменения размера графиков в PPTX

> 

Source: https://docs.aspose.com/slides/ru/php-java/working-solution-for-chart-resizing-in-pptx/
Updated: 2024-10-02


{{% alert color="primary" %}} 

Было замечено, что графики Excel, встроенные как OLE в презентацию PowerPoint через компоненты Aspose, изменяются до неидентифицированного масштаба после первого активации. Это поведение создает значительное визуальное различие презентации между состояниями до и после активации графика. Команда Aspose с помощью команды Microsoft подробно исследовала эту проблему и нашла решение. Эта статья охватывает причины и решение данной проблемы.

{{% /alert %}} 
## **Предыстория**
В [предыдущей статье](/slides/ru/php-java/creating-excel-chart-and-embedding-it-in-presentation-as-ole-object/) мы объяснили, как создать график Excel с использованием Aspose.Cells для Java и затем встроить этот график в презентацию PowerPoint с помощью Aspose.Slides для PHP через Java. Для решения проблемы [изменения объекта](/slides/ru/php-java/updating-ole-objects-automatically-using-ms-powerpoint-add-in/) мы назначили изображение графика ОLE-объекту. В итоговой презентации, когда мы дважды щелкаем на OLE-объекте, показывающем изображение графика, активируется график Excel. Конечные пользователи могут вносить любые изменения в фактическую книгу Excel, а затем вернуться к соответствующему слайду, щелкнув за пределами активной книги Excel. Размер OLE-объекта изменится, когда пользователь вернется к слайду. Фактор изменения размера будет различаться для разных размеров OLE-объекта и встроенной книги Excel.
## **Причина изменения размера**
Поскольку книга Excel имеет свой собственный размер окна, она пытается сохранить свой первоначальный размер при первом активации. С другой стороны, OLE-объект будет иметь свой собственный размер. По словам Microsoft, при активации книги Excel, Excel и PowerPoint договариваются о размере и обеспечивают его правильные пропорции в рамках операции встраивания. На основании различий между размерами окон Excel и размером / положением OLE-объекта происходит изменение размера.
## **Рабочее решение**
Существуют два возможных сценария для создания презентаций PowerPoint с использованием Aspose.Slides для PHP через Java.**Сценарий 1:** Создать презентацию на основе существующего шаблона**Сценарий 2:** Создать презентацию с нуля. Решение, которое мы здесь предоставим, будет действовать для обоих сценариев. Основой всех подходов к решению будет одно и то же. То есть: **Размер окна встроенного OLE-объекта должен быть таким же, как и размер OLE-объекта в слайде PowerPoint**. Теперь мы обсудим два подхода к решению.
## **Первый подход**
В этом подходе мы научимся устанавливать размер окна встроенной книги Excel, равный размеру OLE-объекта в слайде PowerPoint.**Сценарий 1**Предположим, мы определили шаблон и желаем создать презентации на основе этого шаблона. Предположим, что в шаблоне есть какая-то форма на индексе 2, где мы хотим разместить OLE-объект, содержащий встроенную книгу Excel. В этом сценарии размер OLE-объекта будет считаться предопределенным (это размер формы на индексе 2 в шаблоне). Все, что нам нужно сделать: установить размер окна книги равным размеру формы. Следующий фрагмент кода будет служить этой цели:

{{< gist "aspose-com-gists" "1f55f0222bc39a382d831900e8de7400" "Examples-src-main-java-com-aspose-slides-examples-Slides-Charts-ResizeChartWithExistingTemplate-ResizeChartWithExistingTemplate.java" >}}

**Сценарий 2**Предположим, мы хотим создать презентацию с нуля и желаем OLE-объект любого размера с встроенной книгой Excel. В следующем фрагменте кода мы создали OLE-объект с высотой 4 дюйма и шириной 9.5 дюйма в слайде на оси x=0.5 дюйма и оси y=1 дюйм. Кроме того, мы установили эквивалентный размер окна книги Excel, а именно: высота 4 дюйма и ширина 9.5 дюйма.

{{< gist "aspose-com-gists" "1f55f0222bc39a382d831900e8de7400" "Examples-src-main-java-com-aspose-slides-examples-Slides-Charts-ResizeChartFromScratch-ResizeChartFromScratch.java" >}}

## **Второй подход**
В этом подходе мы научимся устанавливать размер графика, присутствующего во встроенной книге Excel, равный размеру OLE-объекта в слайде PowerPoint. Этот подход полезен, когда известен исходный размер графика и он никогда не изменится. **Сценарий 1**Предположим, мы определили шаблон и желаем создать презентации на основе этого шаблона. Предположим, что в шаблоне есть какая-то форма на индексе 2, где мы хотим разместить OLE-объект, содержащий встроенную книгу Excel. В этом сценарии размер OLE-объекта будет считаться предопределенным (это размер формы на индексе 2 в шаблоне). Все, что нам нужно сделать: установить размер графика в книге равным размеру формы. Следующий фрагмент кода будет служить этой цели:

{{< gist "aspose-com-gists" "1f55f0222bc39a382d831900e8de7400" "Examples-src-main-java-com-aspose-slides-examples-Slides-Charts-ResizeChartWithExistingTemplateSecondApproach-ResizeChartWithExistingTemplateSecondApproach.java" >}}

**Сценарий 2**: Предположим, мы хотим создать презентацию с нуля и желаем OLE-объект любого размера с встроенной книгой Excel. В следующем фрагменте кода мы создали OLE-объект с высотой 4 дюйма и шириной 9.5 дюйма в слайде на оси x=0.5 дюйма и оси y=1 дюйм. Кроме того, мы установили эквивалентный размер графика, а именно: высота 4 дюйма и ширина 9.5 дюйма.

{{< gist "aspose-com-gists" "1f55f0222bc39a382d831900e8de7400" "Examples-src-main-java-com-aspose-slides-examples-Slides-Charts-ResizeChartFromScratchSecondApproach-ResizeChartFromScratchSecondApproach.java" >}}
## **Заключение**
{{% alert color="primary" %}} 

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

{{% /alert %}}
