Come ridimensionare le immagini nei documenti docx con una macro ONLYOFFICE
Di recente abbiamo creato una macro per ridimensionare le immagini nel nostro editor di presentazioni. Continuando con le macro per la modifica delle immagini, creeremo una semplice macro per modificare facilmente le immagini all’interno dei documenti di testo, che ci permetterà di effettuare regolazioni come il ridimensionamento, il ritaglio e altro ancora. Vediamo come costruire questa semplice macro.
Costruzione della macro
const processImage = (images, width = 100, height = 100) => {
images.forEach((element) => {
Cominciamo definendo la funzione processImage() che si occupa delle modifiche delle immagini nel documento. Questa funzione vieni iterata su ogni immagine nel documento usando il metodo forEach().
element.SetSize(width * 36000, height * 36000);
// Optional settings for flipping and wrapping
// element.SetVertFlip(true);
// element.SetHorFlip(true);
// element.SetWrappingStyle("inline");
All’interno del ciclo forEach usiamo il metodo SetSize() per ridimensionare ogni immagine alla larghezza e altezza desiderate. Puoi regolare i parametri della larghezza e dell’altezza a tuo piacimento, ma se lasciate immutate le dimensioni predefinite saranno 100 x 100 mm.
Nota bene: Le dimensioni usate nel metodo SetSize() sono calcolate con le unità di misura inglesi (EMUs). La larghezza e l’altezza inserite in millimetri vengono moltiplicate per 36,000 per essere convertite in EMU. Il passaggio dei valori in (mm) senza conversione non è possibile.
const document = Api.GetDocument();
const allImg = document.GetAllImages();
E ora arriva il fulcro della macro. Si inizia recuperando il documento nella variabile document e memorizzando tutte le immagini del documento nell’array allImg.
if (!allImg || allImg.length === 0) {
console.error(
`No images found in your document. Add some images and try again.`
);
return;
}
Successivamente, eseguiamo un ciclo if per verificare che l’array allImg esista e non sia vuoto. Se una delle due condizioni non è soddisfatta, si interrompe l’esecuzione della macro.
processImage(allImg);
Infine, richiamiamo la funzione processImage() (definita sopra), passando l’array allImg.
Codice completo della macro
Ecco il codice per l’intera macro:
(function () {
const processImage = (images, width = 100, height = 100) => {
images.forEach((element) => {
try {
// Resizes the image to the passed height and width. The *36000 converts to EMUs (Office Open XML unit).
element.SetSize(width * 36000, height * 36000);
// Optional settings for flipping and wrapping
// element.SetVertFlip(true);
// element.SetHorFlip(true);
// element.SetWrappingStyle("inline"); //other available wrapping styles : "square" | "tight" | "through" | "topAndBottom" | "behind" | "inFront"
} catch (error) {
console.error(
`Could not tweak one or more images. Please check your document once.`
);
}
});
};
const document = Api.GetDocument();
const allImg = document.GetAllImages();
if (!allImg || allImg.length === 0) {
console.error(
`No images found in your document. Add some images and try again.`
);
return;
}
processImage(allImg);
})();
Ora vediamo la macro in azione:
Ecco fatto! Una semplice macro che consente di modificare le immagini nei documenti di testo. L’API di ONLYOFFICE è uno strumento potente, in grado di gestire una varietà di compiti e di aprire infinite possibilità per lo sviluppo di altre macro e plugin. Grazie a questa API, è possibile sbloccare tutta la potenza di ONLYOFFICE per migliorare la produttività e ottimizzare i flussi di lavoro.
Se hai domande o concetti innovativi, ti invitiamo a condividerli con noi. Apprezziamo il tuo contributo e non vediamo l’ora di collaborare con te. In bocca al lupo e buon lavoro!