عملیات محتوا

عملیات محتوا

عملیات محتوا

صفحات 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 یا خاکستری) مطابقت داشته باشند.
  • برای فضاهای رنگی الگو و مبتنی بر ICC از SetAdvancedColor استفاده کنید.

مشکلات رایج

IssueCauseFix
متن پس از افزودن عملگرها قابل مشاهده نیستفونتی در وضعیت متن تنظیم نشده استقبل از ShowText یک عملگر SetFont اضافه کنید
رنگ‌ها به‌درستی نمایش داده نمی‌شوندعدم تطابق فضای رنگ (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وضعیت گرافیکی گسترش‌یافته (آلفا، حالت ترکیب)

موارد مرتبط

 فارسی