RepairQDFFile

Gỡ lỗi, Sửa chữa tài liệu

Mô tả

Sửa một PDF QDF sau khi người dùng sửa tay làm đổi độ dài stream hay vị trí byte object

Lượt sửa quét các ranh giới object mà không tin các offset cross reference cũ, tính lại độ dài stream, cập nhật các object độ dài gián tiếp, và dựng lại danh sách trống, bảng cross reference, trailer, startxref và /Size

Dữ liệu stream chứa các dòng endstream và endobj được giữ nguyên khi đối tượng có QDF stream marker rõ ràng không gây nhầm lẫn. Đầu vào QDF không hợp lệ và marker bị lặp lại cho cùng một đối tượng sẽ bị từ chối trước khi đích được mở, nhờ đó tệp đầu ra sẵn có vẫn được giữ lại ngay cả khi đang sửa tại chỗ

Cú pháp

Delphi

Function TPDFlib.RepairQDFFile(Const InputFileName, OutputFileName: WideString): Integer;

DLL

int DLRepairQDFFile(int InstanceID, const wchar_t* InputFileName, const wchar_t* OutputFileName);

ActiveX

Function PDFlib::RepairQDFFile(InputFileName As String, OutputFileName As String) As Long

Tham số

InputFileNamePDF QDF đã chỉnh sửa
OutputFileNameĐường dẫn PDF đã phục hồi, có thể trùng với đường dẫn đầu vào

Giá trị trả về

1QDF đã sửa đã được phục hồi
0Đầu vào không phải QDF sửa được hoặc không ghi được đích

Lỗi

LastErrorCode 401 báo lỗi đọc đầu vào, 107 báo cấu trúc QDF không hợp lệ hoặc mơ hồ hay một lỗi sửa chữa khác, còn 305 báo lỗi ghi đầu ra

Ghi chú

Toàn bộ dữ liệu nguồn được sửa trong bộ nhớ, rồi ghi vào một tệp tạm được tạo độc quyền trong thư mục đích. Tệp được flush và đóng trước khi việc thay thế cùng ổ đĩa công bố kết quả. Lỗi ghi, flush hay thay thế sẽ giữ nguyên các byte đích hiện có và trả về lỗi 305; lỗi đọc đầu vào trả về 401

Thư mục đích phải cho phép tạo tệp tạm và thay thế tệp. Các đích trên Windows ở chế độ read-only hoặc được mở không có delete sharing sẽ không thể thay thế. Quyền DACL hiện có của đích được sao chép sang tệp tạm trước khi bất kỳ dữ liệu đã sửa nào được ghi; quyền không truy cập được, đích không có DACL tường minh, hoặc đích mã hóa EFS sẽ gây lỗi 305. Thay thế thành công tạo ra một định danh tệp mới và không giữ lại alternate data streams hay các thuộc tính tệp thông thường. Tệp tạm được xóa sau khi thành công hay thất bại bình thường; process kết thúc đột ngột có thể để lại tệp tạm. API này không đảm bảo sống sót qua mất điện hay các thay đổi đồng thời từ một writer khác