Διαχείριση Αντικειμένων Μελάνης Παρουσίασης σε PHP

Εισαγωγή

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

Η Aspose.Slides παρέχει τους τύπους που απαιτούνται για εργασία με αντικείμενα μελάνης. Για παράδειγμα, η κλάση Ink αντιπροσωπεύει ένα αντικείμενο μελάνης σε μια διαφάνεια.

Διαφορές μεταξύ Κανονικών Αντικειμένων και Αντικειμένων Μελάνης

Τα αντικείμενα σε μια διαφάνεια PowerPoint συνήθως αντιπροσωπεύονται από αντικείμενα Shape . Στην πιο απλή μορφή του, ένα σχήμα είναι ένα δοχείο που ορίζει την περιοχή του ίδιου του αντικειμένου (το πλαίσιο του) μαζί με ιδιότητες όπως το μέγεθος του δοχείου, το σχήμα και το φόντο. Για περισσότερες πληροφορίες, δείτε το Shape Layout Format.

Ωστόσο, όταν το PowerPoint επεξεργάζεται ένα αντικείμενο μελάνης, αγνοεί όλες τις ιδιότητες του πλαισίου του αντικειμένου (δοχείου) εκτός από το μέγεθός του. Το μέγεθος της περιοχής του δοχείου καθορίζεται από τις τυπικές μεθόδους Shape.getWidth και Shape.getHeight:

ink_powerpoint1

Ίχνη Μελάνης

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

Η πιο απλή μορφή κωδικοποίησης προσδιορίζει τις συντεταγμένες X και Y κάθε σημείου δείγματος. Όταν όλα τα συνδεδεμένα σημεία αποδοθούν, παράγουν μια εικόνα όπως αυτή:

ink_powerpoint2

Ιδιότητες Πινέλου για Σχεδίαση

Ένα πινέλο χρησιμοποιείται για τη σχεδίαση γραμμών που συνδέουν τα σημεία ενός ιχνός μελάνης. Το πινέλο έχει το δικό του χρώμα και μέγεθος, τα οποία αντιπροσωπεύονται από τις μεθόδους InkBrush.getColor και InkBrush.getSize.

Ορισμός Χρώματος Πινέλου Μελάνης

Αυτός ο κώδικας PHP δείχνει πώς να ορίσετε το χρώμα ενός πινέλου μελάνης:

$presentation = new Presentation("pres.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $ink = $slide->getShapes()->get_Item(0);
    $brush = $ink->getTraces()[0]->getBrush();
    $brush->setColor(java("java.awt.Color")->RED);
} finally {
    $presentation->dispose();
}

Ορισμός Μεγέθους Πινέλου Μελάνης

Αυτός ο κώδικας PHP δείχνει πώς να ορίσετε το μέγεθος ενός πινέλου μελάνης:

$presentation = new Presentation("pres.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $ink = $slide->getShapes()->get_Item(0);
    $brush = $ink->getTraces()[0]->getBrush();
    $brushSize = new Java("java.awt.Dimension", 5, 10);
    $brush->setSize($brushSize);
} finally {
    $presentation->dispose();
}

Γενικά, το πλάτος και το ύψος ενός πινέλου δεν ταιριάζουν, έτσι το PowerPoint δεν εμφανίζει το μέγεθος του πινέλου (η αντίστοιχη ενότητα δεδομένων είναι αμυδρή). Όταν το πλάτος και το ύψος του πινέλου ταιριάζουν, το PowerPoint εμφανίζει το μέγεθός του με αυτόν τον τρόπο:

ink_powerpoint3

Για σαφήνεια, ας αυξήσουμε το ύψος του αντικειμένου μελάνης και ας εξετάσουμε τις σημαντικές διαστάσεις:

ink_powerpoint4

Το δοχείο (πλαίσιο) δεν λαμβάνει υπόψη το μέγεθος των πινέλων — υποθέτει πάντα ότι το πάχος της γραμμής είναι μηδέν (δείτε την προηγούμενη εικόνα).

