تخطَّ إلى المحتوى
getnextpdf.com

Pro الإصدار

‏⁨Legal⁩ — مرجع متعمّق

  • يُولّد أختام ترقيم ⁨Bates⁩ التسلسلية على هيئة أجزاء من تدفّق محتوى ⁨PDF⁩ لكل صفحة.
  • ثلاثة أنواع عامة: BatesNumberConfig (تهيئة غير قابلة للتغيير)، وBatesNumberer (المحرّك)، وBatesPosition (تعداد موضع بستّ حالات).
  • كل جزء قائم بذاته. تُحفَظ حالة الرسوميات وتُستعاد، فالإلحاق لا يُخلّ أبدًا بمحتوى الصفحة القائم.
  • المُخرَج حتمي: الجزء دالة خالصة من التهيئة، ونصّ الختم، وحجم الصفحة.
  • لا تطرح الوحدة أي استثناءات. والمدخلات خارج النطاق تتدهور وفق قواعد الاحتياط الموثّقة.

تُشحَن هذه القدرة في ‏⁨NextPDF Pro⁩ (nextpdf/pro) وتُفعَّل بمظروف ترخيص من فئة ⁨Pro⁩. والنشر بلا ذلك الاستحقاق لا يُحمّل أصناف القدرة. قارِن الإصدارات واحصل على ترخيص.

لا توجد علامة ترخيص لكل ميزة. هذه قدرة من إصدار ⁨Pro⁩.

Terminal window
composer require nextpdf/pro:^3

سطح واجهة برمجة التطبيقات العامة

قسم بعنوان «سطح واجهة برمجة التطبيقات العامة»
الرمزالمعطياتالسلوك الافتراضييُرجِعيطرح أو يفشل بـملاحظات
BatesNumberConfig::__constructstring $prefix = ''، string $suffix = ''، int $startNumber = 1، int $padding = 5، BatesPosition $position = BatesPosition::BottomRight، float $fontSize = 9.0، string $fontFamily = 'Courier'، float $opacity = 1.0، bool $useLayer = true، string $layerName = 'Bates Numbers'، float $inset = 15.0تهيئة مظهر وترقيم غير قابلة للتغييرBatesNumberConfigكل الخصائص الإحدى عشرة عامة وللقراءة فقط.
BatesNumberConfig::formatNumberint $pageIndex ‏(يبدأ من 0)prefix + مُبطَّن بالأصفار (startNumber + pageIndex) + suffixstringالرقم الأعرض من padding لا يُقتطع.
BatesNumberConfig::getRangeint $pageCountأول وآخر ختمين مُنسّقين للتشغيلةarray{first: string, last: string}يفترض pageCount >= 1؛ وعددٌ يساوي 0 يُنسّق فهرس الصفحة ‏-1.
BatesNumberer::__constructBatesNumberConfig $configيربط التهيئةBatesNumbererالصنف نهائي وللقراءة فقط.
BatesNumberer::generateint $pageCount، array $pageSizes، string $prefix = ''، int $startFrom = 1مسار سريع ثابت بالمظهر الافتراضيlist<string>تبقى اللاحقة، والموضع، والخطّ، والعتامة، والطبقة على قيمها الافتراضية.
BatesNumberer::generateStreamsint $pageCount، list<array{width: float, height: float}> $pageSizesجزء واحد قائم بذاته لكل صفحةlist<string>لا يطرح أبدًا؛ ومدخل حجم مفقود يرتدّ إلى ⁨A4⁩ عموديعدد الأجزاء يساوي pageCount؛ وتُتجاهَل مدخلات الأحجام الزائدة.
BatesNumberer::buildPageStreamstring $text، float $pageWidth، float $pageHeightيبني جزء ختم صفحة واحدةstringمُغلَّف بـq/Q؛ ونصّ الختم مُهرَّب لصياغة السلسلة الحرفية.
BatesNumberer::getConfigيُرجِع التهيئة المربوطةBatesNumberConfig
BatesPositionحالات التعداد BottomLeft، BottomCenter، BottomRight، TopLeft، TopCenter، TopRightمفردات موضع مدعومة بسلاسل نصيةالقيم الداعمة بصيغة ⁨kebab-case⁩ (مثل bottom-right).
BatesPosition::coordinatesfloat $pageWidth، float $pageHeight، float $textWidth، float $inset = 15.0إحداثيا ⁨X/Y⁩ لخطّ أساس الختم في فضاء ⁨PDF⁩ الأصليarray{x: float, y: float}الأصل أسفل اليسار؛ والصفوف العلوية تضع خطّ الأساس على بُعد inset من الحافّة العلوية.
public function __construct(
public string $prefix = '',
public string $suffix = '',
public int $startNumber = 1,
public int $padding = 5,
public BatesPosition $position = BatesPosition::BottomRight,
public float $fontSize = 9.0,
public string $fontFamily = 'Courier',
public float $opacity = 1.0,
public bool $useLayer = true,
public string $layerName = 'Bates Numbers',
public float $inset = 15.0,
) {}
public static function generate(
int $pageCount,
array $pageSizes,
string $prefix = '',
int $startFrom = 1,
): array
public function generateStreams(int $pageCount, array $pageSizes): array
public function buildPageStream(string $text, float $pageWidth, float $pageHeight): string
public function coordinates(
float $pageWidth,
float $pageHeight,
float $textWidth,
float $inset = 15.0,
): array

