v1.0.79: .doc → XWPF первым (после конвертации), HWPF только fallback

This commit is contained in:
2026-06-21 08:07:59 +04:00
parent 9eaa6d1f08
commit 0be35bd3db
+24 -6
View File
@@ -318,9 +318,18 @@
<cfset parsed = parseDOCX(entryBytes)>
</cfif>
<cfelseif zext EQ "doc">
<cfset parsed = parseDOC_POI(entryBytes)>
<cfif arrayLen(parsed.elements) EQ 0 AND arrayLen(parsed.errors) GT 0>
<cfset parsed = parseDOC(entryBytes)>
<!--- После конвертации это уже docx — пробуем XWPF первым --->
<cftry>
<cfset parsed = parseDOCX(entryBytes)>
<cfcatch>
<cfset parsed = {elements: [], errors: ["XWPF fallback: " & cfcatch.message]}>
</cfcatch>
</cftry>
<cfif arrayLen(parsed.elements) EQ 0>
<cfset parsed = parseDOC_POI(entryBytes)>
<cfif arrayLen(parsed.elements) EQ 0 AND arrayLen(parsed.errors) GT 0>
<cfset parsed = parseDOC(entryBytes)>
</cfif>
</cfif>
<cfelse>
<cfset arrayAppend(parsed.errors, "unsupported: .#zext#")>
@@ -379,9 +388,18 @@
<cfelseif doc.mime_type EQ "application/msword">
<cfset fileBytes = binaryDecode(doc.original_bytes, "base64")>
<cfset parsed = parseDOC_POI(fileBytes)>
<cfif arrayLen(parsed.elements) EQ 0 AND arrayLen(parsed.errors) GT 0>
<cfset parsed = parseDOC(fileBytes)>
<!--- После конвертации на ВМ это уже docx — пробуем XWPF первым --->
<cftry>
<cfset parsed = parseDOCX(fileBytes)>
<cfcatch>
<cfset parsed = {elements: [], errors: ["XWPF fallback: " & cfcatch.message]}>
</cfcatch>
</cftry>
<cfif arrayLen(parsed.elements) EQ 0>
<cfset parsed = parseDOC_POI(fileBytes)>
<cfif arrayLen(parsed.elements) EQ 0 AND arrayLen(parsed.errors) GT 0>
<cfset parsed = parseDOC(fileBytes)>
</cfif>
</cfif>
<cfset elements = parsed.elements>
<cfset errors = parsed.errors>