# Λύση για την Αλλαγή Μεγέθους του Διαγράμματος σε PPTX

> Διορθώστε την απροσδόκητη αλλαγή μεγέθους διαγράμματος σε PPTX όταν χρησιμοποιείτε ενσωματωμένα αντικείμενα Excel OLE με Aspose.Slides για Node.js μέσω Java. Ορίστε σταθερές διαστάσεις διαγράμματος για να διατηρείτε συνεπείς το μέγεθος του διαγράμματος και του πλαισίου OLE.

Source: https://docs.aspose.com/slides/el/nodejs-java/working-solution-for-chart-resizing-in-pptx/
Updated: 2026-10-20


## **Επισκόπηση**

Τα διαγράμματα Excel που ενσωματώνονται ως αντικείμενα OLE σε παρουσιάσεις PowerPoint χρησιμοποιώντας συστατικά Aspose μπορούν να αλλάζουν μέγεθος μετά την πρώτη ενεργοποίησή τους. Αυτό μπορεί να προκαλέσει εμφανή διαφορά στην εμφάνιση του διαγράμματος προ και μετά την ενεργοποίηση. Αυτό το άρθρο εξηγεί γιατί συμβαίνει η αλλαγή μεγέθους και δείχνει πώς να την αποτρέψετε ταιριάζοντας τις στατικές διαστάσεις του διαγράμματος με το πλαίσιο OLE.

In [Δημιουργία Διαγραμμάτων Excel και Ενσωμάτωση τους ως Αντικείμενα OLE σε Παρουσιάσεις](/slides/el/nodejs-java/creating-excel-chart-and-embedding-it-in-presentation-as-ole-object/), εξηγήσαμε πώς να δημιουργήσετε ένα γράφημα Excel με Aspose.Cells για Node.js μέσω Java και να το ενσωματώσετε σε μια παρουσίαση PowerPoint χρησιμοποιώντας Aspose.Slides για Node.js μέσω Java. Για να αντιμετωπίσουμε το [ζήτημα προεπισκόπησης αντικειμένου](/slides/el/nodejs-java/object-preview-issue-when-adding-oleobjectframe/), αντιστοιχίσαμε την εικόνα του διαγράμματος στο πλαίσιο OLE του διαγράμματος. Στην παραγόμενη παρουσίαση, όταν κάνετε διπλό κλικ στο πλαίσιο OLE που εμφανίζει την εικόνα του διαγράμματος, το διάγραμμα Excel ενεργοποιείται. Οι χρήστες μπορούν να επεξεργαστούν το ενσωματωμένο βιβλίο εργασίας Excel και έπειτα να επιστρέψουν στη διαφάνεια κάνοντας κλικ εκτός του ενεργοποιημένου βιβλίου εργασίας. Το μέγεθος του πλαισίου OLE αλλάζει όταν ο χρήστης επιστρέφει στη διαφάνεια, και ο παράγοντας αλλαγής μεγέθους διαφέρει ανάλογα με τα αρχικά μεγέθη τόσο του πλαισίου OLE όσο και του ενσωματωμένου βιβλίου εργασίας Excel.

## **Αίτιο της Αλλαγής Μεγέθους**

Το ενσωματωμένο βιβλίο εργασίας Excel έχει τις δικές του διαστάσεις παραθύρου, τις οποίες το Excel προσπαθεί να διατηρήσει όταν το αντικείμενο ενεργοποιείται για πρώτη φορά. Το πλαίσιο OLE στη διαφάνεια έχει ανεξάρτητα καθορισμένες διαστάσεις. Όταν το βιβλίο εργασίας Excel ενεργοποιείται, το Excel και το PowerPoint διαπραγματεύονται το μέγεθος του αντικειμένου ώστε να διατηρήσουν τις αναλογίες του ως μέρος της διαδικασίας ενσωμάτωσης. Οι διαφορές μεταξύ του παραθύρου του βιβλίου εργασίας και του πλαισίου OLE μπορούν επομένως να προκαλέσουν αλλαγή μεγέθους του αντικειμένου.

