RepairQDFFile

Felsökning, Dokumentreparation

Beskrivning

Reparerar en QDF-PDF efter att mänskliga redigeringar ändrat strömlängder eller objektbytepositioner

Reparationspasset skannar objektgränser utan att lita på inaktuella korsreferensoffset, räknar om strömlängder, uppdaterar indirekta längdobjekt och bygger om frilistan, korsreferenstabellen, trailern, startxref och /Size

Strömdata som innehåller endstream- och endobj-rader bevaras när objektet har en entydig QDF-strömmarkör. Ogiltiga QDF-indata och upprepade markörer för samma objekt avvisas innan destinationsfilen öppnas, så att en befintlig utdatafil bevaras även vid reparation på plats

Syntax

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

Parametrar

InputFileNameThe edited QDF PDF
OutputFileNameSökvägen till den reparerade PDF:en, som kan vara identisk med indatasökvägen

Returvärden

1Den redigerade QDF-filen reparerades
0Indatan var inte en reparerbar QDF eller destinationen kunde inte skrivas

Fel

LastErrorCode 401 rapporterar ett fel vid inläsning av indata, 107 rapporterar ogiltig eller tvetydig QDF-struktur eller ett annat reparationsfel, och 305 rapporterar ett fel vid skrivning av utdata

Anmärkningar

Hela källan repareras i minnet och skrivs sedan till en temporär fil som skapas exklusivt i målkatalogen. Filen spolas och stängs innan en ersättning på samma volym publicerar resultatet. Misslyckas skrivning, spolning eller ersättning bevaras befintliga byte i målfilen och fel 305 returneras; läsfel på indata returnerar 401

Målkatalogen måste tillåta skapande av temporära filer och ersättning. Windows-mål som är skrivskyddade eller öppnats utan delete-delning kan inte ersättas. Befintliga DACL-behörigheter på målet kopieras till den temporära filen innan några reparerade data skrivs; otillgängliga behörigheter, ett mål utan explicit DACL eller ett EFS-krypterat mål ger fel 305. En lyckad ersättning skapar en ny filidentitet och bevarar inte alternativa dataströmmar eller vanliga filattribut. Temporära filer tas bort både efter normalt lyckat resultat och efter fel; abrupt processterminering kan lämna kvar en temporär fil. Detta API garanterar inte att resultatet överlever strömavbrott eller samtidiga ändringar från en annan skrivprocess