การแก้ไขรูปร่าง

ในคำแนะนำทีละขั้นตอนนี้ เราจะอธิบายวิธีการแก้ไขรูปร่างในเอกสาร Word โดยใช้ Aspose.Words for .NET เราจะจัดเตรียมซอร์สโค้ดที่สมบูรณ์ให้กับคุณ และแสดงวิธีจัดรูปแบบเอาต์พุตมาร์กดาวน์

ขั้นตอนที่ 1: การสร้างเอกสารและเพิ่มรูปร่าง

ขั้นตอนแรกคือการสร้างเอกสารใหม่และเพิ่มรูปร่าง

Document doc = new Document();
Assert.False(doc.TrackRevisions);

Shape shape = new Shape(doc, ShapeType.Cube);
shape. WrapType = WrapType. Inline;
shape. Width = 100.0;
shape. Height = 100.0;
doc.FirstSection.Body.FirstParagraph.AppendChild(shape);

ขั้นตอนที่ 2: ติดตามการแก้ไขและเพิ่มรูปร่างอื่น

เราจะเปิดการติดตามการแก้ไขและเพิ่มรูปร่างอื่น

doc.StartTrackRevisions("John Doe");

shape = new Shape(doc, ShapeType.Sun);
shape. WrapType = WrapType. Inline;
shape. Width = 100.0;
shape. Height = 100.0;
doc.FirstSection.Body.FirstParagraph.AppendChild(shape);

ขั้นตอนที่ 3: รับคอลเลกชันรูปร่างและตรวจสอบการแก้ไข

เราจะรวบรวมรูปร่างจากเอกสารและตรวจสอบการแก้ไขที่เกี่ยวข้องกับรูปร่างแต่ละรูป

List<Shape> shapes = doc.GetChildNodes(NodeType.Shape, true).Cast<Shape>().ToList();
Assert.AreEqual(2, shapes.Count);

Assert.AreEqual(ShapeType.Cube, shapes[0].ShapeType);
Assert.True(shapes[0].IsDeleteRevision);

Assert.AreEqual(ShapeType.Sun, shapes[1].ShapeType);
Assert.True(shapes[1].IsInsertRevision);

ขั้นตอนที่ 4: ตรวจสอบการแก้ไขการย้ายรูปร่าง

เราจะโหลดเอกสารที่มีอยู่ซึ่งมีการแก้ไขการแทนที่รูปร่าง และตรวจสอบการแก้ไขที่เกี่ยวข้อง

doc = new Document(MyDir + "Revision shape.docx");

shapes = doc.GetChildNodes(NodeType.Shape, true).Cast<Shape>().ToList();
Assert.AreEqual(2, shapes.Count);

Assert. False(shapes[0].IsMoveFromRevision);
Assert.True(shapes[0].IsMoveToRevision);

Assert.True(shapes[1].IsMoveFromRevision);
Assert. False(shapes[1].IsMoveToRevision);

ตัวอย่างซอร์สโค้ดสำหรับการแก้ไขรูปร่างโดยใช้ Aspose.Words สำหรับ .NET

นี่คือซอร์สโค้ดที่สมบูรณ์สำหรับการแก้ไขรูปร่างในเอกสารโดยใช้ Aspose.Words สำหรับ .NET:

Document doc = new Document();

//แทรกรูปร่างอินไลน์โดยไม่ต้องติดตามการแก้ไข
Assert.False(doc.TrackRevisions);
Shape shape = new Shape(doc, ShapeType.Cube);
shape.WrapType = WrapType.Inline;
shape.Width = 100.0;
shape.Height = 100.0;
doc.FirstSection.Body.FirstParagraph.AppendChild(shape);

// เริ่มติดตามการแก้ไขแล้วแทรกรูปร่างอื่น
doc.StartTrackRevisions("John Doe");
shape = new Shape(doc, ShapeType.Sun);
shape.WrapType = WrapType.Inline;
shape.Width = 100.0;
shape.Height = 100.0;
doc.FirstSection.Body.FirstParagraph.AppendChild(shape);

// รับคอลเลกชันรูปร่างของเอกสารซึ่งมีเพียงสองรูปร่างที่เราเพิ่มเข้าไป
List<Shape> shapes = doc.GetChildNodes(NodeType.Shape, true).Cast<Shape>().ToList();
Assert.AreEqual(2, shapes.Count);

// ลบรูปร่างแรก
shapes[0].Remove();

// เนื่องจากเราได้ลบรูปร่างนั้นออกในขณะที่กำลังติดตามการเปลี่ยนแปลง รูปร่างจึงนับเป็นการแก้ไขแบบลบ
Assert.AreEqual(ShapeType.Cube, shapes[0].ShapeType);
Assert.True(shapes[0].IsDeleteRevision);

// และเราได้แทรกรูปร่างอื่นในขณะที่ติดตามการเปลี่ยนแปลง ดังนั้นรูปร่างนั้นจะนับเป็นการแก้ไขการแทรก
Assert.AreEqual(ShapeType.Sun, shapes[1].ShapeType);
Assert.True(shapes[1].IsInsertRevision);

// เอกสารมีรูปร่างเดียวที่ถูกย้าย แต่การแก้ไขการย้ายรูปร่างจะมีรูปร่างนั้นสองอินสแตนซ์
// อันหนึ่งจะเป็นรูปร่าง ณ จุดหมายปลายทางที่มาถึง และอีกอันจะเป็นรูปร่าง ณ ตำแหน่งเดิม
doc = new Document(MyDir + "Revision shape.docx");

