extractText method

String extractText(
  1. String path, {
  2. int startPage = 1,
  3. int endPage = 0,
  4. String textOutEnc = 'UTF-8',
  5. String layout = 'rawOrder',
  6. String? ownerPassword,
  7. String? userPassword,
  8. Allocator allocator = calloc,
})

Implementation

String extractText(String path,
    {int startPage = 1,
    int endPage = 0,
    String textOutEnc = 'UTF-8',
    String layout = 'rawOrder',
    String? ownerPassword,
    String? userPassword,
    Allocator allocator = calloc}) {
  var pathC = stringToNativeInt8(path, allocator: allocator);
  var textOutEncC = stringToNativeInt8(textOutEnc, allocator: allocator);
  var layoutC = stringToNativeInt8(layout, allocator: allocator);
  // ignore: omit_local_variable_types
  Pointer<Pointer<Int8>> textOut = allocator();

  var _ownerPassword = ownerPassword != null
      ? stringToNativeInt8(ownerPassword, allocator: allocator)
      : nullptr;

  var _userPassword = userPassword != null
      ? stringToNativeInt8(userPassword, allocator: allocator)
      : nullptr;
  try {
    var _logCallbackC = Pointer.fromFunction<Void Function(Pointer<Int8>)>(
        _logCallbackExtractText);

    var result = pdfToTextBindings!.extractText(
        pathC,
        startPage,
        endPage,
        textOutEncC,
        layoutC,
        textOut,
        _logCallbackC,
        _ownerPassword,
        _userPassword);

    var textResult = nativeInt8ToString(textOut.value);
    if (result == 0) {
      return textResult;
    } else {
      throw Exception('Error extracting text from PDF: $_lastError');
    }
  } catch (e) {
    rethrow;
  } finally {
    if (ownerPassword != null) {
      allocator.free(_ownerPassword);
    }
    if (userPassword != null) {
      allocator.free(_userPassword);
    }
    allocator.free(pathC);
    allocator.free(textOutEncC);
    allocator.free(textOut);
  }
}