## **Λειτουργική Λύση**

Ταιριάξτε το μέγεθος του διαγράμματος με το πλαίσιο OLE στη διαφάνεια και κρατήστε τις διαστάσεις του διαγράμματος ανεξάρτητες από το παράθυρο του βιβλίου εργασίας. Αυτή η λύση λειτουργεί είτε με νέα παρουσίαση είτε με υπάρχον πρότυπο.

Το παράδειγμα απαιτεί Aspose.Cells για Node.js μέσω Java και Aspose.Slides για Node.js μέσω Java. Εγκαταστήστε τα πακέτα Node.js `aspose.cells`, `aspose.slides.via.java` και `java`. Εκτελέστε τα δύο CommonJS scripts παρακάτω σε ξεχωριστές διεργασίες Node.js, χρησιμοποιώντας τον ίδιο φάκελο εργασίας, επειδή και τα δύο πακέτα Aspose αρχικοποιούν τη γέφυρα Java κατά τη φόρτωση. Δημιουργεί ένα απλό ραβδογράφημα σε ένα ενεργό φύλλο διαγράμματος και ενσωματώνει το βιβλίο εργασίας σε μορφή XLS. Δεν έχει ανατεθεί εικόνα προεπισκόπησης διαγράμματος· το διάγραμμα γίνεται ορατό όταν το αντικείμενο OLE ενεργοποιείται στο PowerPoint.