shapes = doc.GetChildNodes(NodeType.Shape, true).Cast<Shape>().ToList();
Assert.AreEqual(2, shapes.Count);

// นี่คือการย้ายไปสู่การแก้ไข รวมถึงรูปร่างของจุดหมายปลายทางที่มาถึงด้วย
Assert.False(shapes[0].IsMoveFromRevision);
Assert.True(shapes[0].IsMoveToRevision);

// นี่คือการย้ายจากการแก้ไขซึ่งเป็นรูปร่างที่ตำแหน่งเดิม
Assert.True(shapes[1].IsMoveFromRevision);
Assert.False(shapes[1].IsMoveToRevision);

บทสรุป

ในบทช่วยสอนนี้ เราได้เรียนรู้วิธีแก้ไขรูปร่างในเอกสาร Word โดยใช้ Aspose.Words สำหรับ .NET ด้วยการทำตามขั้นตอนในการสร้างเอกสาร เปิดใช้งานการติดตามการแก้ไข ตรวจสอบการแก้ไขที่เกี่ยวข้องกับรูปร่างแต่ละรูปร่าง และตรวจสอบการแก้ไขเพื่อย้ายรูปร่าง เราก็สามารถจัดการการแก้ไขได้สำเร็จ Aspose.Words สำหรับ .NET นำเสนอ API ที่มีประสิทธิภาพสำหรับการประมวลผลคำพร้อมบทวิจารณ์และแบบฟอร์มในเอกสาร Word

คำถามที่พบบ่อย

ถาม: ฉันจะสร้างเอกสารใหม่และเพิ่มรูปร่างใน Aspose.Words สำหรับ .NET ได้อย่างไร

ตอบ: หากต้องการสร้างเอกสารใหม่และเพิ่มรูปร่างใน Aspose.Words สำหรับ .NET คุณสามารถใช้โค้ดต่อไปนี้ ที่นี่เราเพิ่มสองรูปร่าง ลูกบาศก์และดวงอาทิตย์ ในส่วนแรกของเอกสาร:

Document doc = new Document();
Assert.False(doc.TrackRevisions);

Shape shape = new Shape(doc, ShapeType.Cube);
shape. WrapType = WrapType. Inline;
shape. Width = 100.0;
shape. Height = 100.0;
doc.FirstSection.Body.FirstParagraph.AppendChild(shape);

ถาม: ฉันจะเปิดใช้งานการติดตามการแก้ไขใน Aspose.Words สำหรับ .NET ได้อย่างไร

ตอบ: หากต้องการเปิดใช้งานการติดตามการแก้ไขใน Aspose.Words สำหรับ .NET คุณสามารถใช้StartTrackRevisions วิธีการของDocument วัตถุ. วิธีการนี้ใช้ชื่อผู้เขียนการแก้ไขเป็นพารามิเตอร์:

doc.StartTrackRevisions("John Doe");

ถาม: ฉันจะตรวจสอบการแก้ไขที่เกี่ยวข้องกับแต่ละรูปร่างในเอกสาร Aspose.Words สำหรับ .NET ได้อย่างไร

ตอบ: หากต้องการตรวจสอบการแก้ไขที่เกี่ยวข้องกับแต่ละรูปร่างในเอกสาร Aspose.Words สำหรับ .NET คุณสามารถรับคอลเลกชันรูปร่างของเอกสารได้โดยใช้GetChildNodes วิธีการด้วยNodeType.Shape ประเภทโหนด จากนั้นคุณก็จะสามารถเข้าถึงรูปร่างแต่ละแบบได้IsDeleteRevision, IsInsertRevision, IsMoveFromRevision , และIsMoveToRevision คุณสมบัติเพื่อกำหนดประเภทของการแก้ไขที่เกี่ยวข้องกับรูปร่าง:

List<Shape> shapes = doc.GetChildNodes(NodeType.Shape, true).Cast<Shape>().ToList();
Assert.AreEqual(2, shapes.Count);

Assert.AreEqual(ShapeType.Cube, shapes[0].ShapeType);
Assert.True(shapes[0].IsDeleteRevision);

Assert.AreEqual(ShapeType.Sun, shapes[1].ShapeType);
Assert.True(shapes[1].IsInsertRevision);

ถาม: ฉันจะตรวจสอบการแก้ไขการกระจัดของรูปร่างในเอกสาร Aspose.Words สำหรับ .NET ได้อย่างไร

ตอบ: หากต้องการตรวจสอบการแก้ไขการแทนที่รูปร่างในเอกสาร Aspose.Words สำหรับ .NET คุณสามารถโหลดเอกสารที่มีอยู่ซึ่งมีการแก้ไขการแทนที่รูปร่างได้ จากนั้นคุณก็จะสามารถเข้าถึงรูปร่างแต่ละแบบได้IsMoveFromRevision และIsMoveToRevision คุณสมบัติเพื่อตรวจสอบว่ามีการเคลื่อนย้ายหรือไม่ และหากเป็นเช่นนั้น จากที่ไหน และไปที่ใด:

doc = new Document(MyDir + "Revision shape.docx");

shapes = doc.GetChildNodes(NodeType.Shape, true).Cast<Shape>().ToList();
Assert.AreEqual(2, shapes.Count);

Assert. False(shapes[0].IsMoveFromRevision);
Assert.True(shapes[0].IsMoveToRevision);

Assert.True(shapes[1].IsMoveFromRevision);
Assert. False(shapes[1].IsMoveToRevision);