Άνοιγμα παρουσιάσεων σε Java

Εισαγωγή

Πέρα από τη δημιουργία παρουσιάσεων PowerPoint από το μηδέν, το Aspose.Slides σας επιτρέπει επίσης να ανοίξετε υπάρχουσες παρουσιάσεις. Αφού φορτώσετε μια παρουσίαση, μπορείτε να ανακτήσετε πληροφορίες γι' αυτήν, να επεξεργαστείτε το περιεχόμενο των διαφανειών, να προσθέσετε νέες διαφάνειες, να αφαιρέσετε υπάρχουσες και πολλά άλλα.

Άνοιγμα Παρουσιάσεων

Για να ανοίξετε μια υπάρχουσα παρουσίαση, δημιουργήστε μια παρουσία της κλάσης Presentation και περάστε τη διαδρομή του αρχείου στον κατασκευαστή της.

Το παρακάτω παράδειγμα Java δείχνει πώς να ανοίξετε μια παρουσίαση και να λάβετε τον αριθμό των διαφανειών της:

// Δημιουργήστε ένα αντικείμενο της κλάσης Presentation και περάστε μια διαδρομή αρχείου στον κατασκευαστή της.
Presentation presentation = new Presentation("Sample.pptx");
try {
    // Εκτυπώστε το συνολικό αριθμό διαφανειών στην παρουσίαση.
    System.out.println(presentation.getSlides().size());
} finally {
    presentation.dispose();
}

Άνοιγμα Παρουσιάσεων με Προστασία Κωδικού

Όταν χρειάζεται να ανοίξετε μια παρουσίαση προστατευμένη με κωδικό, περάστε τον κωδικό μέσω της μεθόδου setPassword της κλάσης LoadOptions για να την αποκρυπτογραφήσετε και να τη φορτώσετε. Το παρακάτω κώδικα Java δείχνει αυτήν τη λειτουργία:

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");

Presentation presentation = new Presentation("Sample.pptx", loadOptions);
try {
    // Εκτελέστε ενέργειες στην αποκρυπτογραφημένη παρουσίαση.
} finally {
    presentation.dispose();
}

Άνοιγμα Μεγάλων Παρουσιάσεων

Το Aspose.Slides παρέχει επιλογές — ειδικότερα τη μέθοδο getBlobManagementOptions στην κλάση LoadOptions — για να σας βοηθήσει να φορτώσετε μεγάλες παρουσιάσεις.

Το παρακάτω κώδικα Java δείχνει πώς να φορτώσετε μια μεγάλη παρουσίαση (για παράδειγμα, 2 GB):

final String filePath = "LargePresentation.pptx";

LoadOptions loadOptions = new LoadOptions();
// Επιλέξτε τη συμπεριφορά KeepLocked — το αρχείο παρουσίασης θα παραμείνει κλειδωμένο για τη διάρκεια της
// του αντικειμένου Presentation, αλλά δεν χρειάζεται να φορτωθεί στη μνήμη ή να αντιγραφεί σε προσωρινό αρχείο.
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB

Presentation presentation = new Presentation(filePath, loadOptions);
try {
    // Η μεγάλη παρουσίαση έχει φορτωθεί και μπορεί να χρησιμοποιηθεί, ενώ η κατανάλωση μνήμης παραμένει χαμηλή.

    // Κάντε αλλαγές στην παρουσίαση.
    presentation.getSlides().get_Item(0).setName("Large presentation");

    // Αποθηκεύστε την παρουσίαση σε άλλο αρχείο. Η κατανάλωση μνήμης παραμένει χαμηλή κατά τη διάρκεια αυτής της λειτουργίας.
    presentation.save("LargePresentation-copy.pptx", SaveFormat.Pptx);

    // Μην το κάνετε! Θα προκληθεί εξαίρεση I/O επειδή το αρχείο είναι κλειδωμένο μέχρι να διαγραφεί το αντικείμενο παρουσίασης.
    //Files.delete(Paths.get(filePath));
} finally {
    presentation.dispose();
}