يحسب BatesNumberConfig::formatNumber قيمة startNumber + pageIndex، ويُبطِّن الرقم من اليسار بالأصفار إلى padding خانة، ويُحيطه بـprefix وsuffix. ويُرجِع getRange أول وآخر ختمين مُنسّقين لعدد صفحات. استخدمه لتسلسل ترقيم متواصل عبر عمليات الإنتاج.

كل جزء يتكوّن، بالترتيب، من: حفظ لحالة الرسوميات (q)، ومُشغِّل لون تعبئة، وبداية محتوى مُعلَّم اختيارية، وكتلة نصّ تُموضِع الختم وتعرضه، ونهاية محتوى مُعلَّم اختيارية، واستعادة (Q). وتُسلسَل الإحداثيات وحجم الخطّ بستّ منازل عشرية، فالمدخلات المتطابقة تُنتج بايتات متطابقة. ويُهرِّب نصّ الختم المحارف \ و( و) قبل دخوله السلسلة الحرفية.

تختار كتلة النصّ اسم مورد الخطّ الثابت /BatesFont. ويجب أن يربط قاموس موارد الصفحة المُضمِّنة ذلك الاسم بخطّ يطابق fontFamily المُهيَّأ، ويجب أن تُحَلّ العائلة في سجلّ الخطوط. أمّا توليد الجزء نفسه فلا يستشير السجلّ أبدًا.

يحسب BatesPosition::coordinates خطّ أساس الختم في فضاء ⁨PDF⁩ الأصلي؛ والأصل أسفل اليسار. ويطرح التموضع الأوسط والأيمن عرضًا نصيًا مُقدَّرًا: طول البايتات مضروبًا في ⁨0.6⁩ مضروبًا في حجم الخطّ، وهو تقريب أحادي التباعد. والخطوط المتناسبة والنصّ متعدّد البايتات يزيحان ذلك التقدير. أمّا التموضع الأيسر فلا يعتمد عليه.

عند تفعيل useLayer (وهو الافتراضي)، يُحيط الجزء النصّ بين مُشغِّلَي المحتوى المُعلَّم BDC وEMC. ويأخذ اسم المحتوى المُعلَّم الصيغة /Lyr_<name>، المُشتقّة من layerName مع استبدال المحارف غير الكلمية بشُرَط سفلية. والإحاطة على مستوى الجزء فقط: أمّا تسجيل مجموعة المحتوى الاختيارية المقابلة في المستند — وهي الخطوة التي تجعل الطبقة قابلة للتبديل في العارض — فهو من شأن الكاتب المُضمِّن.

