v1.0.6: parser.cfm — PDFBox Loader + BufferedInputStream

This commit is contained in:
2026-06-18 16:37:25 +04:00
parent 186c889513
commit 3e191f83ed
2 changed files with 35 additions and 19 deletions
+1 -1
View File
@@ -1 +1 @@
<cfsetting showdebugoutput=no enablecfoutputonly=yes><cfoutput>OK v1.0.5</cfoutput> <cfsetting showdebugoutput=no enablecfoutputonly=yes><cfoutput>OK v1.0.6</cfoutput>
+18 -2
View File
@@ -29,8 +29,22 @@
<cfset fileBytes = binaryDecode(doc.original_bytes, "base64")> <cfset fileBytes = binaryDecode(doc.original_bytes, "base64")>
<!--- Байты → InputStream ---> <!--- Байты → InputStream --->
<cfset bais = createObject("java", "java.io.ByteArrayInputStream").init(fileBytes)> <cfset bais = createObject("java", "java.io.ByteArrayInputStream").init(fileBytes)>
<!--- Открываем PDF ---> <cfset bis = createObject("java", "java.io.BufferedInputStream").init(bais)>
<cfset pdfDoc = createObject("java", "org.apache.pdfbox.pdmodel.PDDocument").load(bais)>
<!--- Пробуем PDFBox 3.x Loader, иначе 2.x PDDocument.load --->
<cfset pdfDoc = 0>
<cftry>
<cfset pdfDoc = createObject("java", "org.apache.pdfbox.Loader").loadPDF(bis)>
<cfcatch>
<cftry>
<cfset pdfDoc = createObject("java", "org.apache.pdfbox.pdmodel.PDDocument").load(bis)>
<cfcatch>
<cfset arrayAppend(errors, "PDFBox: cannot open PDF — " & cfcatch.message)>
</cfcatch>
</cftry>
</cfcatch>
</cftry>
<cfif NOT isNumeric(pdfDoc)>
<cfset stripper = createObject("java", "org.apache.pdfbox.text.PDFTextStripper")> <cfset stripper = createObject("java", "org.apache.pdfbox.text.PDFTextStripper")>
<cfset pageCount = pdfDoc.getNumberOfPages()> <cfset pageCount = pdfDoc.getNumberOfPages()>
@@ -49,6 +63,8 @@
</cfloop> </cfloop>
<cfset pdfDoc.close()> <cfset pdfDoc.close()>
</cfif>
<cfset bis.close()>
<cfset bais.close()> <cfset bais.close()>
<cfcatch> <cfcatch>