مدیریت حاشیه‌نویسی‌ها در نمودارهای ارائه با PHP

بررسی کلی

این مقاله توضیح می‌دهد که چگونه با حاشیه‌نویسی‌ها برای برچسب‌های دادهٔ نمودار در Aspose.Slides کار کنید. نشان می‌دهد چگونه از متد setShowLabelAsDataCallout برای نمایش برچسب‌ها به صورت حاشیه‌نویسی استفاده شود، چگونه تنظیمات برچسب‌های مربوط به حاشیه‌نویسی برای یک نمودار دونات پیکربندی شود، و اشاره می‌کند که حاشیه‌نویسی‌ها و ظاهر آنها هنگام صادر کردن ارائه‌ها به فرمت‌های PDF، HTML5، SVG و تصاویر رستر حفظ می‌شوند.

استفاده از حاشیه‌نویسی‌ها

متدهای جدید getShowLabelAsDataCallout() و setShowLabelAsDataCallout() به کلاس DataLabelFormat اضافه شده‌اند. این متدها تعیین می‌کنند که آیا برچسب دادهٔ نمودار مشخص شده به صورت حاشیه‌نویسی یا به صورت برچسب داده نمایش داده شود.

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Pie, 50, 50, 500, 400);
    $chart->getChartData()->getSeries()->get_Item(0)->getLabels()->getDefaultDataLabelFormat()->setShowValue(true);
    $chart->getChartData()->getSeries()->get_Item(0)->getLabels()->getDefaultDataLabelFormat()->setShowLabelAsDataCallout(true);
    $chart->getChartData()->getSeries()->get_Item(0)->getLabels()->get_Item(2)->getDataLabelFormat()->setShowLabelAsDataCallout(false);
    $pres->save("DisplayCharts.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

تنظیم حاشیه‌نویسی برای یک نمودار دونات

Aspose.Slides برای PHP از طریق Java پشتیبانی از تنظیم شکل حاشیه‌نویسی برچسب دادهٔ سِری برای یک نمودار دونات را فراهم می‌کند. نمونهٔ زیر ارائه شده است.

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $chart = $slide->getShapes()->addChart(ChartType::Doughnut, 10, 10, 500, 500, false);
    $workBook = $chart->getChartData()->getChartDataWorkbook();
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();
    $chart->setLegend(false);
    $seriesIndex = 0;
    while ($seriesIndex < 15) {
      $series = $chart->getChartData()->getSeries()->add($workBook->getCell(0, 0, $seriesIndex + 1, "SERIES " . $seriesIndex), $chart->getType());
      $series->setExplosion(0);
      $series->getParentSeriesGroup()->setDoughnutHoleSize(20);
      $series->getParentSeriesGroup()->setFirstSliceAngle(351);
      $seriesIndex++;
    } 
    $categoryIndex = 0;
    while ($categoryIndex < 15) {
      $chart->getChartData()->getCategories()->add($workBook->getCell(0, $categoryIndex + 1, 0, "CATEGORY " . $categoryIndex));
      $i = 0;
      while ($i < java_values($chart->getChartData()->getSeries()->size())) {
        $iCS = $chart->getChartData()->getSeries()->get_Item($i);
        $dataPoint = $iCS->getDataPoints()->addDataPointForDoughnutSeries($workBook->getCell(0, $categoryIndex + 1, $i + 1, 1));
        $dataPoint->getFormat()->getFill()->setFillType(FillType::Solid);
        $dataPoint->getFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
        $dataPoint->getFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->WHITE);
        $dataPoint->getFormat()->getLine()->setWidth(1);
        $dataPoint->getFormat()->getLine()->setStyle(LineStyle->Single);
        $dataPoint->getFormat()->getLine()->setDashStyle(LineDashStyle->Solid);
        if ($i == java_values($chart->getChartData()->getSeries()->size()) - 1) {
          $lbl = $dataPoint->getLabel();
          $lbl->getTextFormat()->getTextBlockFormat()->setAutofitType(TextAutofitType::Shape);
          $lbl->getDataLabelFormat()->getTextFormat()->getPortionFormat()->setFontBold(NullableBool::True);
          $lbl->getDataLabelFormat()->getTextFormat()->getPortionFormat()->setLatinFont(new FontData("DINPro-Bold"));
          $lbl->getDataLabelFormat()->getTextFormat()->getPortionFormat()->setFontHeight(12);
          $lbl->getDataLabelFormat()->getTextFormat()->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
          $lbl->getDataLabelFormat()->getTextFormat()->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->LIGHT_GRAY);
          $lbl->getDataLabelFormat()->getFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->WHITE);
          $lbl->getDataLabelFormat()->setShowValue(false);
          $lbl->getDataLabelFormat()->setShowCategoryName(true);
          $lbl->getDataLabelFormat()->setShowSeriesName(false);
          $lbl->getDataLabelFormat()->setShowLeaderLines(true);
          $lbl->getDataLabelFormat()->setShowLabelAsDataCallout(false);
          $chart->validateChartLayout();
          $lbl->setX($lbl->getX() + 0.5);
          $lbl->setY($lbl->getY() + 0.5);
        }
        $i++;
      } 
      $categoryIndex++;
    } 
    $pres->save("chart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

سوالات متداول

آیا حاشیه‌نویسی‌ها هنگام تبدیل ارائه به PDF، HTML5، SVG یا تصاویر حفظ می‌شوند؟

بله. حاشیه‌نویسی‌ها بخشی از رندر نمودار هستند، بنابراین هنگام خروجی‌گیری به PDF، HTML5، SVG، یا تصاویر رستر، همراه با فرمت اسلاید حفظ می‌شوند.

آیا فونت‌های سفارشی در حاشیه‌نویسی‌ها کار می‌کنند و آیا ظاهر آنها می‌تواند در هنگام خروجی‌گیری حفظ شود؟

بله. Aspose.Slides از قراردادن فونت‌ها در ارائه پشتیبانی می‌کند و در زمان خروجی‌گیری مثل PDF کنترل می‌کند که فونت‌ها تعبیه شوند، به‌طوری‌که حاشیه‌نویسی‌ها در سیستم‌های مختلف یک شکل یکسان داشته باشند.