Zapisz prezentacje w .NET

Omówienie

Open Presentations in C# opisuje, jak używać klasy Presentation do otwierania prezentacji. Ten artykuł wyjaśnia, jak tworzyć i zapisywać prezentacje. Klasa Presentation zawiera zawartość prezentacji. Niezależnie od tego, czy tworzysz prezentację od podstaw, czy modyfikujesz istniejącą, będziesz chciał ją zapisać po zakończeniu. Dzięki Aspose.Slides dla .NET możesz zapisywać do pliku lub strumienia. Ten artykuł opisuje różne sposoby zapisu prezentacji.

Zapisz prezentacje do plików

Zapisz prezentację do pliku, wywołując metodę Save klasy Presentation. Przekaż nazwę pliku i format zapisu do metody. Poniższy przykład pokazuje, jak zapisać prezentację przy użyciu Aspose.Slides.

using Aspose.Slides;
using Aspose.Slides.Export;

// Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji.
using (Presentation presentation = new Presentation())
{
    // Wykonaj tutaj pewną pracę...

    // Zapisz prezentację do pliku.
    presentation.Save("Output.pptx", SaveFormat.Pptx);
}

Zapisz prezentacje do strumieni

Możesz zapisać prezentację do strumienia, przekazując strumień wyjściowy do metody Save klasy Presentation. Prezentację można zapisać w wielu typach strumieni. W poniższym przykładzie tworzymy nową prezentację i zapisujemy ją do strumienia pliku.

using Aspose.Slides;
using Aspose.Slides.Export;

// Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji.
using (Presentation presentation = new Presentation())
{
    using (FileStream fileStream = new FileStream("Output.pptx", FileMode.Create))
    {
        // Zapisz prezentację do strumienia.
        presentation.Save(fileStream, SaveFormat.Pptx);
    }
}

Zapisz prezentacje z wcześniej określonym typem widoku

Aspose.Slides umożliwia ustawienie początkowego widoku, którego PowerPoint używa po otwarciu wygenerowanej prezentacji, przy użyciu klasy ViewProperties. Ustaw właściwość LastView na wartość z wyliczenia ViewType.

using Aspose.Slides;
using Aspose.Slides.Export;

using (Presentation presentation = new Presentation())
{
    presentation.ViewProperties.LastView = ViewType.SlideMasterView;
    presentation.Save("SlideMasterView.pptx", SaveFormat.Pptx);
}

Zapisz prezentacje w ściśle określonym formacie Office Open XML

Aspose.Slides umożliwia zapisanie prezentacji w ściśle określonym formacie Office Open XML. Użyj klasy PptxOptions i ustaw jej właściwość zgodności podczas zapisu. Jeśli ustawisz Conformance.Iso29500_2008_Strict, plik wyjściowy zostanie zapisany w ściśle określonym formacie Office Open XML.

Poniższy przykład tworzy prezentację i zapisuje ją w ściśle określonym formacie Office Open XML.

using Aspose.Slides;
using Aspose.Slides.Export;

PptxOptions options = new PptxOptions()
{
    Conformance = Conformance.Iso29500_2008_Strict
};

// Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji.
using (Presentation presentation = new Presentation())
{
    // Zapisz prezentację w ścisłym formacie Office Open XML.
    presentation.Save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options);
}

Zapisz prezentacje w formacie Office Open XML w trybie Zip64

Plik Office Open XML jest archiwum ZIP, które narzuca ograniczenia 4 GB (2^32 bajtów) na rozmiar nieskompresowanego pliku, rozmiar skompresowanego pliku i łączny rozmiar archiwum, a także ogranicza liczbę plików w archiwum do 65 535 (2^16‑1). Rozszerzenia formatu ZIP64 podnoszą te limity do 2^64.

Właściwość IPptxOptions.Zip64Mode umożliwia wybranie, kiedy używać rozszerzeń formatu ZIP64 podczas zapisu pliku Office Open XML.

Ta właściwość oferuje następujące tryby:

  • IfNecessary używa rozszerzeń formatu ZIP64 tylko wtedy, gdy prezentacja przekracza powyższe ograniczenia. To jest tryb domyślny.
  • Never nigdy nie używa rozszerzeń formatu ZIP64.
  • Always zawsze używa rozszerzeń formatu ZIP64.

Poniższy kod demonstruje, jak zapisać prezentację jako plik PPTX z włączonymi rozszerzeniami formatu ZIP64:

using Aspose.Slides;
using Aspose.Slides.Export;

using (Presentation presentation = new Presentation("Sample.pptx"))
{
    presentation.Save("OutputZip64.pptx", SaveFormat.Pptx, new PptxOptions()
    {
        Zip64Mode = Zip64Mode.Always
    });
}

Zapisz prezentacje w formacie Office Open XML z poziomami kompresji

Podczas pracy z dużymi prezentacjami możesz dostosować poziom kompresji, aby zrównoważyć rozmiar pliku i czas przetwarzania. W zależności od wymagań możesz preferować szybsze przetwarzanie lub mniejsze pliki wyjściowe.

