Node.js'te Orijinal Sunum Biçimini Belirleme
Genel Bakış
Bir sunumu yükledikten sonra, orijinal biçimini belirlemek için Presentation.getSourceFormat yöntemini çağırın. Gelecek işleme, mevcut örneğin yüklendiği biçime bağlı olduğunda bunu kullanın.
Kaynak biçim, çıktı dosyası için seçilen SaveFormat biçiminden farklıdır. Başka bir biçime kaydetmek, mevcut örneğin kaynak biçimini değiştirmez.
Bir Dosyanın Kaynak Biçimini Okuma
Bu örnek mevcut bir sample.pptx dosyası gerektirir. Dosyayı yükler ve dosya adını kullanmak yerine Presentation.getSourceFormat kullanarak bir uygulama işleme politikası seçer. Başka biçimleri denemek için giriş yolunu değiştirin. Örnek seçilen politikayı yazdırır; mesajları kendi uygulama mantığınızla değiştirin.
const aspose = require("aspose.slides.via.java");
const presentation = new aspose.Presentation("sample.pptx");
try {
switch (presentation.getSourceFormat()) {
case aspose.SourceFormat.Ppt:
case aspose.SourceFormat.Pps:
case aspose.SourceFormat.Pot:
console.log("Use the legacy PowerPoint processing policy.");
break;
case aspose.SourceFormat.Pptx:
console.log("Use the standard PPTX processing policy.");
break;
default:
console.log("Use the general policy for source format " + presentation.getSourceFormat() + ".");
break;
}
} finally {
presentation.dispose();
}
Desteklenen Değerleri Tanıma
SourceFormat sınıfı, aşağıdaki sunum biçimlerini ayırt eden tam sayı sabitlerini tanımlar. Aşağıdaki uzantılar, orijinal dosya adının yeniden oluşturulması değil, geleneksel uzantılardır.
| SourceFormat değeri | Uzantı | Biçim |
|---|---|---|
Ppt |
.ppt |
PowerPoint 97–2003 presentation |
Pptx |
.pptx |
Office Open XML presentation |
Pptm |
.pptm |
Macro-enabled Office Open XML presentation |
Pps |
.pps |
PowerPoint 97–2003 slide show |
Ppsx |
.ppsx |
Office Open XML slide show |
Ppsm |
.ppsm |
Macro-enabled Office Open XML slide show |
Pot |
.pot |
PowerPoint 97–2003 template |
Potx |
.potx |
Office Open XML template |
Potm |
.potm |
Macro-enabled Office Open XML template |
Odp |
.odp |
OpenDocument presentation |
Otp |
.otp |
OpenDocument presentation template |
Fodp |
.fodp |
Flat XML ODF presentation |
Xml |
.xml |
PowerPoint XML presentation |
Bir Akışın Kaynak Biçimini Okuma
Bu örnek mevcut bir sample.pps dosyası gerektirir. Baytlarını bir bellek akışına okumak, bir dosya adı olmadan alınan girdiyi (veritabanı değeri veya yüklenmiş bayt dizisi gibi) modellemektedir. Presentation yapıcı yalnızca akışı alır.
const aspose = require("aspose.slides.via.java");
const java = require("java");
const fs = require("fs");
const buffer = fs.readFileSync("sample.pps");
const bytes = java.newArray("byte", Array.from(buffer));
const stream = java.newInstanceSync("java.io.ByteArrayInputStream", bytes);
try {
const presentation = new aspose.Presentation(stream);
try {
console.log("Source format: " + presentation.getSourceFormat());
} finally {
presentation.dispose();
}
} finally {
stream.close();
}
PPT, PPS ve POT aynı temel ikili biçimi kullanır. Dosya yoluyla yüklerken, uzantı slayt gösterisi mi yoksa şablon mu olduğunu ayırt etmeye yardımcı olabilir. Dosya adı olmadan, eski PPS ve POT içeriği SourceFormat.Ppt olarak raporlanabilir; yukarıdaki PPS örneği SourceFormat.Ppt‘in tam sayı değerini yazdırır.
Eğer uygulamanız bu ayrımı korumak zorundaysa, orijinal dosya adını veya alt tür meta verilerini ayrı olarak tutun. Uzantı bu eski alt türler için yararlı bir ipucu olsa da, rastgele bir sunum içeriğini tanımlamanın tek temeli olmamalıdır.
Yüklemeden Önce ve Sonra Algılamayı Karşılaştırma
PresentationFactory.getPresentationInfo ve PresentationInfo.getLoadFormat yöntemlerini, bir dosyayı tam sunum nesne modeline yüklemeden önce incelemeniz gerektiğinde kullanın. Örneği zaten var olan bir örnek için Presentation.getSourceFormat kullanın.
Bu örnek sample.pptx gerektirir ve sırasıyla LoadFormat.Pptx ve SourceFormat.Pptx tam sayı değerlerini yazdırır. Üretimde, işleme aşamanıza uygun API’yi seçin; zaten yüklü bir sunum, kaynak biçimini elde etmek için ikinci bir incelemeye ihtiyaç duymaz.
const aspose = require("aspose.slides.via.java");
const path = "sample.pptx";
const information = aspose.PresentationFactory.getInstance().getPresentationInfo(path);
console.log("Before loading: " + information.getLoadFormat());
const presentation = new aspose.Presentation(path);
try {
console.log("After loading: " + presentation.getSourceFormat());
} finally {
presentation.dispose();
}
Sonuçlar farklı sınıflardan gelen sabitleri kullanır: LoadFormat ve SourceFormat. Sayısal değerlerini karşılaştırmayın veya her biçimin aynı algılama sonuçlarına sahip olduğunu varsaymayın. PowerPoint XML, yüklemeden önce LoadFormat.Unknown ve yükledikten sonra SourceFormat.Xml olarak raporlanabilir.
Kaynak ve Çıktı Biçimlerini Ayrı Tutun
Bu örnek sample.pptx gerektirir ve converted.odp yazar. SourceFormat.Pptx‘in tam sayı değerini hem kaydetmeden önce hem de kaydettikten sonra yazdırır. Yalnızca ODP çıktısından yüklenen yeni örnek Odp raporlar.
const aspose = require("aspose.slides.via.java");
const presentation = new aspose.Presentation("sample.pptx");
try {
console.log("Before saving: " + presentation.getSourceFormat());
presentation.save("converted.odp", aspose.SaveFormat.Odp);
console.log("After saving: " + presentation.getSourceFormat());
const reopened = new aspose.Presentation("converted.odp");
try {
console.log("Reopened output: " + reopened.getSourceFormat());
} finally {
reopened.dispose();
}
} finally {
presentation.dispose();
}
Yeni new Presentation() ile oluşturulan bir sunum, SourceFormat.Pptx raporlar. Giriş dosyası yoktur: bu, yeni oluşturulmuş bir örnek için varsayılan değerdir, bir PPTX dosyasının yüklendiğinin kanıtı değildir. Eğer bu ayrım sizin için önemliyse, uygulamanızın örneği oluşturup oluşturmadığını ayrı olarak izleyin.
Bir Kaynak Biçimini Uzantıya Eşleme
Aşağıdaki örnek sample.pptx gerektirir. Her mevcut desteklenen SourceFormat değerini geleneksel bir uzantıya eşler, giriş dosya adını ayrıştırmadan. Geri dönüş, tanınmayan bir değere sessizce uzantı atamaktan kaçınır.
const aspose = require("aspose.slides.via.java");
const presentation = new aspose.Presentation("sample.pptx");
try {
let extension;
switch (presentation.getSourceFormat()) {
case aspose.SourceFormat.Ppt:
extension = ".ppt";
break;
case aspose.SourceFormat.Pptx:
extension = ".pptx";
break;
case aspose.SourceFormat.Pptm:
extension = ".pptm";
break;
case aspose.SourceFormat.Pps:
extension = ".pps";
break;
case aspose.SourceFormat.Ppsx:
extension = ".ppsx";
break;
case aspose.SourceFormat.Ppsm:
extension = ".ppsm";
break;
case aspose.SourceFormat.Pot:
extension = ".pot";
break;
case aspose.SourceFormat.Potx:
extension = ".potx";
break;
case aspose.SourceFormat.Potm:
extension = ".potm";
break;
case aspose.SourceFormat.Odp:
extension = ".odp";
break;
case aspose.SourceFormat.Otp:
extension = ".otp";
break;
case aspose.SourceFormat.Fodp:
extension = ".fodp";
break;
case aspose.SourceFormat.Xml:
extension = ".xml";
break;
default:
extension = null;
break;
}
console.log(extension != null ? extension : "No extension mapping is available.");
} finally {
presentation.dispose();
}
Bu eşleme bir dosyayı dönüştürmez veya akış yükleme sırasında kaybolan eski PPS/POT alt türünü geri getirmez. Gerçek kaydetme için bir SaveFormat açıkça seçin veya Save Presentations in Their Original Format içinde gösterildiği gibi dönüşümü kullanın.
Kaydedip Yeniden Açarak Biçimleri Doğrulama
Bu bağımsız örnek bir sunum oluşturur ve çalışma dizininde üç dosya yazar, aynı isimdeki dosyaları üzerine yazar. Her çıktıyı hem yol üzerinden hem de bellek akışıyla yeniden açar. PPTX ve ODP için her iki yol da kaydedilen biçimi raporlar. PPS için yol üzerinden yükleme Pps rapor ederken, aynı baytları dosya adı olmadan yüklemek Ppt rapor eder.
const aspose = require("aspose.slides.via.java");
const java = require("java");
const fs = require("fs");
const presentation = new aspose.Presentation();
try {
const formats = [aspose.SaveFormat.Pptx, aspose.SaveFormat.Odp, aspose.SaveFormat.Pps];
const extensions = ["pptx", "odp", "pps"];
for (let i = 0; i < formats.length; i++) {
const path = "roundtrip." + extensions[i];
presentation.save(path, formats[i]);
const fromFile = new aspose.Presentation(path);
try {
const buffer = fs.readFileSync(path);
const bytes = java.newArray("byte", Array.from(buffer));
const stream = java.newInstanceSync("java.io.ByteArrayInputStream", bytes);
try {
const fromStream = new aspose.Presentation(stream);
try {
console.log(extensions[i] + ": file=" + fromFile.getSourceFormat() + ", stream=" + fromStream.getSourceFormat());
} finally {
fromStream.dispose();
}
} finally {
stream.close();
}
} finally {
fromFile.dispose();
}
}
} finally {
presentation.dispose();
}
Aşağıdaki tablo, eşleşen uzantılara sahip sunumların kaynak‑biçim tanımlamasını özetler. İsimler sabitleri temsil eder; JavaScript örnekleri tam sayı değerlerini yazdırır:
| Kaydedilen biçim | Dosya yolundan SourceFormat | İsimsiz akıştan SourceFormat |
|---|---|---|
| PPT | Ppt |
Ppt |
| PPTX, PPTM | Pptx, Pptm respectively |
Same as file path |
| PPS | Pps |
Ppt |
| PPSX, PPSM | Ppsx, Ppsm respectively |
Same as file path |
| POT | Pot |
Ppt |
| POTX, POTM | Potx, Potm respectively |
Same as file path |
| ODP, OTP | Odp, Otp respectively |
Same as file path |
| FODP | Fodp |
Fodp |
| PowerPoint XML | Xml |
Xml |
PPS/POT içeriği, isimli olmayan akışlar için Ppt olarak tanımlanır. Tablo, format tanımlamasını, dönüştürme sırasında her sunum özelliğinin korunmasını değil, tanımlamayı açıklar.
FAQ
ODP’ye kaydetmek, PPTX’ten yüklenen bir sunumun kaynak biçimini değiştirir mi?
Hayır. Mevcut örnek hâlâ Pptx rapor eder. Kaydedilen ODP dosyasından yüklenen bir örnek Odp rapor eder.
Bir akış her zaman eski bir sunumu, slayt gösterisini ve şablonu ayırt edebilir mi?
Hayır. PPT, PPS ve POT aynı ikili biçimi paylaşır. Bu ayrım gerektiğinde dosya adını veya alt tür meta verisini ayrı tutun.
Sunum zaten yüklüyse hangi API kullanılmalı?
Presentation.getSourceFormat metodunu okuyun. Yüklemeden önce inceleme için PresentationFactory.getPresentationInfo kullanın.