v1.0.42: конвертация .doc через ВМ + парсер .doc
This commit is contained in:
+27
-2
@@ -163,6 +163,28 @@
|
||||
<cfreturn out>
|
||||
</cffunction>
|
||||
|
||||
<!--- ═══════════════════════════════════════════════════════════
|
||||
Helper: parseDOC — грубый экстрактор текста из .doc
|
||||
═══════════════════════════════════════════════════════════ --->
|
||||
<cffunction name="parseDOC" access="private" returntype="struct">
|
||||
<cfargument name="fileBytes" type="binary">
|
||||
<cfset var out = {elements: [], errors: []}>
|
||||
<cftry>
|
||||
<cfset var raw = createObject("java", "java.lang.String").init(fileBytes, "windows-1251")>
|
||||
<cfset var lines = raw.split("\n")>
|
||||
<cfloop array="#lines#" index="var line">
|
||||
<cfset line = trim(line)>
|
||||
<cfif len(line) GT 3 AND (reFind("[а-яА-ЯёЁ]", line) OR reFind("\d{2,}", line))>
|
||||
<cfset arrayAppend(out.elements, {type: "paragraph", style: "", text: line, page: 0})>
|
||||
</cfif>
|
||||
</cfloop>
|
||||
<cfcatch>
|
||||
<cfset arrayAppend(out.errors, ".doc: " & cfcatch.message)>
|
||||
</cfcatch>
|
||||
</cftry>
|
||||
<cfreturn out>
|
||||
</cffunction>
|
||||
|
||||
<!--- ═══════════════════════════════════════════════ MAIN --->
|
||||
<cfset result = {ok: false, error: ""}>
|
||||
<cftry>
|
||||
@@ -210,7 +232,7 @@
|
||||
<cfset parsed = {elements: [], errors: []}>
|
||||
<cfif zext EQ "pdf">
|
||||
<cfset parsed = parsePDF(entryBytes)>
|
||||
<cfelseif zext EQ "docx">
|
||||
<cfelseif zext EQ "docx" OR zext EQ "doc">
|
||||
<cfset parsed = parseDOCX(entryBytes)>
|
||||
<cfelse>
|
||||
<cfset arrayAppend(parsed.errors, "unsupported: .#zext#")>
|
||||
@@ -264,7 +286,10 @@
|
||||
</cftry>
|
||||
|
||||
<cfelseif doc.mime_type EQ "application/msword">
|
||||
<cfset arrayAppend(errors, ".doc not supported (use libreoffice)")>
|
||||
<cfset fileBytes = binaryDecode(doc.original_bytes, "base64")>
|
||||
<cfset parsed = parseDOC(fileBytes)>
|
||||
<cfset elements = parsed.elements>
|
||||
<cfset errors = parsed.errors>
|
||||
<cfelse>
|
||||
<cfset arrayAppend(errors, "unsupported: " & doc.mime_type)>
|
||||
</cfif>
|
||||
|
||||
Reference in New Issue
Block a user