Συνεπώς, για να προσδιοριστεί η ορατή περιοχή ολόκληρου του αντικειμένου μελάνης, πρέπει να ληφθεί υπόψη το μέγεθος του πινέλου στα ίχνη του. Εδώ, το αντικείμενο-στόχος (το ίχνος του χειρόγραφου κειμένου) έχει κλιμακωθεί στο μέγεθος του δοχείου (πλαισίου). Όταν το μέγεθος του δοχείου αλλάζει, το μέγεθος του πινέλου παραμένει σταθερό και αντίστροφα.

ink_powerpoint5

Το PowerPoint χρησιμοποιεί παρόμοια συμπεριφορά για αντικείμενα κειμένου:

ink_powerpoint6

Έλεγχος Εμφάνισης Μελάνης Κατά την Εξαγωγή και Απόδοση

Η Aspose.Slides παρέχει την κλάση InkOptions για τον έλεγχο του πώς εμφανίζονται τα αντικείμενα μελάνης στην εξαγόμενη ή αποδοθείσα έξοδο. Μπορείτε να χρησιμοποιήσετε τις ιδιότητές της για να κρύψετε εντελώς τη μελάνη ή να αλλάξετε τον τρόπο που ερμηνεύονται οι λειτουργίες μάσκας πινέλου μελάνης.

Οι επιλογές μελάνης διατίθενται μέσω των επιλογών εξαγωγής ή απόδοσης για διάφορους τύπους εξόδου:

Έξοδος Ιδιότητα επιλογών μελάνης
PDF PdfOptions.getInkOptions
HTML HtmlOptions.getInkOptions
SVG SVGOptions.getInkOptions
TIFF TiffOptions.getInkOptions
Slide image RenderingOptions.getInkOptions

Οι ακόλουθες μέθοδοι της κλάσης InkOptions εκθέτουν τις ίδιες δύο ρυθμίσεις:

  • Η InkOptions.getHideInk καθορίζει αν τα αντικείμενα μελάνης περιλαμβάνονται στην έξοδο. Η προεπιλεγμένη τιμή της είναι false.
  • Η InkOptions.getInterpretMaskOpAsOpacity καθορίζει αν μια λειτουργία μάσκας ερμηνεύεται ως αδιαφάνεια κατά την απόδοση ενός πινέλου μελάνης. Η προεπιλεγμένη τιμή της είναι true. Καλέστε την InkOptions.setInterpretMaskOpAsOpacity με false για να χρησιμοποιήσετε τη λειτουργία ROP αντί αυτού.

Απόκρυψη Αντικειμένων Μελάνης στην Έξοδο PDF

Από προεπιλογή, τα αντικείμενα μελάνης παραμένουν ορατά κατά την εξαγωγή. Για να δημιουργήσετε μια καθαρή έξοδο χωρίς χειρόγραφες σημειώσεις ή άλλα περιεχόμενα μελάνης, καλέστε την InkOptions.setHideInk με true.

Το παρακάτω παράδειγμα PHP εξάγει μια παρουσίαση σε PDF ενώ κρύβει όλα τα αντικείμενα μελάνης:

$presentation = new Presentation("presentation.pptx");
try {
    $pdfOptions = new PdfOptions();
    $pdfOptions->getInkOptions()->setHideInk(true);

    $presentation->save("presentation_without_ink.pdf", SaveFormat::Pdf, $pdfOptions);
} finally {
    $presentation->dispose();
}

Απόκρυψη Αντικειμένων Μελάνης Κατά την Απόδοση Διαφάνειας ως Εικόνα

Για να κρύψετε τα αντικείμενα μελάνης κατά την απόδοση των διαφανειών ως bitmap εικόνες, ρυθμίστε την RenderingOptions.getInkOptions και περάστε τις ρυθμίσεις απόδοσης στην Slide.getImage.

Το παρακάτω παράδειγμα PHP αποδίδει την πρώτη διαφάνεια ως εικόνα PNG χωρίς αντικείμενα μελάνης:

