# Multitrådning i Aspose.Slides för Node.js via Java

> Aspose.Slides för Node.js via Java multitrådning förbättrar PowerPoint- och OpenDocument-behandling. Upptäck bästa praxis för effektiva presentationsarbetsflöden.

Source: https://docs.aspose.com/slides/sv/nodejs-java/multithreading/
Updated: 2026-06-11

## **Introduktion**

Även om parallellt arbete med presentationer är möjligt (förutom parsning/laddning/kloning) och allt går bra (ofta), finns det en liten risk att du får felaktiga resultat när du använder biblioteket i flera trådar.

Vi rekommenderar starkt att du **inte** använder en enda [Presentation](https://reference.aspose.com/slides/sv/nodejs-java/aspose.slides/Presentation) instans i en multitrådad miljö eftersom det kan leda till oförutsägbara fel eller misslyckanden som inte är lätta att upptäcka.

Det är **inte** säkert att ladda, spara och/eller klona en instans av en [Presentation](https://reference.aspose.com/slides/sv/nodejs-java/aspose.slides/Presentation) klass i flera trådar. Sådana operationer **inte** stöds. Om du behöver utföra sådana uppgifter måste du parallellisera operationerna med flera enklatrådade processer – och varje process bör använda sin egen presentationsinstans.

## **Konvertera presentationsbilder till bilder parallellt**

Låt oss säga att vi vill konvertera alla bilder från en PowerPoint-presentation till PNG-bilder parallellt. Eftersom det är osäkert att använda en enda `Presentation`‑instans i flera trådar delar vi upp presentationsbilderna i separata presentationer och konverterar bilderna till bilder parallellt, med varje presentation i en separat tråd. Följande kodexempel visar hur man gör detta.

```javascript
const inputFilePath = "sample.pptx";
const outputFilePathTemplate = "slide_%d.png";
const imageScale = 2;

(async () => {
    const presentation = new aspose.slides.Presentation(inputFilePath);
    const slideCount = presentation.getSlides().size();
    const slideSize = presentation.getSlideSize().getSize();
    const slideWidth = slideSize.getWidth();
    const slideHeight = slideSize.getHeight();

    const conversionTasks = Array.from({ length: slideCount }, async (_, slideIndex) => {
        // Extrahera bild i till en separat presentation.
        const slidePresentation = new aspose.slides.Presentation();
        slidePresentation.getSlideSize().setSize(slideWidth, slideHeight, aspose.slides.SlideSizeScaleType.DoNotScale);
        slidePresentation.getSlides().removeAt(0);
        slidePresentation.getSlides().addClone(presentation.getSlides().get_Item(slideIndex));

        try {
            const slide = slidePresentation.getSlides().get_Item(0);
            const image = slide.getImage(imageScale, imageScale);
            const imageFilePath = outputFilePathTemplate.replace("%d", slideIndex + 1);

            image.save(imageFilePath, aspose.slides.ImageFormat.Png);
            console.log(`Saved slide ${slideIndex + 1} to ${imageFilePath}`);
        } catch (error) {
            console.error(`Error processing slide ${slideIndex + 1}: ${error.message}`);
        } finally {
            slidePresentation.dispose();
        }
    });

    // Vänta på att alla uppgifter ska slutföras.
    await Promise.all(conversionTasks);

    presentation.dispose();
})();
```

## **FAQ**

**Behöver jag anropa licensinställning i varje tråd?**

Nej. Det räcker att göra det en gång per process/applikationsdomän innan trådarna startar. Om [licensinställning](/slides/sv/nodejs-java/licensing/) kan anropas samtidigt (till exempel under lat initiering), synkronisera det anropet eftersom licensinställningsmetoden i sig inte är trådsäker.

**Kan jag skicka `Presentation`- eller `Slide`-objekt mellan trådar?**

Att skicka "live" presentationsobjekt mellan trådar rekommenderas inte: använd oberoende instanser per tråd eller förhandsskapa separata presentationer/slide-behållare för varje tråd. Detta tillvägagångssätt följer den allmänna rekommendationen att inte dela en enda presentationsinstans över trådar.

**Är det säkert att parallellisera export till olika format (PDF, HTML, bilder) förutsatt att varje tråd har sin egen `Presentation`‑instans?**

Ja. Med oberoende instanser och separata utmatningssökvägar parallelliseras sådana uppgifter vanligtvis korrekt; undvik delade presentationsobjekt och delade I/O‑strömmar.

**Vad bör jag göra med globala teckensnittsinställningar (mappar, ersättningar) i multitrådning?**

Initiera alla globala teckensnittsinställningar innan trådarna startas och förändra dem inte under parallellt arbete. Detta eliminerar tävlingar när delade teckensnittresurser nås.