// Μπορεί να γίνει εδώ. Το αρχείο προέλευσης δεν είναι πλέον κλειδωμένο από το αντικείμενο παρουσίασης.
Files.delete(Paths.get(filePath));

Έλεγχος Εξωτερικών Πόρων

Το Aspose.Slides παρέχει το interface IResourceLoadingCallback που σας επιτρέπει να διαχειρίζεστε εξωτερικούς πόρους. Το παρακάτω κώδικα Java δείχνει πώς να χρησιμοποιήσετε το interface IResourceLoadingCallback:

LoadOptions loadOptions = new LoadOptions();
loadOptions.setResourceLoadingCallback(new ImageLoadingHandler());

Presentation presentation = new Presentation("Sample.pptx", loadOptions);
class ImageLoadingHandler implements IResourceLoadingCallback {
    public int resourceLoading(IResourceLoadingArgs args) {
        if (args.getOriginalUri().endsWith(".jpg")) {
            try {
                // Φορτώστε μια εναλλακτική εικόνα.
                byte[] imageData = Files.readAllBytes(new File("aspose-logo.jpg").toPath());
                args.setData(imageData);
                return ResourceLoadingAction.UserProvided;
            } catch (RuntimeException ex) {
                return ResourceLoadingAction.Skip;
            }  catch (IOException ex) {
                ex.printStackTrace();
            }
        } else if (args.getOriginalUri().endsWith(".png")) {
            // Ορίστε μια εναλλακτική URL.
            args.setUri("http://www.google.com/images/logos/ps_logo2.png");
            return ResourceLoadingAction.Default;
        }
        // Παράβλεψη όλων των άλλων εικόνων.
        return ResourceLoadingAction.Skip;
    }
}

Φόρτωση Παρουσιάσεων χωρίς Ενσωματωμένα Δυαδικά Αντικείμενα

Μια παρουσίαση PowerPoint μπορεί να περιέχει τους παρακάτω τύπους ενσωματωμένων δυαδικών αντικειμένων:

Χρησιμοποιώντας τη μέθοδο ILoadOptions.setDeleteEmbeddedBinaryObjects μπορείτε να φορτώσετε μια παρουσίαση χωρίς κανένα ενσωματωμένο δυαδικό αντικείμενο.

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

LoadOptions loadOptions = new LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);

Presentation presentation = new Presentation("malware.ppt", loadOptions);
try {
    // Εκτελέστε ενέργειες στην παρουσίαση.
} finally {
    presentation.dispose();
}

ΣΥΧΝΑ ΕΡΩΤΗΜΑΤΑ

Πώς μπορώ να καταλάβω ότι ένα αρχείο είναι κατεστραμμένο και δεν μπορεί να ανοιχθεί;

Θα λάβετε εξαίρεση επαλήθευσης ανάλυσης/μορφής κατά τη φόρτωση. Τέτοια σφάλματα συχνά αναφέρουν μη έγκυρη δομή ZIP ή κατεστραμμένα αρχεία PowerPoint.

Τι συμβαίνει αν λείπουν τα απαιτούμενα γραμματοσειρές κατά το άνοιγμα;

Το αρχείο θα ανοίξει, αλλά αργότερα το rendering/export μπορεί να αντικαταστήσει τις γραμματοσειρές. Configure font substitutions ή add the required fonts στο περιβάλλον εκτέλεσης.

Τι γίνεται με τα ενσωματωμένα μέσα (βίντεο/ήχος) κατά το άνοιγμα;

Γίνονται διαθέσιμα ως πόροι της παρουσίασης. Εάν τα μέσα αναφέρονται μέσω εξωτερικών διαδρομών, βεβαιωθείτε ότι αυτές οι διαδρομές είναι προσβάσιμες στο περιβάλλον σας· διαφορετικά το rendering/export μπορεί να παραλείψει τα μέσα.