如何从 TWAIN 中保存扫描数据?

问题描述 投票:0回答:0

所以我正在使用 TWAIN 扫描文档(我在计费中需要报价表),当扫描文档时,数据应该保存在我的数据库中,在我的

rubrique_facturations
表中,所以这是我的控制器:

<?php

namespace App\Http\Controllers;

use App\Models\Rubrique_facturation;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class Rubrique_facturationController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $rubrique = Rubrique_facturation::all();

        return view('facturation.index', ['facturations' => $rubrique]);
    }
    public function scan(Request $request)
    {
        // Get the scanned data from the POST request
        $scannedData = $request->input('scanned_data');

        // Validate the scanned data before storing it
        $request->validate([
            'scanned_data' => 'required|string|max:255',
        ]);

        // Convert the base64-encoded scanned data to binary
        $binaryData = base64_decode($scannedData);

        // Store the scanned data in your database
        $scan = new Rubrique_facturation;
        $scan->scan_data = $binaryData;
        $scan->save();

        // Redirect the user to a success page or back to the form page
        return redirect()->back()->with('success', 'Scanned data has been stored successfully.');
    }

    public function saveScan(Request $request)
    {
        // récupération des données scannées
        $designation = $_POST['designation'];
        $quantite = $_POST['quantite'];
        $prix_unitaire  = $_POST['prix_unitaire '];
        $MontantHT = $_POST['MontantHT'];
        $totaleHT = $_POST['totaleHT'];
        $tva = $_POST['tva'];
        $TotalTtc = $_POST['TotalTtc'];
        $unite_rebrique_financier = $_POST['unite_rebrique_financier'];

        // sérialisation des colonnes qui peuvent contenir de 1 jusqu'à n valeurs
        $designation = serialize($designation);
        $quantite = serialize($quantite);
        $prix_unitaire  = serialize($prix_unitaire);
        $MontantHT = serialize($MontantHT);
        $totaleHT = serialize($totaleHT);
        $tva = serialize($tva);
        $TotalTtc = serialize($TotalTtc);
        $unite_rebrique_financier = serialize($unite_rebrique_financier);

        // insertion des données dans la table
        DB::table('rubrique_facturation')->insert([
            'designation' => $designation,
            'quantite' => $quantite,
            'prix_unitaire ' => $prix_unitaire,
            'MontantHT' => $MontantHT,
            'totaleHT' => $totaleHT,
            'tva' => $tva,
            'TotalTtc' => $TotalTtc,
            'unite_rebrique_financier' => $unite_rebrique_financier,
        ]);

        // désérialisation des colonnes pour récupérer les valeurs stockées
        $designation = unserialize($designation);
        $quantite = unserialize($quantite);
        $prix_unitaire  = unserialize($prix_unitaire);
        $MontantHT = unserialize($MontantHT);
        $totaleHT = unserialize($totaleHT);
        $tva = unserialize($tva);
        $TotalTtc = unserialize($TotalTtc);
        $unite_rebrique_financier = unserialize($unite_rebrique_financier);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {

        $rubrique = new Rubrique_facturation();
        $rubrique->designation = $request->input('designation');
        $rubrique->quantite = $request->input('quantite');
        $rubrique->prix_unitaire = $request->input('prix_unitaire');
        $rubrique->MontantHT = $request->input('MontantHT');
        $rubrique->totaleHT = $request->input('totaleHT');
        $rubrique->tva = $request->input('tva');
        $rubrique->TotalTtc = $request->input('TotalTtc');
        $rubrique->unite_rebrique_financier = $request->input('unite_rebrique_financier');

        $rubrique->store();

        return redirect('facturation.index');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $rubrique = Rubrique_facturation::find($id);
        $rubrique = new Rubrique_facturation();
        $rubrique->designation = $request->input('designation');
        $rubrique->quantite = $request->input('quantite');
        $rubrique->prix_unitaire = $request->input('prix_unitaire');
        $rubrique->MontantHT = $request->input('MontantHT');
        $rubrique->totaleHT = $request->input('totaleHT');
        $rubrique->tva = $request->input('tva');
        $rubrique->TotalTtc = $request->input('TotalTtc');
        $rubrique->unite_rebrique_financier = $request->input('unite_rebrique_financier');

        $rubrique->store();

        return redirect('facturation.index');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

这是我对扫描和保存扫描数据的看法

<!DOCTYPE html>
<html>
<head>
  <title>Scan d'image</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container">
  <div class="row justify-content-center mt-5">
    <div class="col-md-6">
      <div class="card">
        <div class="card-header">
          <h4 class="text-center">Scannez votre document</h4>
        </div>
        <div class="card-body text-center">
          <div id="dwtcontrolContainer"></div>
          <div class="mt-5 d-flex justify-content-end">
            <form method="post" action="save.php">
              <input type="hidden" id="designation" name="designation">
              <input type="hidden" id="quantite" name="quantite">
              <input type="hidden" id="prix_unitaire" name="prix_unitaire ">
              <input type="hidden" id="MontantHT" name="MontantHT">
              <input type="hidden" id="totaleHT" name="totaleHT">
              <input type="hidden" id="tva" name="tva" value="">
              <input type="hidden" id="TotalTtc" name="TotalTtc">
              <input type="hidden" id="unite_rebrique_financier" name="unite_rebrique_financier">
              <button type="button" class="btn btn-success mr-2" onclick="saveData(scannedData)">Enregistrer</button>
            </form>
            <button type="button" class="btn btn-primary mr-2" onclick="AcquireImage()">Scaner</button>
            <button type="button" class="btn btn-danger mr-2" onclick="LoadImage();">Charger un document</button>
            <button type="button" class="btn btn-secondary mr-2">Annuler</button>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<?php
// Connexion à la base de données
$serverName = "127.0.0.1";
$connectionOptions = array(
  "Database" => "cth",
  "UID" => "hanane",
  "PWD" => "16011998"
);

$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn === false) {
  die(print_r(sqlsrv_errors(), true));
}

// Vérifier la connexion

// Récupérer les données envoyées depuis la page HTML
$designation = isset($_POST['designation']) ? $_POST['designation'] : '';
$quantite = isset($_POST['quantite']) ? $_POST['quantite'] : '';
$prix_unitaire = isset($_POST['prix_unitaire']) ? $_POST['prix_unitaire'] : '';
$MontantHT = isset($_POST['MontantHT']) ? $_POST['MontantHT'] : '';
$totaleHT = isset($_POST['totaleHT']) ? $_POST['totaleHT'] : '';
$tva = isset($_POST['tva']) ? $_POST['tva'] : '';
$TotalTtc = isset($_POST['TotalTtc']) ? $_POST['TotalTtc'] : '';
$unite_rebrique_financier = isset($_POST['unite_rebrique_financier']) ? $_POST['unite_rebrique_financier'] : '';
// Préparer la requête SQL pour insérer les données dans la base de données
$sql = "INSERT INTO rebrique_facturations (designation, quantite, prix_unitaire, MontantHT, totaleHT, tva, TotalTtc, unite_rebrique_financier) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
$params = array($designation, $quantite, $prix_unitaire, $MontantHT, $totaleHT, $tva, $TotalTtc, $unite_rebrique_financier);
$stmt = sqlsrv_prepare($conn, $sql, $params);

if (!$stmt) {
  die(print_r(sqlsrv_errors(), true));
}

// Exécuter la requête SQL
if (sqlsrv_execute($stmt)) {
  echo "Données enregistrées avec succès.";
} else {
  echo "Erreur: " . $sql . "<br>" . print_r(sqlsrv_errors(), true);
}

// Fermer la connexion à la base de données
sqlsrv_close($conn);
?>

<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="Resources/dynamsoft.webtwain.initiate.js"></script>
<script src="Resources/dynamsoft.webtwain.config.js"></script>
<script type="text/javascript">
  var DWObject;

  function Dynamsoft_OnReady() {
    DWObject = Dynamsoft.DWT.GetWebTwain("dwtcontrolContainer");
  }

  function AcquireImage() {
    if (DWObject) {
      DWObject.SelectSourceAsync()
        .then(function () {
          return DWObject.AcquireImageAsync({
            IfDisableSourceAfterAcquire: true,
          });
        })
        .then(function (result) {
          console.log(result);
        })
        .catch(function (exp) {
          console.error(exp.message);
        })
        .finally(function () {
          DWObject.CloseSourceAsync().catch(function (e) {
            console.error(e);
          });
        });
    }
  }

  function LoadImage() {
    if (DWObject) {
      DWObject.LoadImageEx("", 5)
        .then(function () {
          console.log("Image chargée");
        })
        .catch(function (err) {
          console.error(err.message);
        });
    }
  }

  function saveData() {
    var formdata = new FormData();
    formdata.append('scannedData', scannedData);
    formdata.append('designation', document.getElementById('designation').value);
    formdata.append('quantite', document.getElementById('quantite').value);
    formdata.append('prix_unitaire', document.getElementById('prix_unitaire').value);
    formdata.append('MontantHT', document.getElementById('MontantHT').value);
    formdata.append('totaleHT', document.getElementById('totaleHT').value);
    formdata.append('tva', document.getElementById('tva').value);
    formdata.append('TotalTtc ', document.getElementById('TotalTtc ').value);
    formdata.append('unite_rebrique_financier', document.getElementById('unite_rebrique_financier').value);
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'save.php', true);
    xhr.onload = function () {
      if (this.status == 200) {
        alert('Data saved successfully!');
      } else {
        alert('Error saving data!');
      }
    };
    xhr.send(formdata);
  }
</script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>

我被屏蔽了,在 youtube 上没有找到任何东西,文档也没有包含太多信息

php laravel scanning twain
© www.soinside.com 2019 - 2024. All rights reserved.