1111 * OCR.FromWindow(WinTitle?, lang?, transform:=1, onlyClientArea:=0, mode:=4)
1212 * OCR.FromFile(FileName, lang?, transform:=1)
1313 * OCR.FromBitmap(bitmap, lang?, transform:=1, hDC?)
14- * OCR.FromPDF(FileName, lang?, transform:=1) => returns an array of results for each PDF page
14+ * OCR.FromPDF(FileName, lang?, transform:=1, start:=1, end? ) => returns an array of results for each PDF page
1515 * OCR.FromPDFPage(FileName, page:=1, lang?, transform:=1)
1616 *
1717 * Note: the first parameter of the OCR initiation methods may be an object mimicking named parameters.
@@ -729,11 +729,13 @@ class OCR {
729729 * @param FileName Either full or relative (to A_WorkingDir) path to the file.
730730 * @param lang OCR language. Default is first from available languages.
731731 * @param transform Either a scale factor number, or an object {scale:Float, grayscale:Boolean, invertcolors:Boolean, rotate: 0 | 90 | 180 | 270, flip: 0 | "x" | "y"}
732+ * @param start Page number to start from. Default is first page.
733+ * @param end Page number to end with (included). Default is last page.
732734 * @returns {OCR.OcrResult}
733735 */
734- static FromPDF(FileName, lang?, transform :=1 ) {
736+ static FromPDF(FileName, lang?, transform :=1 , start:= 1 , end ? ) {
735737 this.__ExtractTransformParameters(FileName, & transform )
736- this.__ExtractNamedParameters(FileName, " lang" , & lang, " FileName" , & FileName)
738+ this.__ExtractNamedParameters(FileName, " lang" , & lang, " start " , & start, " end " , & end , " FileName" , & FileName)
737739 if ! (fe := FileExist (FileName)) or InStr (fe, " D" )
738740 throw TargetError(" File `"" FileName " `" doesn't exist" , - 1 )
739741
@@ -742,12 +744,14 @@ class OCR {
742744 ComCall(8 , PdfDocumentStatics, " ptr" , IRandomAccessStream, " ptr*" , PdfDocument:=this.IBase()) ; LoadFromStreamAsync
743745 this.WaitForAsync(& PdfDocument)
744746 this.CloseIClosable(IRandomAccessStream)
745- ComCall(7 , PdfDocument, " uint*" , & count :=0 ) ; GetPageCount
746- if ! count
747- throw Error(" Unable to get PDF page count" , - 1 )
748- results := []
749- Loop count
750- results.Push(this.FromPDFPage(PdfDocument, A_Index , lang?, transform ))
747+ if ! IsSet(end ) {
748+ ComCall(7 , PdfDocument, " uint*" , & end :=0 ) ; GetPageCount
749+ if ! end
750+ throw Error(" Unable to get PDF page count" , - 1 )
751+ }
752+ local results := []
753+ Loop (end + 1 - start)
754+ results.Push(this.FromPDFPage(PdfDocument, start+ (A_Index - 1 ), lang?, transform ))
751755 return results
752756 }
753757
0 commit comments