JavaScript'te Sunumları Kaydet

Genel Bakış

Sunum oluşturduktan sonra veya var olan bir sunumu açtıktan sonra, sonucu yazmak için Presentation.save metodunu kullanın. Aspose.Slides for Node.js via Java, bir sunumu PowerPoint, OpenDocument, PDF ve diğer formatlarda bir dosyaya veya akışa kaydedebilir. Aşağıdaki bölümler standart kaydetme işlemlerini ve PPTX çıktısı için mevcut seçenekleri kapsar.

Sunumları Dosyalara Kaydet

Bir sunumu dosyaya kaydetmek için, çıktı yolunu ve bir SaveFormat değerini Presentation.save metoduna geçirin. Format değeri, Aspose.Slides’ın oluşturacağı dosya türünü belirler.

Aşağıdaki örnek bir sunum oluşturur ve PPTX dosyası olarak kaydeder:

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation();
try {
    // Burada sunum içeriğini ekleyin veya değiştirin.

    presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Sunumları Orijinal Formatlarında Kaydet

Dosya ve akış tespiti örnekleri, yeni oluşturulan sunumların davranışı ve kaynak ile çıktı formatları arasındaki ayrım için, Determine the Original Presentation Format bölümüne bakın.

Batch işleme uygulamasında, giriş formatı önceden bilinmeyebilir. Bir dosya yüklendikten sonra, orijinal formatını Presentation.getSourceFormat metodundan okuyun. Elde edilen SourceFormat değerini SlideUtil.toSaveFormat metoduna geçirerek karşılık gelen SaveFormat değerini alın ve ardından Presentation.save ile değiştirilmiş sunumu yazın.

Aşağıdaki tam örnek, bir giriş dizinindeki her dosyayı işler, başlığını günceller ve yüklendiği formatta bir çıktı dizinine kaydeder:

const aspose = { slides: require("aspose.slides.via.java") };
const fs = require("fs");
const path = require("path");

const inputDirectory = "Input";
const outputDirectory = "Output";

if (!fs.existsSync(inputDirectory)) {
    console.error("The input directory does not exist.");
} else {
    fs.mkdirSync(outputDirectory, { recursive: true });

    const inputFiles = fs.readdirSync(inputDirectory, { withFileTypes: true })
        .filter((entry) => entry.isFile());

    for (const inputFile of inputFiles) {
        const inputPath = path.join(inputDirectory, inputFile.name);
        try {
            const presentation = new aspose.slides.Presentation(inputPath);
            try {
                const saveFormat = aspose.slides.SlideUtil.toSaveFormat(presentation.getSourceFormat());
                presentation.getDocumentProperties().setTitle("Processed by the batch application");

                const outputPath = path.join(outputDirectory, inputFile.name);
                presentation.save(outputPath, saveFormat);
            } finally {
                presentation.dispose();
            }
        } catch (error) {
            console.error(`Cannot process '${inputPath}': ${error.message}`);
        }
    }
}

SlideUtil.toSaveFormat PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP ve PowerPoint XML’i ilgili sunum kaydetme formatlarına eşler. Yalnızca sunum kaynak formatlarını eşler; PDF, HTML, TIFF veya resimler gibi dışa aktarma formatlarını seçmek için tasarlanmamıştır. Desteklenmeyen veya geçersiz bir SourceFormat değeri geçmek bir hataya yol açar.

Eski PPT, PPS ve POT dosyaları aynı ikili konteyneri kullanır. Böyle bir sunum, dosya uzantısı olmadan bir akıştan yüklendiğinde, bir PPS veya POT dosyası PPT olarak tanımlanabilir. Bu eski alt türlerin korunması gerekiyorsa, orijinal dosya adını veya format meta verilerini ayrı olarak tutun ve çıktı dosya adı ve formatını seçerken kullanın.

Sunumları Akışlara Kaydet

Son bir dosya yoluna bağlı kalmadan bir sunumu yazmak için, yazılabilir bir akış ve bir SaveFormat değeri Presentation.save metoduna geçirin. Bu yaklaşım, çıkışın bir web hizmetinden döndürülmesi, bir veritabanına kaydedilmesi veya bellekte işlenmesi gerektiğinde yararlıdır.

Aşağıdaki örnek yeni bir sunumu bir dosya akışına kaydeder:

const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");

const presentation = new aspose.slides.Presentation();
try {
    const outputStream = java.newInstanceSync("java.io.FileOutputStream", "output.pptx");
    try {
        presentation.save(outputStream, aspose.slides.SaveFormat.Pptx);
    } finally {
        outputStream.close();
    }
} finally {
    presentation.dispose();
}

Önceden Tanımlı Görünüm Türüyle Sunumları Kaydet

PowerPoint’in kaydedilmiş bir sunumu ilk açtığı görünümü belirtebilirsiniz. Kaydetmeden önce bir ViewType değeri ile ViewProperties.setLastView metodunu kullanın.

Aşağıdaki örnek Slide Master görünümünü başlangıç görünümü olarak yapılandırır:

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation();
try {
    presentation.getViewProperties().setLastView(aspose.slides.ViewType.SlideMasterView);
    presentation.save("slide-master-view.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Sunumları Katı Office Open XML Formatında Kaydet

Office Open XML’in Strict profiline uyan bir PPTX dosyası oluşturmak için, bir PptxOptions örneği oluşturun ve setConformance metodunu Conformance.Iso29500_2008_Strict ile kullanın. Ardından seçenekleri Presentation.save metoduna geçirin.

const aspose = { slides: require("aspose.slides.via.java") };

const options = new aspose.slides.PptxOptions();
options.setConformance(aspose.slides.Conformance.Iso29500_2008_Strict);

const presentation = new aspose.slides.Presentation();
try {
    presentation.save("strict-office-open-xml.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Sunumları Office Open XML Formatında Zip64 Modunda Kaydet

Standart bir ZIP arşivi, her girişin sıkıştırılmış ve sıkıştırılmamış boyutunu, toplam arşiv boyutunu ve giriş sayısını sınırlar. PPTX dosyası bir ZIP arşivi olduğundan, çok büyük bir sunum bu sınırlamaları aşabilir. ZIP64 uzantıları geçerli boyut ve giriş sayısı sınırlamalarını artırır.

PptxOptions.setZip64Mode metodunu kullanarak Aspose.Slides’ın ZIP64 uzantılarını yazıp yazmayacağını kontrol edin:

  • IfNecessary yalnızca sunum standart ZIP limitlerini aştığında ZIP64 kullanır. Bu varsayılan moddur.
  • Never ZIP64 uzantılarını devre dışı bırakır.
  • Always her zaman ZIP64 uzantılarını yazar.

Aşağıdaki örnek, çıktı sunumu için her zaman ZIP64 uzantılarını etkinleştirir:

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const options = new aspose.slides.PptxOptions();
    options.setZip64Mode(aspose.slides.Zip64Mode.Always);

    presentation.save("output-zip64.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Sunumları Office Open XML Formatında Sıkıştırma Düzeyleriyle Kaydet

PPTX çıktısı için, kaydetme hızını dosya boyutuna göre dengelemek üzere PptxOptions.setCompressionLevel metodunu kullanabilirsiniz. CompressionLevel sınıfı aşağıdaki değerleri sağlar:

  • None veriyi sıkıştırma olmadan depolar.
  • Level1 en hızlı sıkıştırmayı ve en büyük sıkıştırılmış çıktıyı sağlar.
  • Level2 ile Level5 arasında, kaydetme hızından ziyade daha küçük çıktı elde etmeyi tercih eder.
  • Level6 kaydetme hızı ile dosya boyutunu dengeler. Bu varsayılan düzeydedir.
  • Level7 ve Level8 daha da küçük çıktıyı, kaydetme hızına tercih eder.
  • Level9 en güçlü sıkıştırmayı sağlar ve en fazla işlem süresi gerektirir.

Aşağıdaki örnek bir sunumu sıkıştırma olmadan kaydeder:

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const options = new aspose.slides.PptxOptions();
    options.setCompressionLevel(aspose.slides.CompressionLevel.None);

    presentation.save("output-no-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Aşağıdaki örnek maksimum sıkıştırma düzeyini kullanır:

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const options = new aspose.slides.PptxOptions();
    options.setCompressionLevel(aspose.slides.CompressionLevel.Level9);

    presentation.save("output-maximum-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Küçük Resmi Yenilemeden Sunumları Kaydet

PPTX olarak kaydedilen bir sunumda, PptxOptions.setRefreshThumbnail metodu belge küçük resmini kontrol eder:

  • true kaydetme sırasında küçük resmi yeniden oluşturur. Bu varsayılan değerdir.
  • false mevcut küçük resmi korur. Sunumda küçük resim yoksa, Aspose.Slides bir tane oluşturmaz.

Aşağıdaki örnek, bir sunumu küçük resmi yenilemeden kaydeder:

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const options = new aspose.slides.PptxOptions();
    options.setRefreshThumbnail(false);

    presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Kaydetme İlerleme Güncellemelerini Yüzde Olarak Al

Kaydetme işlemini izlemek için, bir Java vekiliyle IProgressCallback arayüzünü uygulayın ve uygulamayı SaveOptions.setProgressCallback metoduna geçirin. Aspose.Slides, dışa aktarma sırasında ilerleme değerleriyle IProgressCallback.reporting metodunu çağırır.

Aşağıdaki örnek, bir PDF dışa aktarımının ilerlemesini konsola raporlar:

const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");

const exportProgressHandler = java.newProxy("com.aspose.slides.IProgressCallback", {
    reporting: function(progressValue) {
        const progress = Math.floor(progressValue);
        console.log(`${progress}% of the file has been converted.`);
    }
});

const options = new aspose.slides.PdfOptions();
options.setProgressCallback(exportProgressHandler);

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    presentation.save("output.pdf", aspose.slides.SaveFormat.Pdf, options);
} finally {
    presentation.dispose();
}

FAQ

Aspose.Slides artımlı veya “hızlı kaydetme” destekliyor mu?

Hayır. Her kaydetme işlemi, yalnızca değişen bölümleri güncellemek yerine tam bir çıktı dosyası yazar.

Birden çok iş parçacığı aynı Presentation örneğini kaydedebilir mi?

Hayır. Bir Presentation örneği thread-safe değildir. Her bir örneğe aynı anda yalnızca bir iş parçacığından erişin ve kaydedin.

Sunumu kaydettiğimde bağlantılar ve harici bağlı dosyalar ne olur?

Hyperlinks sunumda kalır. Aspose.Slides harici bağlı dosyaları kopyalamaz, bu yüzden kaydedilen sunum hâlâ bu dosyaların konumlarına erişebilmelidir.

Yazar, başlık, şirket ve oluşturulma tarihi gibi belge meta verilerini kaydedebilir miyim?

Evet. Kaydetmeden önce uygun document properties ayarlayın ve Aspose.Slides bunları çıktı dosyasına yazar.