บันทึกงานนำเสนอใน .NET
ภาพรวม
หลังจากคุณสร้างงานนำเสนอหรือ เปิดงานนำเสนอที่มีอยู่, ให้ใช้เมธอด Presentation.Save เพื่อเขียนผลลัพธ์ Aspose.Slides for .NET สามารถบันทึกงานนำเสนอเป็นไฟล์หรือสตรีมในรูปแบบ PowerPoint, OpenDocument, PDF และรูปแบบอื่น ๆ ส่วนต่อไปนี้ครอบคลุมการดำเนินการบันทึกมาตรฐานและตัวเลือกที่มีสำหรับการส่งออก PPTX
บันทึกงานนำเสนอเป็นไฟล์
เพื่อบันทึกงานนำเสนอเป็นไฟล์ ให้ส่งเส้นทางผลลัพธ์และค่า SaveFormat ไปยังเมธอด Presentation.Save ค่ารูปแบบกำหนดประเภทของไฟล์ที่ Aspose.Slides สร้างขึ้น
ตัวอย่างต่อไปนี้สร้างงานนำเสนอและบันทึกเป็นไฟล์ PPTX:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
// Add or modify presentation content here.
presentation.Save("Output.pptx", SaveFormat.Pptx);
บันทึกงานนำเสนอในรูปแบบเดิมของมัน
สำหรับตัวอย่างการตรวจจับไฟล์และสตรีม, พฤติกรรมของงานนำเสนอที่สร้างใหม่, และความแตกต่างระหว่างรูปแบบต้นทางและรูปแบบผลลัพธ์, โปรดดู Determine the Original Presentation Format
ในแอปพลิเคชันการประมวลผลแบบกลุ่ม, รูปแบบอินพุตอาจไม่ทราบล่วงหน้า หลังจากโหลดไฟล์, อ่านรูปแบบดั้งเดิมจากคุณสมบัติ IPresentation.SourceFormat ส่งค่าที่ได้ของ SourceFormat ไปยัง SlideUtil.ToSaveFormat เพื่อรับค่า SaveFormat ที่สอดคล้องกัน, แล้วใช้ Presentation.Save เพื่อเขียนงานนำเสนอที่แก้ไขแล้ว
ตัวอย่างเต็มต่อไปนี้ประมวลผลทุกไฟล์ในไดเรกทอรีอินพุต, ปรับปรุงชื่อเรื่อง, และบันทึกไปยังไดเรกทอรีเอาต์พุตในรูปแบบที่โหลดมา:
using System;
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Util;
var inputDirectory = "Input";
var outputDirectory = "Output";
Directory.CreateDirectory(outputDirectory);
foreach (var inputPath in Directory.EnumerateFiles(inputDirectory))
{
try
{
using var presentation = new Presentation(inputPath);
var sourceFormat = presentation.SourceFormat;
var saveFormat = SlideUtil.ToSaveFormat(sourceFormat);
presentation.DocumentProperties.Title = "Processed by the batch application";
var outputPath = Path.Combine(outputDirectory, Path.GetFileName(inputPath));
presentation.Save(outputPath, saveFormat);
}
catch (ArgumentException exception)
{
Console.Error.WriteLine($"Cannot map the source format of '{inputPath}': {exception.Message}");
}
catch (Exception exception)
{
Console.Error.WriteLine($"Cannot process '{inputPath}': {exception.Message}");
}
}
SlideUtil.ToSaveFormat จะแมป PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP และ PowerPoint XML ไปยังรูปแบบบันทึกงานนำเสนอที่สอดคล้องกัน มันแมปเฉพาะรูปแบบต้นทางของงานนำเสนอ; ไม่ได้ออกแบบให้เลือกรูปแบบส่งออกเช่น PDF, HTML, TIFF หรือภาพ การส่งค่าที่ไม่รองรับหรือไม่ถูกต้องของ SourceFormat จะทำให้เกิด ArgumentException
ไฟล์ PPT, PPS, และ POT รุ่นเก่าใช้คอนเทนเนอร์ไบนารีเดียวกัน เมื่อโหลดงานนำเสนอประเภทนี้จากสตรีมโดยไม่มีส่วนขยายไฟล์, ไฟล์ PPS หรือ POT อาจถูกระบุเป็น PPT หากต้องการรักษาชนิดย่อยรุ่นเก่าเหล่านี้ไว้, ให้เก็บชื่อไฟล์หรือเมตาดาต้ารูปแบบต้นฉบับแยกจากกันและใช้เมื่อตั้งชื่อไฟล์และรูปแบบเอาต์พุต
บันทึกงานนำเสนอไปยังสตรีม
เพื่อเขียนงานนำเสนอโดยไม่ต้องอ้างอิงถึงเส้นทางไฟล์สุดท้าย, ให้ส่ง Stream ที่สามารถเขียนได้และค่า SaveFormat ไปยังเมธอด Presentation.Save วิธีนี้มีประโยชน์เมื่อผลลัพธ์ต้องส่งคืนจากบริการเว็บ, เก็บในฐานข้อมูล, หรือประมวลผลในหน่วยความจำ
ตัวอย่างต่อไปนี้บันทึกงานนำเสนอใหม่ไปยังสตรีมไฟล์:
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
using var outputStream = new FileStream("Output.pptx", FileMode.Create);
presentation.Save(outputStream, SaveFormat.Pptx);
บันทึกงานนำเสนอด้วยประเภทมุมมองที่กำหนดไว้ล่วงหน้า
คุณสามารถระบุมุมมองที่ PowerPoint เปิดงานนำเสนอที่บันทึกไว้โดยอัตโนมัติ ตั้งคุณสมบัติ ViewProperties.LastView ให้เป็นค่าของ ViewType ก่อนบันทึก
ตัวอย่างต่อไปนี้กำหนดมุมมอง Slide Master เป็นมุมมองเริ่มต้น:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
presentation.ViewProperties.LastView = ViewType.SlideMasterView;
presentation.Save("SlideMasterView.pptx", SaveFormat.Pptx);
บันทึกงานนำเสนอในรูปแบบ Strict Office Open XML
เพื่อสร้างไฟล์ PPTX ที่สอดคล้องกับโปรไฟล์ Strict ของ Office Open XML, สร้างอินสแตนซ์ของ PptxOptions แล้วตั้งคุณสมบัติ Conformance ให้เป็น Conformance.Iso29500_2008_Strict จากนั้นส่งตัวเลือกไปยังเมธอด Presentation.Save
using Aspose.Slides;
using Aspose.Slides.Export;
var options = new PptxOptions
{
Conformance = Conformance.Iso29500_2008_Strict
};
using var presentation = new Presentation();
presentation.Save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options);
บันทึกงานนำเสนอในรูปแบบ Office Open XML ในโหมด Zip64
ไฟล์ ZIP มาตรฐานจำกัดขนาดบีบอัดและไม่บีบอัดของแต่ละรายการ, ขนาดรวมของไฟล์, และจำนวนรายการ เนื่องจากไฟล์ PPTX เป็นไฟล์ ZIP, งานนำเสนอขนาดใหญ่มากอาจเกินขีดจำกัดเหล่านั้น การขยาย Zip64 จะเพิ่มขีดจำกัดขนาดและจำนวนรายการที่ใช้ได้
ใช้คุณสมบัติ PptxOptions.Zip64Mode เพื่อควบคุมว่า Aspose.Slides จะเขียนส่วนขยาย Zip64 หรือไม่:
IfNecessaryใช้ Zip64 เฉพาะเมื่องานนำเสนอเกินขีดจำกัด ZIP มาตรฐาน (เป็นค่าเริ่มต้น)Neverปิดการใช้งานส่วนขยาย Zip64Alwaysเขียนส่วนขยาย Zip64 เสมอ
ตัวอย่างต่อไปนี้เปิดใช้งานส่วนขยาย Zip64 เสมอสำหรับงานนำเสนอเอาต์พุต:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
Zip64Mode = Zip64Mode.Always
};
presentation.Save("OutputZip64.pptx", SaveFormat.Pptx, options);
Warning
หากZip64Mode ถูกตั้งค่าเป็น Never และงานนำเสนอไม่สามารถพอดีกับขีดจำกัด ZIP มาตรฐาน, การบันทึกจะโยนข้อผิดพลาด PptxException.
บันทึกงานนำเสนอในรูปแบบ Office Open XML พร้อมระดับการบีบอัด
สำหรับการส่งออก PPTX, คุณสามารถปรับสมดุลระหว่างความเร็วในการบันทึกและขนาดไฟล์โดยตั้งคุณสมบัติ PptxOptions.CompressionLevel รายการค่าใน enumeration CompressionLevel มีดังนี้:
Noneเก็บข้อมูลโดยไม่มีการบีบอัดLevel1ให้การบีบอัดที่เร็วที่สุดและผลลัพธ์ที่บีบอัดมากที่สุดLevel2ถึงLevel5ให้ความสำคัญกับขนาดผลลัพธ์ที่เล็กลงมากขึ้นเรื่อย ๆ แทนความเร็วในการบันทึกLevel6สมดุลระหว่างความเร็วในการบันทึกและขนาดไฟล์ (เป็นระดับเริ่มต้น)Level7และLevel8ให้ความสำคัญกับขนาดผลลัพธ์ที่เล็กลงต่อไปLevel9ให้การบีบอัดที่แรงที่สุดและต้องใช้เวลาประมวลผลมากที่สุด
ตัวอย่างต่อไปนี้บันทึกงานนำเสนอโดยไม่มีการบีบอัด:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
CompressionLevel = CompressionLevel.None
};
presentation.Save("OutputNoCompression.pptx", SaveFormat.Pptx, options);
ตัวอย่างต่อไปนี้ใช้ระดับการบีบอัดสูงสุด:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
CompressionLevel = CompressionLevel.Level9
};
presentation.Save("OutputMaximumCompression.pptx", SaveFormat.Pptx, options);
บันทึกงานนำเสนอโดยไม่รีเฟรชภาพย่อ
เมื่อบันทึกงานนำเสนอเป็น PPTX, คุณสมบัติ PptxOptions.RefreshThumbnail จะควบคุมภาพย่อของเอกสาร:
trueสร้างภาพย่อใหม่ระหว่างการบันทึก (ค่าเริ่มต้น)falseรักษาภาพย่อที่มีอยู่ หากงานนำเสนอไม่มีภาพย่อ Aspose.Slides จะไม่สร้างภาพย่อใหม่
ตัวอย่างต่อไปนี้บันทึกงานนำเสนอโดยไม่รีเฟรชภาพย่อ:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
RefreshThumbnail = false
};
presentation.Save("Output.pptx", SaveFormat.Pptx, options);
Note
การปิดการรีเฟรชภาพย่อสามารถลดเวลาที่ใช้ในการบันทึกไฟล์ PPTX ได้บันทึกการอัปเดตความคืบหน้าเป็นเปอร์เซ็นต์
เพื่อเฝ้าติดตามการบันทึก, ให้ทำการติดตั้งอินเทอร์เฟซ IProgressCallback และกำหนดการทำงานนั้นให้กับคุณสมบัติ ISaveOptions.ProgressCallback Aspose.Slides จะเรียกเมธอด IProgressCallback.Reporting พร้อมค่าความคืบหน้าในระหว่างการส่งออก
ตัวอย่างต่อไปนี้รายงานความคืบหน้าการส่งออก PDF ไปยังคอนโซล:
using System;
using Aspose.Slides;
using Aspose.Slides.Export;
var options = new PdfOptions
{
ProgressCallback = new ExportProgressHandler()
};
using var presentation = new Presentation("Sample.pptx");
presentation.Save("Output.pdf", SaveFormat.Pdf, options);
class ExportProgressHandler : IProgressCallback
{
public void Reporting(double progressValue)
{
var progress = Convert.ToInt32(progressValue);
Console.WriteLine($"{progress}% of the file has been converted.");
}
}
Note
Aspose มีเครื่องมือ PowerPoint Splitter ฟรี (PowerPoint Splitter) สร้างด้วย API ของ Aspose.Slides โดยสามารถบันทึกสไลด์ที่เลือกจากงานนำเสนอเป็นไฟล์ PPT หรือ PPTX แยกกันFAQ
Aspose.Slides รองรับการบันทึกเชิงเพิ่มหรือตาม “fast save” หรือไม่?
ไม่ใช่ การบันทึกแต่ละครั้งจะเขียนไฟล์ผลลัพธ์เต็มรูปแบบแทนการอัปเดตเฉพาะส่วนที่เปลี่ยนแปลง
หลายเธรดสามารถบันทึกอินสแตนซ์ Presentation เดียวกันได้หรือไม่?
ไม่ได้ อินสแตนซ์ Presentation ไม่เป็น thread‑safe (/slides/th/net/multithreading/) ควรเข้าถึงและบันทึกแต่ละอินสแตนซ์จากเธรดเดียวเท่านั้น
ลิงก์และไฟล์ที่ลิงก์ภายนอกจะเกิดอะไรขึ้นเมื่อบันทึกงานนำเสนอ?
Hyperlinks จะยังคงอยู่ในงานนำเสนอ Aspose.Slides จะไม่คัดลอกไฟล์ที่ลิงก์ภายนอก ดังนั้นงานนำเสนอที่บันทึกแล้วต้องยังคงสามารถเข้าถึงตำแหน่งไฟล์เหล่านั้นได้
สามารถบันทึกเมตาดาต้าเอกสารเช่น ผู้เขียน, ชื่อเรื่อง, บริษัท, และวันที่สร้างได้หรือไม่?
ได้ ให้ตั้ง document properties ที่เหมาะสมก่อนบันทึก และ Aspose.Slides จะทำการบันทึกลงไฟล์เอาต์พุต