Read Barcode From Uploaded File - PHP
Barcode Reader sample in PHP demonstrating ‘Read Barcode From Uploaded File’
read-barcode.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Barcode Reader Results</title>
</head>
<body>
<?php
// Note: If you have input files large than 200kb we highly recommend to check "async" mode example.
// Get submitted form data
$apiKey = $_POST["apiKey"]; // The authentication key (API Key). Get your own by registering at https://app.pdf.co
$barcodeTypesToFind = $_POST["barcodeTypesToFind"];
$pages = $_POST["pages"];
// 1. RETRIEVE THE PRESIGNED URL TO UPLOAD THE FILE.
// * If you already have the direct PDF file link, go to the step 3.
// Create URL
$url = "https://api.pdf.co/v1/file/upload/get-presigned-url" .
"?name=" . urlencode($_FILES["file"]["name"]) .
"&contenttype=application/octet-stream";
// Create request
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, array("x-api-key: " . $apiKey));
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// Execute request
$result = curl_exec($curl);
if (curl_errno($curl) == 0)
{
$status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($status_code == 200)
{
$json = json_decode($result, true);
// Get URL to use for the file upload
$uploadFileUrl = $json["presignedUrl"];
// Get URL of uploaded file to use with later API calls
$uploadedFileUrl = $json["url"];
// 2. UPLOAD THE FILE TO CLOUD.
$localFile = $_FILES["file"]["tmp_name"];
$fileHandle = fopen($localFile, "r");
curl_setopt($curl, CURLOPT_URL, $uploadFileUrl);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("content-type: application/octet-stream"));
curl_setopt($curl, CURLOPT_PUT, true);
curl_setopt($curl, CURLOPT_INFILE, $fileHandle);
curl_setopt($curl, CURLOPT_INFILESIZE, filesize($localFile));
// Execute request
curl_exec($curl);
fclose($fileHandle);
if (curl_errno($curl) == 0)
{
$status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($status_code == 200)
{
// 3. READ BARCODES FROM UPLOADED IMAGE OR PDF DOCUMENT
ReadBarcodes($apiKey, $barcodeTypesToFind, $uploadedFileUrl, $pages);
}
else
{
// Display request error
echo "<p>Status code: " . $status_code . "</p>";
echo "<p>" . $result . "</p>";
}
}
else
{
// Display CURL error
echo "Error: " . curl_error($curl);
}
}
else
{
// Display service reported error
echo "<p>Status code: " . $status_code . "</p>";
echo "<p>" . $result . "</p>";
}
curl_close($curl);
}
else
{
// Display CURL error
echo "Error: " . curl_error($curl);
}
function ReadBarcodes($apiKey, $barcodeTypesToFind, $uploadedFileUrl, $pages)
{
// Prepare URL for `Barcode Reader` API call
$url = "https://api.pdf.co/v1/barcode/read/from/url";
// Prepare requests params
$parameters = array();
$parameters["types"] = join(",", $barcodeTypesToFind);
$parameters["pages"] = $pages;
$parameters["url"] = $uploadedFileUrl;
// Create Json payload
$data = json_encode($parameters);
// Create request
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, array("x-api-key: " . $apiKey, "Content-type: application/json"));
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
// Execute request
$result = curl_exec($curl);
if (curl_errno($curl) == 0)
{
$status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($status_code == 200)
{
$json = json_decode($result, true);
if (!isset($json["error"]) || $json["error"] == false)
{
// Display decoding results
$barcodes = $json["barcodes"];
foreach ($barcodes as $barcode)
{
echo "<h2>Found barcode:</h2>";
echo "<p>Type: " . $barcode["TypeName"] . "</p>";
echo "<p>Value: " . $barcode["Value"] . "</p>";
echo "<p>Document Page Index: " . $barcode["Page"] . "</p>";
echo "<p>Rectangle: " . $barcode["Rect"] . "</p>";
echo "<p>Confidence: " . $barcode["Confidence"] . "</p>";
echo "<br/>";
}
}
else
{
// Display service reported error
echo "<p>Error: " . $json["message"] . "</p>";
}
}
else
{
// Display request error
echo "<p>Status code: " . $status_code . "</p>";
echo "<p>" . $result . "</p>";
}
}
else
{
// Display CURL error
echo "Error: " . curl_error($curl);
}
}
?>
</body>
</html>
sample.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Barcode Reader Cloud API Example</title>
</head>
<body>
<form name="form1" enctype="multipart/form-data" method="post" action="read-barcode.php">
<p>
<label>Authentication key (API Key). Get your own by registering at <a href="https://apidocs.pdf.co">https://apidocs.pdf.co</a>.</label>
<br/>
<input type="text" name="apiKey" placeholder="API Key"/>
</p>
<p>
<label>Barcode types to find. Select only expected types for faster decoding and less false positives.</label>
</br>
<select multiple="multiple" size="10" name="barcodeTypesToFind[]">
<option selected="selected">All</option>
<option>All1D</option>
<option>All2D</option>
<option>AllOMRElements</option>
<option>AustralianPostCode</option>
<option>Aztec</option>
<option>CircularI2of5</option>
<option>Codabar</option>
<option>CodablockF</option>
<option>Code128</option>
<option>Code16K</option>
<option>Code39</option>
<option>Code39Extended</option>
<option>Code39Mod43</option>
<option>Code39Mod43Extended</option>
<option>Code93</option>
<option>DataMatrix</option>
<option>EAN13</option>
<option>EAN2</option>
<option>EAN5</option>
<option>EAN8</option>
<option>GS1</option>
<option>GS1DataBarExpanded</option>
<option>GS1DataBarExpandedStacked</option>
<option>GS1DataBarLimited</option>
<option>GS1DataBarOmnidirectional</option>
<option>GS1DataBarStacked</option>
<option>GTIN12</option>
<option>GTIN13</option>
<option>GTIN14</option>
<option>GTIN8</option>
<option>IntelligentMail</option>
<option>Interleaved2of5</option>
<option>ITF14</option>
<option>MaxiCode</option>
<option>MICR</option>
<option>MicroPDF</option>
<option>MSI</option>
<option>PatchCode</option>
<option>PDF417</option>
<option>Pharmacode</option>
<option>PostNet</option>
<option>PZN</option>
<option>QRCode</option>
<option>RoyalMail</option>
<option>RoyalMailKIX</option>
<option>Trioptic</option>
<option>UPCA</option>
<option>UPCE</option>
<option>UPU</option>
<option>Checkbox</option>
<option>Circle</option>
<option>Oval</option>
<option>UnderlinedField</option>
<option>HorizontalLine</option>
<option>VerticalLine</option>
<option>Segment</option>
</select>
</p>
<p>
<label>Input File (*.pdf, *.jpg, *.png, *.tif, *.gif, *.bmp)</label>
</br>
<input type="hidden" name="MAX_FILE_SIZE" value="8000000"/>
<input type="file" name="file"/>
</p>
<p>
<label>Comma-separated list of page indices (or ranges) to process. Leave empty for all pages. Example: '0,2-5,7-'.</label>
<br/>
<input type="number" name="pages" value="0">
</p>
<input type="submit" name="submit" value="Proceed" />
</form>
</body>
</html>
PDF.co Web API: the Web API with a set of tools for documents manipulation, data conversion, data extraction, splitting and merging of documents. Includes image recognition, built-in OCR, barcode generation and barcode decoders to decode bar codes from scans, pictures and pdf.
Download Source Code (.zip)
return to the previous page explore Barcode Reader endpoint
Copyright © 2016 - 2023 PDF.co