Pro รุ่น
Legal — การอ้างอิงเชิงลึก
โดยสรุป
หัวข้อที่มีชื่อว่า “โดยสรุป”- สร้างตราประทับเลข Bates แบบเรียงลำดับเป็นส่วนย่อยสตรีมเนื้อหา PDF รายหน้า
- ประเภทสาธารณะสามชนิด:
BatesNumberConfig(การกำหนดค่าแบบไม่เปลี่ยนแปลง)BatesNumberer(เอนจิน)BatesPosition(enum ตำแหน่งหกกรณี) - แต่ละส่วนย่อยเป็นอิสระในตัว มีการบันทึกและกู้คืนสถานะกราฟิก ดังนั้นการต่อท้ายจึงไม่รบกวนเนื้อหาหน้าที่มีอยู่
- ผลลัพธ์เป็นแบบกำหนดได้แน่นอน: ส่วนย่อยเป็นฟังก์ชันบริสุทธิ์ของการกำหนดค่า ข้อความตราประทับ และขนาดหน้า
- โมดูลไม่ยก exception ใด ๆ อินพุตที่อยู่นอกช่วงจะลดระดับตามกฎสำรองที่บันทึกไว้
ความพร้อมใช้งานและการอนุญาต
หัวข้อที่มีชื่อว่า “ความพร้อมใช้งานและการอนุญาต”ความสามารถนี้มาพร้อมกับ NextPDF Pro (nextpdf/pro) และเปิดใช้งานด้วยซองใบอนุญาตระดับ Pro การนำไปใช้งานที่ไม่มีสิทธิ์ดังกล่าวจะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบรุ่นและขอใบอนุญาต
ไม่มีแฟล็กใบอนุญาตรายฟีเจอร์ นี่เป็นความสามารถของรุ่น Pro
composer require nextpdf/pro:^3พื้นผิว API สาธารณะ
หัวข้อที่มีชื่อว่า “พื้นผิว API สาธารณะ”| สัญลักษณ์ | พารามิเตอร์ | พฤติกรรมปริยาย | คืนค่า | ยก exception หรือล้มเหลวด้วย | หมายเหตุ |
|---|---|---|---|---|---|
BatesNumberConfig::__construct | string $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 | — | คุณสมบัติทั้งสิบเอ็ดรายการเป็น public และ readonly |
BatesNumberConfig::formatNumber | int $pageIndex (นับจาก 0) | prefix + เติมศูนย์ (startNumber + pageIndex) + suffix | string | — | เลขที่กว้างกว่า padding จะไม่ถูกตัดทอน |
BatesNumberConfig::getRange | int $pageCount | ตราประทับที่จัดรูปแบบแล้วตัวแรกและตัวสุดท้ายของชุด | array{first: string, last: string} | — | สมมติว่า pageCount >= 1; ค่าเท่ากับ 0 จะจัดรูปแบบดัชนีหน้า -1 |
BatesNumberer::__construct | BatesNumberConfig $config | ผูกการกำหนดค่า | BatesNumberer | — | คลาสนี้เป็น final และ readonly |
BatesNumberer::generate | int $pageCount, array $pageSizes, string $prefix = '', int $startFrom = 1 | เส้นทางเร็วแบบ static ด้วยรูปลักษณ์ปริยาย | list<string> | — | คำต่อท้าย ตำแหน่ง ฟอนต์ ความทึบ และเลเยอร์คงอยู่ที่ค่าปริยาย |
BatesNumberer::generateStreams | int $pageCount, list<array{width: float, height: float}> $pageSizes | หนึ่งส่วนย่อยที่เป็นอิสระในตัวต่อหนึ่งหน้า | list<string> | ไม่ยก exception; รายการขนาดที่ขาดหายจะสำรองเป็น A4 แนวตั้ง | จำนวนส่วนย่อยเท่ากับ pageCount; รายการขนาดส่วนเกินจะถูกละเว้น |
BatesNumberer::buildPageStream | string $text, float $pageWidth, float $pageHeight | สร้างส่วนย่อยตราประทับของหน้าหนึ่งหน้า | string | — | ห่อด้วย q/Q; ข้อความตราประทับถูก escape สำหรับไวยากรณ์สตริงตัวอักษร |
BatesNumberer::getConfig | — | คืนค่าการกำหนดค่าที่ผูกไว้ | BatesNumberConfig | — | — |
BatesPosition | กรณี enum BottomLeft, BottomCenter, BottomRight, TopLeft, TopCenter, TopRight | คำศัพท์ตำแหน่งที่รองรับด้วยสตริง | — | — | ค่ารองรับเป็น kebab-case (เช่น bottom-right) |
BatesPosition::coordinates | float $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,): arraypublic function generateStreams(int $pageCount, array $pageSizes): arraypublic function buildPageStream(string $text, float $pageWidth, float $pageHeight): stringpublic function coordinates( float $pageWidth, float $pageHeight, float $textWidth, float $inset = 15.0,): arrayข้อกำหนดด้านพฤติกรรม
หัวข้อที่มีชื่อว่า “ข้อกำหนดด้านพฤติกรรม”การกำกับเลข
หัวข้อที่มีชื่อว่า “การกำกับเลข”BatesNumberConfig::formatNumber คำนวณ startNumber + pageIndex เติมศูนย์ทางซ้ายให้เลขครบ padding หลัก และห่อด้วย prefix และ suffix getRange คืนค่าตราประทับที่จัดรูปแบบแล้วตัวแรกและตัวสุดท้ายสำหรับจำนวนหน้าหนึ่งค่า ใช้เพื่อเชื่อมการกำกับเลขต่อเนื่องข้ามชุดเอกสาร
กายวิภาคของส่วนย่อย
หัวข้อที่มีชื่อว่า “กายวิภาคของส่วนย่อย”แต่ละส่วนย่อยประกอบด้วย ตามลำดับ: การบันทึกสถานะกราฟิก (q) โอเปอเรเตอร์สีเติม จุดเริ่มต้น marked-content เสริม บล็อกข้อความที่วางตำแหน่งและแสดงตราประทับ จุดสิ้นสุด marked-content เสริม และการกู้คืน (Q) พิกัดและขนาดฟอนต์ถูกทำให้เป็นอนุกรมด้วยทศนิยมหกตำแหน่ง ดังนั้นอินพุตที่เหมือนกันจึงให้ไบต์ที่เหมือนกัน ข้อความตราประทับจะ escape \, (, และ ) ก่อนเข้าสู่สตริงตัวอักษร
การผูกฟอนต์
หัวข้อที่มีชื่อว่า “การผูกฟอนต์”บล็อกข้อความเลือกชื่อทรัพยากรฟอนต์คงที่ /BatesFont พจนานุกรมทรัพยากรของหน้าที่ฝังต้องแมปชื่อนั้นกับฟอนต์ที่ตรงกับ fontFamily ที่กำหนดค่าไว้ และตระกูลฟอนต์ต้องแปลงค่าได้ในรีจิสทรีฟอนต์ การสร้างส่วนย่อยเองไม่เคยเรียกดูรีจิสทรี
การจัดวาง
หัวข้อที่มีชื่อว่า “การจัดวาง”BatesPosition::coordinates คำนวณเส้นฐานของตราประทับในปริภูมิเนทีฟของ PDF; จุดกำเนิดอยู่ที่มุมล่างซ้าย การจัดวางกึ่งกลางและขวาจะลบความกว้างข้อความโดยประมาณ: ความยาวไบต์คูณ 0.6 คูณขนาดฟอนต์ ซึ่งเป็นการประมาณแบบ monospace ฟอนต์สัดส่วนและข้อความหลายไบต์จะทำให้การประมาณนั้นคลาดเคลื่อน การจัดวางซ้ายไม่ขึ้นกับค่านั้น
เลเยอร์
หัวข้อที่มีชื่อว่า “เลเยอร์”เมื่อเปิดใช้ useLayer (ค่าปริยาย) ส่วนย่อยจะคร่อมข้อความไว้ระหว่างโอเปอเรเตอร์ marked-content BDC และ EMC ชื่อ marked-content มีรูปแบบ /Lyr_<name> ที่ได้มาจาก layerName โดยแทนอักขระที่ไม่ใช่ตัวอักษรด้วยขีดล่าง การคร่อมนี้เป็นระดับส่วนย่อยเท่านั้น: การลงทะเบียนกลุ่มเนื้อหาเสริมที่สอดคล้องกันในเอกสาร — ขั้นตอนที่ทำให้เลเยอร์สลับเปิดปิดได้ในโปรแกรมดู — เป็นหน้าที่ของตัวเขียนที่ฝัง
ความทึบ
หัวข้อที่มีชื่อว่า “ความทึบ”opacity ที่ต่ำกว่า 1.0 จะถูกส่งออกเป็นสีเติมโทนเทาที่จางลง ตราประทับที่ทึบเต็มที่จะแสดงเป็นสีดำ
เอนจินใช้การกำกับเลข Bates ตามที่กำหนดค่าไว้อย่างเป๊ะ มันไม่ยืนยันว่าเอกสารที่กำกับเลขแล้วจะรับฟังได้ในศาลหรือมีผลทางกฎหมาย รูปแบบการกำกับเลข การเก็บรักษา และการจัดการพยานหลักฐานยังคงเป็นความรับผิดชอบของลูกค้า ปรึกษาทีมกฎหมายและทีมการปฏิบัติตามข้อกำหนดของคุณเพื่อความเพียงพอตามกระบวนการ
กรณีขอบและโหมดความล้มเหลว
หัวข้อที่มีชื่อว่า “กรณีขอบและโหมดความล้มเหลว”generateStreamsไม่ยก exception เมื่อpageSizesไม่ตรงกัน รายการที่ขาดหายจะสำรองเป็น A4 แนวตั้ง595.276คูณ841.890จุด; รายการส่วนเกินจะถูกละเว้น- จำนวนส่วนย่อยเท่ากับ
pageCountเสมอ - เลขที่กว้างกว่า
paddingจะไม่ถูกตัดทอน; ข้อความตราประทับจะยาวขึ้นเท่านั้น getRangeสมมติว่าpageCount >= 1ค่าเท่ากับ 0 จะจัดรูปแบบดัชนีหน้า -1 นั่นคือstartNumber - 1- ความทึบเป็นการทำโทนเทาให้จางลง ไม่ใช่ความโปร่งใสแบบ ExtGState; เนื้อหาที่ซ้อนอยู่ใต้ตราประทับจะไม่ถูกผสมสี
- ไบต์ตราประทับอื่นนอกจาก
\,(, และ)จะผ่านไปโดยไม่ถูกเข้ารหัส ความถูกต้องของการเข้ารหัสสำหรับข้อความที่ไม่ใช่ ASCII ขึ้นกับฟอนต์ที่ผูกไว้ - เครื่องหมาย Bates เป็นเนื้อหาทับซ้อน ไม่ได้ปิดบัง ลบ หรือเข้ารหัสสิ่งใดบนหน้า
- โมดูลไม่ดำเนินการเข้ารหัสลับใด ๆ; โหมด FIPS ไม่เปลี่ยนพฤติกรรมของมัน
ความสอดคล้องกับมาตรฐาน
หัวข้อที่มีชื่อว่า “ความสอดคล้องกับมาตรฐาน”| พฤติกรรม | การอ้างอิง | สถานะ |
|---|---|---|
การคร่อมเลเยอร์ผ่านโอเปอเรเตอร์ marked-content BDC/EMC | ISO 32000-2:2020 §8.11.3.2 | บางส่วน — ส่วนย่อยส่งการคร่อมออกมา; การลงทะเบียนกลุ่มเนื้อหาเสริมเป็นขั้นตอนของตัวเขียนที่ฝัง |
แถวเหล่านี้บันทึกข้อกำหนดที่โมดูลถูกสร้างขึ้นให้เป็นไปตาม ไม่ใช่การรับรอง; NextPDF ไม่ถือใบรับรองความสอดคล้องใด ๆ ตารางนี้ยังไม่ใช่คำแถลงเรื่องความมีผลทางกฎหมายหรือความเพียงพอของพยานหลักฐาน
หมายเหตุการพัฒนา
หัวข้อที่มีชื่อว่า “หมายเหตุการพัฒนา”- ส่วนย่อยเป็นค่าสตริงบริสุทธิ์ ทดสอบได้ด้วยการเปรียบเทียบไบต์โดยตรง; ไม่ต้องมีบริบทเอกสาร
buildPageStreamเป็น public และทดสอบหน่วยได้แบบแยกเดี่ยว: ส่งข้อความที่จัดรูปแบบไว้ล่วงหน้าและมิติหน้าที่ระบุชัดเจน- สำหรับการกำกับเลขต่อเนื่องข้ามชุดเอกสาร ให้ตั้ง
startNumberจากรอบก่อนหน้าและบันทึกผลลัพธ์getRangeไว้ในบันทึกชุดเอกสารของคุณ - ชื่อเลเยอร์ถูกทำให้สะอาดเหลือเฉพาะอักขระตัวอักษร ควรใช้ชื่อเลเยอร์แบบ ASCII เพื่อให้ชื่อ marked-content อ่านได้ในเครื่องมือตรวจสอบ
ขอบเขตการเผยแพร่
หัวข้อที่มีชื่อว่า “ขอบเขตการเผยแพร่”หน้านี้บันทึกเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว API สาธารณะที่รองรับเท่านั้น เส้นทาง namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้า ticket อยู่นอกขอบเขต