LoadFromRangeSource
Quản lý tài liệu, Hiệu năng
Mô tả
Nạp và chọn một PDF thông qua một callback truy cập ngẫu nhiên đồng bộ, cho phép các HTTP client, cơ sở dữ liệu, kho đối tượng và nhà cung cấp lưu trữ tùy chỉnh chỉ cung cấp các vùng byte mà bộ phân tích chạm tới
Cú pháp
Delphi
Function TPDFlib.LoadFromRangeSource(SourceSize: Int64;
ReadCallback: TPDFlibRangeReadEvent; Const Password: WideString;
ChunkSize: LongInt= 0; CacheLimitBytes: Int64= 0;
CoalesceWindowMS: Cardinal= PDF_NET_DEFAULT_COALESCE_WINDOW_MS;
AvailabilityCallback: TPDFlibRangeAvailabilityEvent= Nil): Integer;Tham số
| SourceSize | Tổng kích thước nguồn chính thức tính bằng byte |
|---|---|
| ReadCallback | Callback sao chép các byte cho một offset nguồn tuyệt đối |
| Password | Mật khẩu dùng để mở PDF, hoặc chuỗi rỗng cho tài liệu không mã hóa |
| ChunkSize | Độ chi tiết lấy vùng dữ liệu căn chỉnh; số 0 chọn mặc định 64 KiB và các giá trị dưới 4096 cũng dùng mặc định |
| CacheLimitBytes | Số byte tối đa được giữ lại xuyên qua các cửa sổ ít-dùng-gần-nhất; số 0 chọn mặc định 4 MiB và các giá trị dưới một chunk được nâng lên một chunk |
| CoalesceWindowMS | Cửa sổ gộp cho chunk đầu tiên chưa có trong bộ đệm của mỗi lần đọc tuyệt đối; 2 mili giây là mặc định và số 0 tắt độ trễ ban đầu |
| AvailabilityCallback | Một phép kiểm tra tùy chọn, không tải về, cho các vùng byte hiện có sẵn trong lưu trữ tiến triển |
Giá trị trả về
| 0 | Các đối số nguồn không hợp lệ hoặc không thể nạp PDF; hãy kiểm tra LastErrorCode |
|---|---|
| 1 | Tài liệu đã được nạp và chọn |
Ghi chú
Callback đọc nhận các offset tuyệt đối tính từ 0 và phải ghi không quá Count byte vào Buffer, trả về số byte đã ghiĐích callback và bộ lưu trữ nền của nó phải giữ hợp lệ cho đến khi tài liệu đã nạp được đóng vì việc kết xuất trang, trích xuất và lưu có thể yêu cầu thêm các vùng dữ liệu sau nàyCác lệnh gọi là đồng bộ và có thể đến theo thứ tự không tuần tự; một kết quả ngắn được chấp nhận ở cuối vật lý của nguồn, còn một kết quả 0 ngoài dự kiến khiến việc nạp hay thao tác hoãn hiện tại thất bạiKhi
Đích callback và bộ lưu sau của nó phải còn hợp lệ cho đến khi tài liệu đã tải bị đóng vì render trang, trích xuất và lưu có thể yêu cầu thêm vùng sau này
Các lời gọi là đồng bộ và có thể đến không theo thứ tự; kết quả ngắn được chấp nhận ở cuối vật lý của nguồn, còn kết quả không bất thường làm tải hoặc operation hoãn hiện tại thất bại
AvailabilityCallback được gán, hãy trả về một giá trị khác 0 chỉ khi toàn bộ vùng dữ liệu được yêu cầu có thể được đọc ngay lập tức mà không cần truyền tải hay I/O chặnMột vùng dữ liệu đã cache là khả dụng bất kể kết quả callback; một callback
Nil giữ hành vi đồng bộ bằng cách coi mọi vùng nguồn hợp lệ là khả dụngCác chunk căn chỉnh tránh phải tải truyền tải trùng lặp cho các lần đọc chồng lấn, còn ngân sách byte giới hạn payload được giữ lại độc lập với kích thước tài liệuCác lần đọc đối tượng và đoạn hoãn dùng các offset tuyệt đối, nên các công việc đồng thời dùng chung yêu cầu cùng chunk và gộp các chunk liền kề trong hàng đợi mà không thay đổi con trỏ luồng định vịCác callback nguồn được tuần tự hóa và không được đọc đệ quy từ cùng stream vùng dữ liệu đóDùng
Các chunk sắp thẳng giúp tránh fetch trùng qua transport cho các lần đọc chồng lấn, còn hạn mức byte chặn lượng payload giữ lại độc lập với kích thước tài liệu
Đọc object và segment hoãn dùng offset tuyệt đối, công việc đồng thời nhờ vậy chia sẻ yêu cầu cùng chunk và gộp chunk kề nhau trong hàng đợi mà không đổi cursor dòng của stream
Các callback nguồn được xếp tuần tự và không được đọc đệ quy từ cùng range stream
GetRangeSourceDataAvailability
GetRangeSourceCacheInfo để kiểm tra các phụ thuộc trang, form hay đối tượng gián tiếp mà không đọc các vùng dữ liệu được báo là thiếuDùng SetRangeSourceCacheLimit, ClearRangeSourceCache và
Thư viện sở hữu range stream có seek nội bộ của mình, nhưng không sở hữu đích callback hay bộ lưu sau của nó