$presentation = new Presentation("presentation.pptx");
try {
    $renderingOptions = new RenderingOptions();
    $renderingOptions->getInkOptions()->setHideInk(true);

    $slide = $presentation->getSlides()->get_Item(0);
    $image = $slide->getImage($renderingOptions);
    try {
        $image->save("slide_without_ink.png", ImageFormat::Png);
    } finally {
        $image->dispose();
    }
} finally {
    $presentation->dispose();
}

Έλεγχος Απόδοσης Μάσκας Μελάνης

Η ρύθμιση InkOptions.getInterpretMaskOpAsOpacity ελέγχει τον τρόπο με τον οποίο ερμηνεύονται οι λειτουργίες μάσκας κατά την απόδοση πινέλων μελάνης. Η προεπιλεγμένη τιμή είναι true, που χρησιμοποιεί την αδιαφάνεια. Για να χρησιμοποιήσετε τη λειτουργία ROP αντί αυτού, καλέστε την InkOptions.setInterpretMaskOpAsOpacity με false.

Το παρακάτω παράδειγμα PHP εξάγει μια διαφάνεια σε SVG και χρησιμοποιεί απόδοση βασισμένη σε ROP για λειτουργίες μάσκας μελάνης:

$presentation = new Presentation("presentation.pptx");
try {
    $svgOptions = new SVGOptions();
    $svgOptions->getInkOptions()->setInterpretMaskOpAsOpacity(false);

    $outputStream = new Java("java.io.FileOutputStream", "slide.svg");
    try {
        $slide = $presentation->getSlides()->get_Item(0);
        $slide->writeAsSvg($outputStream, $svgOptions);
    } finally {
        $outputStream->close();
    }
} finally {
    $presentation->dispose();
}

Η ίδια ρύθμιση μπορεί να εφαρμοστεί μέσω της TiffOptions.getInkOptions όταν εξάγεται μια παρουσίαση ή αποδίδεται μια διαφάνεια σε TIFF.

Επιλογή Αν Θα Κρύψετε ή Θα Διατηρήσετε τη Μελάνη

Όταν χρειάζεστε μια καθαρή έκδοση μιας σχολιασμένης παρουσίασης για διανομή χωρίς σημάδια ανασκόπησης, καλέστε την InkOptions.setHideInk με true κατά την εξαγωγή.

Διατηρήστε την InkOptions.getHideInk στην προεπιλεγμένη τιμή false όταν οι σημειώσεις μελάνης αποτελούν μέρος του προοριζόμενου περιεχομένου, όπως σχόλια ανασκόπησης, χειρόγραφες σημειώσεις, επισημάνσεις ή σχέδια που πρέπει να παραμείνουν ορατά στο εξαγόμενο αποτέλεσμα. Αυτό επιτρέπει στις εφαρμογές να παράγουν ξεχωριστές εξόδους ανασκόπησης και τελικές από την ίδια παρουσίαση χωρίς να τροποποιούν τα αρχικά αντικείμενα μελάνης.

Συχνές Ερωτήσεις

Μπορώ να αλλάξω το χρώμα ή το μέγεθος μιας υπάρχουσας γραμμής μελάνης;

Ναι. Ανακτήστε το ίχνος από το Ink.getTraces, στη συνέχεια αλλάξτε το InkTrace.getBrush. Καλέστε το InkBrush.setColor ή το InkBrush.setSize για να αλλάξετε το πινέλο.

Αλλάζει η απόκρυψη της μελάνης την πηγαία παρουσίαση;

Όχι. Η κλήση της InkOptions.setHideInk επηρεάζει μόνο το αποδοθέν ή εξαγόμενο αποτέλεσμα· δεν αφαιρεί ή τροποποιεί τα αντικείμενα μελάνης στην πηγαία παρουσίαση.

Ποιοι τύποι εξαγωγής υποστηρίζουν επιλογές μελάνης;

Μπορείτε να ρυθμίσετε τις επιλογές μελάνης για PDF, HTML, SVG, TIFF και bitmap εικόνες διαφανειών μέσω των αντίστοιχων επιλογών εξαγωγής ή απόδοσης που εμφανίζονται παραπάνω.

Περαιτέρω ανάγνωση