Bỏ qua để đến nội dung
getnextpdf.com

Pro phiên bản

Legal — Tài liệu tham chiếu chuyên sâu

  • Sinh các con dấu số Bates tuần tự dưới dạng các đoạn content stream PDF theo từng trang.
  • Ba kiểu công khai: BatesNumberConfig (cấu hình bất biến), BatesNumberer (engine), BatesPosition (enum vị trí sáu case).
  • Mỗi đoạn đều khép kín. Trạng thái đồ họa được lưu và khôi phục, nên việc nối thêm không bao giờ làm xáo trộn nội dung trang hiện có.
  • Đầu ra có tính tất định: một đoạn là hàm thuần túy của cấu hình, văn bản con dấu, và kích thước trang.
  • Module không phát sinh ngoại lệ nào. Đầu vào ngoài phạm vi sẽ suy giảm theo các quy tắc dự phòng đã được ghi lại.

Tính năng này đi kèm trong NextPDF Pro (nextpdf/pro) và được kích hoạt bằng một license envelope hạng Pro. Một triển khai không có quyền đó sẽ không nạp các class của tính năng. So sánh các phiên bản và lấy giấy phép.

Không tồn tại cờ giấy phép theo từng tính năng. Đây là một tính năng của phiên bản Pro.

Terminal window
composer require nextpdf/pro:^3
Ký hiệuTham sốHành vi mặc địnhTrả vềNém hoặc thất bại vớiGhi chú
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.0Cấu hình diện mạo và đánh số bất biếnBatesNumberConfigCả mười một thuộc tính đều là public và readonly.
BatesNumberConfig::formatNumberint $pageIndex (đánh số từ 0)prefix + đệm số không (startNumber + pageIndex) + suffixstringMột số rộng hơn padding sẽ không bị cắt bớt.
BatesNumberConfig::getRangeint $pageCountCon dấu định dạng đầu tiên và cuối cùng cho lượt chạyarray{first: string, last: string}Giả định pageCount >= 1; số đếm bằng 0 sẽ định dạng chỉ số trang -1.
BatesNumberer::__constructBatesNumberConfig $configRàng buộc cấu hìnhBatesNumbererClass này là final và readonly.
BatesNumberer::generateint $pageCount, array $pageSizes, string $prefix = '', int $startFrom = 1Đường tắt tĩnh với diện mạo mặc địnhlist<string>Suffix, vị trí, phông, độ mờ, và layer giữ nguyên giá trị mặc định.
BatesNumberer::generateStreamsint $pageCount, list<array{width: float, height: float}> $pageSizesMột đoạn khép kín cho mỗi tranglist<string>Không bao giờ ném; một mục kích thước bị thiếu sẽ dự phòng về A4 dọcSố đoạn bằng pageCount; các mục kích thước dư sẽ bị bỏ qua.
BatesNumberer::buildPageStreamstring $text, float $pageWidth, float $pageHeightXây dựng đoạn con dấu của một trangstringĐược bọc q/Q; văn bản con dấu được thoát cho cú pháp literal-string.
BatesNumberer::getConfigTrả về cấu hình đã ràng buộcBatesNumberConfig
BatesPositioncác case enum BottomLeft, BottomCenter, BottomRight, TopLeft, TopCenter, TopRightTừ vựng vị trí được hỗ trợ bởi chuỗiCác giá trị nền là kebab-case (ví dụ bottom-right).
BatesPosition::coordinatesfloat $pageWidth, float $pageHeight, float $textWidth, float $inset = 15.0X/Y cho đường cơ sở của con dấu trong không gian PDF-nativearray{x: float, y: float}Gốc tọa độ ở dưới-trái; các hàng trên đặt đường cơ sở cách mép trên 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 tính startNumber + pageIndex, đệm số không ở bên trái cho đủ padding chữ số, và bọc nó bằng prefixsuffix. getRange trả về con dấu định dạng đầu tiên và cuối cùng cho một số trang. Hãy dùng nó để nối tiếp việc đánh số liên tục qua các đợt production.

Mỗi đoạn, theo thứ tự, gồm: một thao tác lưu trạng thái đồ họa (q), một toán tử màu tô, một điểm bắt đầu marked-content tùy chọn, một khối văn bản định vị và hiển thị con dấu, một điểm kết thúc marked-content tùy chọn, và một thao tác khôi phục (Q). Tọa độ và cỡ chữ được tuần tự hóa với sáu chữ số thập phân, nên đầu vào giống nhau tạo ra byte giống nhau. Văn bản con dấu thoát \, (, và ) trước khi đi vào chuỗi literal.