Το παράδειγμα δημιουργεί μια νέα παρουσίαση με πλαίσιο OLE μεγέθους 9.5 × 4 ίντσες, τοποθετημένο 0.5 ίντσες από την αριστερή άκρη και 1 ίντσα από την κορυφή. Οι συντεταγμένες και διαστάσεις της διαφάνειας δίνονται σε σημεία (72 σημεία ανά ίντσα). Για υπάρχουσα παρουσίαση, δείτε [Χρήση Προτύπου](#use-a-template).

## **Ορισμός Σταθερού Μεγέθους Διαγράμματος**

Ορίστε το [setSizeWithWindow](https://reference.aspose.com/cells/nodejs/aspose.cells/chart/#setsizewithwindow) σε false ώστε οι διαστάσεις του διαγράμματος να είναι ανεξάρτητες από το παράθυρο του βιβλίου εργασίας. Ορίστε τις διαστάσεις του [getChartObject](https://reference.aspose.com/cells/nodejs/aspose.cells/chart/#getchartobject) μέσω των [setWidth](https://reference.aspose.com/cells/nodejs/aspose.cells/shape/#setwidth) και [setHeight](https://reference.aspose.com/cells/nodejs/aspose.cells/shape/#setheight), μετατρέποντας τα σημεία σε pixel χρησιμοποιώντας 96 pixel ανά ίντσα: ένα πλαίσιο των 684 × 288 σημείων αντιστοιχεί σε διάγραμμα 912 × 384 pixel. Ορίστε το [setPrintSize](https://reference.aspose.com/cells/nodejs/aspose.cells/chart/#setprintsize) στην τιμή CUSTOM του `PrintSizeType`. Το παράδειγμα ενσωματώνει το βιβλίο εργασίας με το [addOleObjectFrame](https://reference.aspose.com/slides/nodejs-java/aspose.slides/shapecollection/#addOleObjectFrame) και αποθηκεύει μια παρουσίαση με πλαίσιο OLE 9.5 × 4 ίντσες.

Αποθηκεύστε αυτό το πρώτο script ως `create-fixed-chart.js`. Δημιουργεί το `chart-fixed-size.xls` με διάγραμμα 912 × 384 pixel, ταιριάζοντας με το πλαίσιο 684 × 288 σημείων που χρησιμοποιείται από το δεύτερο script. Δεν απαιτείται εισαγωγικό βιβλίο εργασίας.

```javascript
const cells = require("aspose.cells");

const workbook = new cells.Workbook();
try {
    const dataSheet = workbook.getWorksheets().get(0);
    dataSheet.setName("Data");
    dataSheet.getCells().get("A1").putValue(10);
    dataSheet.getCells().get("A2").putValue(20);

    const chartSheetIndex = workbook.getWorksheets().add(cells.SheetType.CHART);
    const chartSheet = workbook.getWorksheets().get(chartSheetIndex);
    const chartIndex = chartSheet.getCharts().add(cells.ChartType.COLUMN, 0, 0, 20, 10);
    const chart = chartSheet.getCharts().get(chartIndex);
    chart.getNSeries().add("Data!A1:A2", true);
    workbook.getWorksheets().setActiveSheetIndex(chartSheetIndex);

    // Ταιριάξτε τις διαστάσεις του πλαισίου OLE σε σημεία (72 σημεία ανά ίντσα).
    const width = 684; // 9.5 ίντσες.
    const height = 288; // 4 ίντσες.

    chart.setSizeWithWindow(false);
    // Μετατρέψτε τα σημεία σε pixel διαγράμματος χρησιμοποιώντας 96 pixel ανά ίντσα.
    chart.getChartObject().setWidth(Math.trunc(width / 72 * 96));
    chart.getChartObject().setHeight(Math.trunc(height / 72 * 96));
    chart.setPrintSize(cells.PrintSizeType.CUSTOM);

    workbook.save("chart-fixed-size.xls", cells.SaveFormat.EXCEL_97_TO_2003);
} finally {
    workbook.dispose();
}

// Όλη η συγχρονισμένη εργασία ολοκληρώθηκε; τερματίστε τη διαδικασία γέφυρας Java.
process.exit(0);
```

Αποθηκεύστε το δεύτερο script ως `embed-fixed-chart.js` και εκτελέστε το μετά το `create-fixed-chart.js`. Διαβάζει το παραγόμενο βιβλίο εργασίας XLS και αποθηκεύει το `chart-fixed-size.pptx`. Η γέφυρα Java απαιτεί έναν ρητό πίνακα byte Java για τα δεδομένα του βιβλίου εργασίας και τιμές float Java για τις συντεταγμένες και διαστάσεις του πλαισίου. Η επέκταση `xls` αντιστοιχεί στη μορφή αποθήκευσης του βιβλίου εργασίας.

```javascript
const fs = require("fs");
const java = require("java");
const slides = require("aspose.slides.via.java");

const workbookBuffer = fs.readFileSync("chart-fixed-size.xls");
const workbookBytes = java.newArray("byte", Array.from(workbookBuffer));
const presentation = new slides.Presentation();
try {
    const slide = presentation.getSlides().get_Item(0);

    // Οι συντεταγμένες και διαστάσεις της διαφάνειας είναι σε σημεία (72 σημεία ανά ίντσα).
    const width = 684; // 9.5 ίντσες.
    const height = 288; // 4 ίντσες.
    const dataInfo = new slides.OleEmbeddedDataInfo(workbookBytes, "xls");
    slide.getShapes().addOleObjectFrame(java.newFloat(36), java.newFloat(72), java.newFloat(width), java.newFloat(height), dataInfo);

    presentation.save("chart-fixed-size.pptx", slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

// Η συγχρονισμένη εργασία ολοκληρώθηκε· τερματίστε τη διαδικασία γέφυρας Java.
process.exit(0);
```

## **Χρήση Προτύπου**

Η λογική μεγέθους είναι η ίδια για υπάρχουσα παρουσίαση. Για να προσαρμόσετε το παράδειγμα:

1. Φορτώστε την παρουσίαση προτύπου αντί να δημιουργήσετε κενή παρουσίαση.
1. Ελέγξτε ότι η πρώτη διαφάνεια περιέχει τουλάχιστον τρία σχήματα, και χρησιμοποιήστε το σχήμα με δείκτη 2 ως σύμβολο κράτησης.
1. Πάρτε το πλάτος και το ύψος του πλαισίου από αυτό το σχήμα αντί να χρησιμοποιήσετε τις στατικές τιμές 684 και 288. Χρησιμοποιήστε τις ίδιες διαστάσεις στο script δημιουργίας βιβλίου εργασίας, διατηρώντας τους υπολογισμούς μεγέθους αμετάβλητους, και αναδημιουργήστε το βιβλίο εργασίας XLS πριν το ενσωματώσετε.
1. Προσθέστε το πλαίσιο OLE στη θέση του σύμβολου κράτησης αντί για τις στατικές συντεταγμένες 36 και 72.
1. Αφαιρέστε το σύμβολο κράτησης πριν αποθηκεύσετε την παρουσίαση.

## **FAQ**

**Γιατί το ενσωματωμένο γράφημα Excel αλλάζει μέγεθος μετά τη ενεργοποίησή του στο PowerPoint;**

Αυτό συμβαίνει επειδή το Excel προσπαθεί να επαναφέρει το αρχικό μέγεθος του παραθύρου όταν ενεργοποιείται για πρώτη φορά, ενώ το πλαίσιο αντικειμένου OLE στο PowerPoint έχει τις δικές του διαστάσεις. Το PowerPoint και το Excel διαπραγματεύονται το μέγεθος ώστε να διατηρήσουν την αναλογία διαστάσεων, κάτι που μπορεί να προκαλέσει την αλλαγή μεγέθους.

**Πώς μπορώ να κρατήσω τις διαστάσεις του διαγράμματος και του πλαισίου OLE συνεπείς;**

Ορίστε σταθερές διαστάσεις διαγράμματος που ταιριάζουν με το πλαίσιο OLE και χρησιμοποιήστε προσαρμοσμένο μέγεθος εκτύπωσης διαγράμματος πριν ενσωματώσετε το βιβλίο εργασίας. Το παραπάνω παράδειγμα δείχνει τις απαιτούμενες ρυθμίσεις και τις μετατροπές μονάδων.

**Είναι επαρκής η αντιστοίχιση του μεγέθους του παραθύρου του βιβλίου εργασίας;**

Η αντιστοίχιση μόνο του μεγέθους του παραθύρου του βιβλίου εργασίας δεν αποτρέπει αξιόπιστα το πλαίσιο OLE από το να αλλάξει μέγεθος μετά την ενεργοποίηση. Χρησιμοποιήστε σταθερές διαστάσεις διαγράμματος όπως φαίνεται στο παράδειγμα.

**Λειτουργεί αυτή η λύση τόσο με παρουσιάσεις βασισμένες σε πρότυπο όσο και με νέες παρουσιάσεις;**

Ναι. Για πρότυπο, χρησιμοποιήστε τις διαστάσεις και τη θέση του σύμβολου κράτησης. Για νέα παρουσίαση, καθορίστε απευθείας τις διαστάσεις και τη θέση του πλαισίου.

**Μπορώ να χρησιμοποιήσω αυτό το παράδειγμα με διαγράμματα που δημιουργήθηκαν σε άλλα προγράμματα λογιστικού φύλλου;**

Το παράδειγμα χρησιμοποιεί ένα βιβλίο εργασίας Excel δημιουργημένο με Aspose.Cells. Δεν παρουσιάζει τη συμπεριφορά ενεργοποίησης για άλλα προγράμματα λογιστικού φύλλου.

## **Σχετικές Ενότητες**

- [Δημιουργία Διαγραμμάτων Excel και Ενσωμάτωση τους ως Αντικείμενα OLE σε Παρουσιάσεις](/slides/el/nodejs-java/creating-excel-chart-and-embedding-it-in-presentation-as-ole-object/)