Aspose.Slides udostępnia właściwość IPptxOptions.CompressionLevel, która pozwala określić poziom kompresji używany przy zapisywaniu prezentacji w formacie Office Open XML.

Dostępne są następujące poziomy kompresji:

  • None: Nie stosuje się kompresji. Pliki są przechowywane w oryginalnej formie.
  • Level1: Najszybsza kompresja z najniższym współczynnikiem kompresji.
  • Level2: Szybsza kompresja z nieco lepszym współczynnikiem kompresji niż Level1.
  • Level3: Zapewnia lepszą kompresję niż Level2, przy umiarkowanym wpływie na czas przetwarzania.
  • Level4: Zapewnia lepszą kompresję niż Level3.
  • Level5: Zapewnia lepszą kompresję niż Level4, przy dodatkowym czasie przetwarzania.
  • Level6: Standardowa kompresja, oferująca dobrą równowagę między szybkością przetwarzania a rozmiarem pliku. To jest domyślny poziom kompresji.
  • Level7: Zapewnia lepszą kompresję niż Level6, przy wolniejszym przetwarzaniu.
  • Level8: Zapewnia lepszą kompresję niż Level7.
  • Level9: Maksymalna kompresja. Produkuje najmniejszy rozmiar pliku kosztem najdłuższego czasu przetwarzania.

Poniższy przykład demonstruje, jak zapisać prezentację jako plik PPTX bez kompresji:

using Aspose.Slides;
using Aspose.Slides.Export;

using (Presentation pres = new Presentation("Sample.pptx"))
{
    pres.Save("Sample-out.pptx", SaveFormat.Pptx, new PptxOptions
    {
        CompressionLevel = CompressionLevel.None
    });
}

Ten przykład pokazuje, jak zapisać prezentację jako plik PPTX z maksymalną kompresją:

using Aspose.Slides;
using Aspose.Slides.Export;

using (Presentation pres = new Presentation("Sample.pptx"))
{
    pres.Save("Sample-level9.pptx", SaveFormat.Pptx, new PptxOptions
    {
        CompressionLevel = CompressionLevel.Level9
    });
}

Zapisz prezentacje bez odświeżania miniatury

Właściwość PptxOptions.RefreshThumbnail kontroluje generowanie miniatury podczas zapisywania prezentacji do PPTX:

  • Jeśli ustawiona na true, miniatura jest odświeżana podczas zapisu. To jest domyślne zachowanie.
  • Jeśli ustawiona na false, bieżąca miniatura jest zachowywana. Jeśli prezentacja nie ma miniatury, nie zostanie wygenerowana.

W poniższym kodzie prezentacja jest zapisywana do PPTX bez odświeżania jej miniatury.

using Aspose.Slides;
using Aspose.Slides.Export;

using (Presentation presentation = new Presentation("Sample.pptx"))
{
    presentation.Save("Output.pptx", SaveFormat.Pptx, new PptxOptions()
    {
        RefreshThumbnail = false
    });
}

Zapisz aktualizacje postępu w procentach

Interfejs IProgressCallback jest używany poprzez właściwość ProgressCallback udostępnioną przez interfejs ISaveOptions oraz abstrakcyjną klasę SaveOptions. Przypisz implementację IProgressCallback do ProgressCallback, aby otrzymywać aktualizacje postępu zapisu w procentach.

Poniższe fragmenty kodu pokazują, jak używać IProgressCallback.

using Aspose.Slides;
using Aspose.Slides.Export;

ISaveOptions saveOptions = new PdfOptions();
saveOptions.ProgressCallback = new ExportProgressHandler();

using (Presentation presentation = new Presentation("Sample.pptx"))
{
    presentation.Save("Output.pdf", SaveFormat.Pdf, saveOptions);
}
using Aspose.Slides;

class ExportProgressHandler : IProgressCallback
{
    public void Reporting(double progressValue)
    {
        // Użyj tutaj wartości procentowej postępu.
        int progress = Convert.ToInt32(progressValue);

        Console.WriteLine(progress + "% of the file has been converted.");
    }
}

FAQ

Czy obsługiwany jest „szybki zapis” (zapis przyrostowy), tak aby zapisywane były tylko zmiany?
Nie. Zapis tworzy pełny plik docelowy przy każdym zapisie; przyrostowy „szybki zapis” nie jest obsługiwany.

Czy zapisywanie tej samej instancji Presentation z wielu wątków jest bezpieczne wątkowo?
Nie. Instancja Presentation nie jest bezpieczna wątkowo; zapisuj ją z jednego wątku.

Co się dzieje z hiperłączami i zewnętrznie powiązanymi plikami podczas zapisu?
Hyperlinki są zachowywane. Zewnętrznie powiązane pliki (np. wideo poprzez ścieżki względne) nie są kopiowane automatycznie — upewnij się, że odwoływane ścieżki pozostają dostępne.

Czy mogę ustawić/zapisać metadane dokumentu (Autor, Tytuł, Firma, Data)?
Tak. Standardowe właściwości dokumentu są obsługiwane i zostaną zapisane do pliku przy zapisie.