Khối văn bản chọn tên tài nguyên phông cố định /BatesFont. Resource dictionary của trang nhúng phải ánh xạ tên đó tới một phông khớp với fontFamily đã cấu hình, và họ phông phải phân giải được trong font registry. Bản thân việc sinh đoạn không bao giờ tra cứu registry.

BatesPosition::coordinates tính đường cơ sở của con dấu trong không gian PDF-native; gốc tọa độ ở dưới-trái. Vị trí giữa và phải trừ đi một chiều rộng văn bản ước lượng: độ dài byte nhân 0.6 nhân cỡ chữ, một phép xấp xỉ cho phông monospace. Phông tỷ lệ và văn bản đa byte làm lệch ước lượng đó. Vị trí trái không phụ thuộc vào nó.

Khi useLayer được bật (mặc định), đoạn bao văn bản giữa các toán tử marked-content BDCEMC. Tên marked-content có dạng /Lyr_<name>, dẫn xuất từ layerName với các ký tự không phải ký tự chữ được thay bằng dấu gạch dưới. Việc bao này chỉ ở mức đoạn: việc đăng ký nhóm nội dung tùy chọn tương ứng trong tài liệu — bước làm cho layer có thể bật/tắt trong trình xem — thuộc về writer nhúng.

Một opacity dưới 1.0 được phát ra dưới dạng màu tô thang xám nhạt hơn. Một con dấu hoàn toàn mờ đục hiển thị màu đen.

Engine áp dụng việc đánh số Bates đúng như đã cấu hình. Nó không khẳng định rằng một tài liệu đã đánh số là được tòa án chấp nhận hay có hiệu lực pháp lý. Sơ đồ đánh số, việc lưu giữ, và việc xử lý chứng cứ vẫn là trách nhiệm của khách hàng; hãy tham vấn các nhóm pháp lý và tuân thủ của bạn về tính đầy đủ về thủ tục.

  • generateStreams không bao giờ ném khi pageSizes không khớp. Một mục bị thiếu sẽ dự phòng về A4 dọc, 595.276 nhân 841.890 điểm; các mục dư bị bỏ qua.
  • Số đoạn luôn bằng pageCount.
  • Một số rộng hơn padding sẽ không bị cắt bớt; văn bản con dấu chỉ đơn giản là dài ra.
  • getRange giả định pageCount >= 1. Số đếm bằng 0 sẽ định dạng chỉ số trang -1, tức là startNumber - 1.
  • Độ mờ là một việc làm sáng thang xám, không phải độ trong suốt ExtGState; nội dung chồng lấp bên dưới con dấu không được hòa trộn.
  • Các byte con dấu khác ngoài \, (, và ) được truyền qua mà không mã hóa. Tính đúng đắn của việc mã hóa cho văn bản không phải ASCII phụ thuộc vào phông đã ràng buộc.
  • Các dấu Bates là nội dung phủ. Chúng không biên tập che, xóa, hay mã hóa bất cứ thứ gì trên trang.
  • Module không thực hiện thao tác mã hóa nào; chế độ FIPS không thay đổi hành vi của nó.
Hành viTham chiếuTrạng thái
Bao layer qua các toán tử marked-content BDC/EMCISO 32000-2:2020 §8.11.3.2Một phần — đoạn phát ra việc bao; việc đăng ký nhóm nội dung tùy chọn là bước của writer nhúng

Các hàng này ghi lại đặc tả mà module được xây dựng theo, không phải một chứng nhận; NextPDF không nắm giữ chứng nhận phù hợp nào. Bảng này cũng không phải là một tuyên bố về hiệu lực pháp lý hay tính đầy đủ về chứng cứ.

  • Các đoạn là những giá trị chuỗi thuần túy. Hãy kiểm thử chúng bằng cách so sánh byte trực tiếp; không cần bối cảnh tài liệu nào.
  • buildPageStream là public và có thể unit-test một cách độc lập: truyền văn bản đã định dạng sẵn và kích thước trang tường minh.
  • Để đánh số liên tục qua các đợt production, hãy khởi tạo startNumber từ lượt chạy trước và ghi lại đầu ra của getRange vào nhật ký production của bạn.
  • Tên layer được làm sạch về các ký tự chữ. Hãy ưu tiên tên layer ASCII để tên marked-content vẫn dễ đọc trong các công cụ kiểm tra.

Trang này chỉ ghi lại hành vi có thể quan sát từ bên ngoài và bề mặt API công khai được hỗ trợ. Các đường dẫn namespace nội bộ, class hỗ trợ, bảng cơ chế, tên tệp runbook, và tiền tố ticket đều nằm ngoài phạm vi.