การดำเนินการเนื้อหา

การดำเนินการเนื้อหา

การดำเนินการเนื้อหา

หน้า PDF ถูกเรนเดอร์โดยลำดับของผู้ดำเนินการที่เก็บไว้ในสตรีมเนื้อหา.
Aspose.PDF FOSS for .NET เปิดเผยผู้ดำเนินการเหล่านี้ผ่าน OperatorCollection
บนแต่ละ Page และให้ ContentStreamBuilder สำหรับการสร้างเนื้อหาใหม่โดยโปรแกรม.


การอ่านตัวดำเนินการสตรีมเนื้อหา

ทุก Page มีคุณสมบัติ Contents ที่คืนค่า OperatorCollection. วนซ้ำเพื่อสำรวจตัวดำเนินการแต่ละตัว.

using var doc = Document.Open(pdfBytes);
var page = doc.Pages[1];

foreach (var op in page.Contents)
{
    Console.WriteLine(op.ToString());
}

การสร้างสตรีมเนื้อหา

ContentStreamBuilder ให้ API ที่ไหลลื่นสำหรับการสร้างลำดับของผู้ดำเนินการสตรีมเนื้อหา รวมถึงการจัดการสถานะกราฟิก, การสร้างเส้นทาง, การแสดงผลข้อความ, และการตั้งค่าสี.

var builder = new ContentStreamBuilder();
builder.SaveState();
builder.SetFillColor(1.0, 0.0, 0.0);  // Red fill
builder.SetMatrix(1, 0, 0, 1, 72, 700); // Translate
// ... add drawing or text operators
builder.RestoreState();

สถานะกราฟิก

GraphicsState ติดตามเมทริกซ์การแปลงปัจจุบัน, สถานะข้อความ, และ
ค่าของสีขณะตัวดำเนินการทำงาน. การดำเนินการหลัก:

var gs = new GraphicsState();
gs.Save();
gs.ConcatMatrix(new Matrix(1, 0, 0, 1, 100, 200));
gs.Restore();

ตัวดำเนินการสี

SetColor และ SetColorStroke ตั้งค่าสีเติมและสีเส้นตามลำดับ. พวกมันรับค่าคอมโพเนนต์ RGB, CMYK หรือระดับสีเทา.

// RGB fill color (blue)
var fill = new SetColor(0, 0, 1);

// RGB stroke color (red)
var stroke = new SetColorStroke(1, 0, 0);

ตัวดำเนินการข้อความ

ShowText แสดงสตริงข้อความที่ตำแหน่งข้อความปัจจุบันโดยใช้ฟอนต์และขนาดปัจจุบันจากสถานะกราฟิก

var textOp = new ShowText("Hello, PDF!");

SetTextMatrix จัดตำแหน่งข้อความโดยกำหนดเมทริกซ์การแปลงสำหรับพื้นที่ข้อความ.


สถานะกราฟิกที่ขยาย

ExtGState ควบคุมคุณสมบัติการเรนเดอร์ขั้นสูง เช่น การเติมและเส้นขอบอัลฟ่า (ความโปร่งใส) และโหมดผสม.


เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด

  • ควรจับคู่ SaveState / RestoreState (หรือผู้ดำเนินการ q / Q) เสมอเพื่อหลีกเลี่ยงการทำให้สแตกสถานะกราฟิกเสียหาย
  • ใช้ ContentStreamBuilder สำหรับเนื้อหาใหม่แทนการสร้างอ็อบเจ็กต์ผู้ดำเนินการด้วยตนเอง
  • ตรวจสอบ OperatorCollection แบบอ่านอย่างเดียวก่อนทำการแก้ไข — ลำดับผู้ดำเนินการที่ไม่คาดคิดอาจทำให้เกิดปัญหาการเรนเดอร์
  • ผู้ดำเนินการสีต้องตรงกับพื้นที่สีปัจจุบัน (RGB, CMYK หรือ grayscale)
  • ใช้ SetAdvancedColor สำหรับรูปแบบลายและพื้นที่สีที่อิงตาม ICC

ปัญหาทั่วไป

IssueCauseFix
ข้อความไม่ปรากฏหลังจากเพิ่มตัวดำเนินการไม่ได้ตั้งค่าแบบอักษรในสถานะข้อความเพิ่มตัวดำเนินการ SetFont ก่อน ShowText
สีแสดงผลผิดความไม่ตรงกันของสี (RGB กับ CMYK)ใช้ตัวดำเนินการที่ตรงกับสีที่ใช้งานอยู่
สแตกสถานะกราฟิกล้นคู่ Save / Restore ไม่สมดุลตรวจสอบให้ทุก SaveState มี RestoreState ที่ตรงกัน
เนื้อหาแสดงที่ตำแหน่งผิดการแปลงเมทริกซ์หายหรือไม่ถูกต้องตรวจสอบค่าของ SetMatrix หรือ ConcatMatrix

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

สตรีมเนื้อหา PDF คืออะไร?

สตรีมเนื้อหาเป็นลำดับของตัวดำเนินการที่อธิบายวิธีการเรนเดอร์หน้า — การวาดเส้นทาง, การวางข้อความ, การตั้งค่าสี, และการจัดการสถานะกราฟิก.

ฉันสามารถเพิ่มเนื้อหาใหม่ลงในหน้าที่มีอยู่ได้หรือไม่?

ใช่. เข้าถึง page.Contents และเพิ่มตัวดำเนินการใหม่ หรือใช้ ContentStreamBuilder เพื่อสร้างลำดับและต่อท้ายมัน.

ฉันจะทำให้ข้อความโปร่งใสได้อย่างไร?

ใช้ ExtGState เพื่อตั้งค่าอัลฟ่าการเติม (ca) เป็นค่าระหว่าง 0 (โปร่งใสเต็ม) และ 1 (ทึบเต็ม)


สรุปการอ้างอิง API

Class / MethodDescription
OperatorCollectionลำดับของตัวดำเนินการสตรีมเนื้อหาในหน้า
ContentStreamBuilderตัวสร้างแบบ fluent สำหรับสร้างลำดับตัวดำเนินการ
ContentStreamBuilder.SaveStateผลักสถานะกราฟิกปัจจุบันลงสแต็ก
ContentStreamBuilder.RestoreStateดึงสถานะกราฟิกจากสแต็ก
ContentStreamBuilder.SetFillColorตั้งค่าสีเติมในพื้นที่สีปัจจุบัน
ContentStreamBuilder.SetMatrixใช้การแปลงพิกัด
GraphicsStateติดตามเมทริกซ์การแปลง, สี, และสถานะข้อความ
SetColorตัวดำเนินการตั้งค่าสีที่ไม่ใช้การขีด (เติม)
SetColorStrokeตัวดำเนินการตั้งค่าสีที่ใช้การขีด
SetAdvancedColorตัวดำเนินการสำหรับรูปแบบสี/สีที่อิงตาม ICC
ShowTextตัวดำเนินการแสดงผลสตริงข้อความ
SetTextMatrixตัวดำเนินการกำหนดตำแหน่งข้อความผ่านเมทริกซ์
ExtGStateสถานะกราฟิกขยาย (อัลฟ่า, โหมดผสม)

ดูเพิ่มเติม

 ภาษาไทย