تُصدَر opacity أقل من ⁨1.0⁩ على هيئة تعبئة رمادية أفتح. أمّا الختم المُعتِم تمامًا فيُعرَض أسود.

يطبّق المحرّك ترقيم ⁨Bates⁩ تمامًا كما هو مُهيَّأ. وهو لا يؤكّد أنّ مستندًا مُرقَّمًا مقبول في المحكمة أو صالح قانونيًا. ويبقى مخطّط الترقيم، والاحتفاظ، والتعامل الإثباتي مسؤولية العميل؛ استشِر فريقَيك القانوني والامتثالي بشأن الكفاية الإجرائية.

الحالات الحدّية وأنماط الفشل

قسم بعنوان «الحالات الحدّية وأنماط الفشل»
  • لا يطرح generateStreams أبدًا عند عدم تطابق pageSizes. والمدخل المفقود يرتدّ إلى ⁨A4⁩ عمودي، 595.276 في 841.890 نقطة؛ وتُتجاهَل المدخلات الزائدة.
  • عدد الأجزاء يساوي دائمًا pageCount.
  • الرقم الأعرض من padding لا يُقتطع؛ بل يطول نصّ الختم فحسب.
  • يفترض getRange أنّ pageCount >= 1. وعددٌ يساوي 0 يُنسّق فهرس الصفحة ‏-1، أي startNumber - 1.
  • العتامة تفتيح رمادي لا شفافية ⁨ExtGState⁩؛ والمحتوى المتراكب أسفل الختم لا يُمزَج.
  • بايتات الختم عدا \ و( و) تمرّ دون ترميز. وصحّة الترميز للنصّ غير ⁨ASCII⁩ تعتمد على الخطّ المربوط.
  • علامات ⁨Bates⁩ محتوى متراكب. وهي لا تحجب ولا تُزيل ولا تُشفّر أي شيء في الصفحة.
  • لا تجري الوحدة أي عمليات تشفير؛ ولا يغيّر وضع ⁨FIPS⁩ سلوكها.
السلوكالمرجعالحالة
إحاطة الطبقة عبر مُشغِّلَي المحتوى المُعلَّم BDC/EMCISO 32000-2:2020 §8.11.3.2جزئي — يُصدر الجزء الإحاطة؛ أمّا تسجيل مجموعة المحتوى الاختيارية فهو خطوة الكاتب المُضمِّن

تُسجِّل هذه الصفوف المواصفة التي بُنيت الوحدة عليها، لا شهادة اعتماد؛ ولا يحمل ⁨NextPDF⁩ أي شهادة مطابقة. كما أنّ الجدول ليس بيان صلاحية قانونية أو كفاية إثباتية.

  • الأجزاء قيم سلسلة نصية خالصة. اختبرها بمقارنة البايتات المباشرة؛ ولا حاجة إلى سياق مستند.
  • buildPageStream عامّ وقابل للاختبار الوحدوي منعزلًا: مرِّر نصًا مُنسّقًا مسبقًا وأبعاد صفحة صريحة.
  • لترقيم متواصل عبر عمليات الإنتاج، ابذُر startNumber من التشغيلة السابقة وسجِّل مُخرَج getRange في سجلّ الإنتاج لديك.
  • تُنقَّى أسماء الطبقات إلى محارف كلمية. فضِّل أسماء طبقات ⁨ASCII⁩ ليبقى اسم المحتوى المُعلَّم مقروءًا في أدوات الفحص.

توثّق هذه الصفحة السلوك القابل للملاحظة خارجيًا وسطح واجهة برمجة التطبيقات العامة المدعوم فقط. أمّا مسارات أسماء النطاقات الداخلية، وأصناف المساعدة، وجداول الآليات، وأسماء ملفات كتيّبات التشغيل، وبادئات التذاكر فخارج النطاق.