Gerando e imprimindo códigos de barras com php e js
Olá pessoal,
estou tentando criar um código que gere um código de barras a partir de uma chave numérica de 44 dígitos e imprima isso em um arquivo pdf. Consegui gerar o arquivo pdf com os formulários que eu queria, e consegui achar uma forma de gerar o código, mas o código não é impresso. Tenho os seguintes arquivos:
Teste_CodeBar.php
<!DOCTYPE html>
<html>
<head>
<title>BytescoutBarcode128 SDK barcode generation example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- bytescoutbarcode128.js script containing bytescoutbarcode128 class to generate barcode image -->
<script type="text/javascript" src="bytescoutbarcode128_1.00.07.js"></script>
<!-- Downloadify ([https://github.com/dcneiner/Downloadify#readme](https://github.com/dcneiner/Downloadify#readme)) script (Downloadify helps to download javascript-generated file even in old browsers which do not supports Data URI scheme for data streaming) -->
<script type="text/javascript" src="downloadify.min.js"></script>
<!-- helper file for Downloadify-->
<script type="text/javascript" src="swfobject.js"></script>
<!-- Helper script with CheckDataURISupport() function to determine if current browser supports Data URI scheme -->
<script type="text/javascript" src="checkdatauri.js"></script>
<!-- helper script from google code to init HTML5 support in Internet Explorer if needed -->
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js" type="text/javascript"></script>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/ie7-squish.js" type="text/javascript"></script>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script><![endif]-->
</head>
<body onload="updateBarcode()">
<form action="" method='POST'>
Barcode value:
<input id="barcodeValue" type="text" name="value" value="" />
<input type="button" value="Update" onclick="updateBarcode()" />
<input type="submit" name='PDF' value="PDF"/>
</form>
</p>
<script type="text/javascript">
function updateBarcode()
{
var canvas1 = document.getElementById("barcodeCanvas");
var barcode = new bytescoutbarcode128();
var value = document.getElementById("barcodeValue").value;
barcode.valueSet(value);
barcode.setMargins(5, 5, 5, 5);
barcode.setBarWidth(2);
barcode.setSize(barcode.getMinWidth(), 75);
var width = barcode.getMinWidth();
var barcodeImage = document.getElementById('barcodeImage');
barcodeImage.src = barcode.exportToBase64(width, 75, 0);
// export to base64 encoded byte stream
var base64ImageData = barcode.exportToImageDataBase64(width, 75, 0);
Downloadify.create('downloadify', { // parameter to tell that we should place "Download" button in DIV element with "Downloadify" id
filename: 'barcode.png', // filename to use when user want to save PDF file
data: base64ImageData, // pass data encoded with base64
onComplete: function () { alert('Sample.pdf has been saved!'); }, // message to show once saving local file has been completed
onCancel: function () { alert('You have cancelled saving Sample.pdf'); }, // message to show if user canceled saving file (canceled Save File dialog)
onError: function () { alert('Error occured while generating barcode image file, please contact support@bytescout.com'); }, // message to show on error if something goes wrong
transparent: false, // enable transparency for the button or not
swf: 'downloadify.swf', // filename of SWF button (required for some old browsers)
downloadImage: 'download.png', // image to use as a surface for download button
width: 100, // width of the button
height: 30, // height of the button
append: false, // replace button to the current content of "Downloadify" div element or replace (we replace)
dataType: 'base64' // set that we pass data encoded with base64 method
});
}
</script>
</body>
</html>
<?php
require('fpdf.php');
class PDF extends FPDF{
// Page header
function Header()
{
// Logo
$this->Image('logo.jpg',10,10,30);
// Courier normal 15
$this->SetFont('Courier','',15);
// Move to the right
$this->Cell(70);
// Title
$this->Cell(50,10,'Lista de Testes',1,0,'C');
// Line break
$this->Ln(15);
}
// Page footer
function Footer()
{
// Position at 1.5 cm from bottom
$this->SetY(-15);
// Arial italic 8
$this->SetFont('Arial','I',8);
// Page number
$this->Cell(0,5,'Página '.$this->PageNo().'/{nb}',1,0,'C');
}
function CodeBar(){
echo '<img id="barcodeImage" style="border: solid 1px blue;"/>';
}
}
//variáveis dos campos
$rem = "Açogueiro";
$dest = "Cliente";
$cons = "Rico";
$red = "Palpérrimo";
$valor = 20.54;
$taxa = 50.16;
$imposto = 70.23;
$ICMS = 71.53;
$Ladroagem = 90.45;
// Instanciation of inherited class
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Arial','',8);
$pdf->Cell(30,4,"Remetente",1,0);
$pdf->Cell(50,4,"Destinatário",1,0);
$pdf->Cell(50,4,"Consignatário",1,0);
$pdf->Cell(60,4,"Redespacho",1,0);
$pdf->Ln(4);
$pdf->SetFont('Courier','',10);
$pdf->Cell(30,7,$rem,1,0);
$pdf->Cell(50,7,$dest,1,0);
$pdf->Cell(50,7,$cons,1,0);
$pdf->Cell(60,7,$red,1,0);
$pdf->Ln(7);
$pdf->SetFont('Arial','',8);
$pdf->Cell(25,4,"Valor",1,0);
$pdf->Cell(25,4,"Taxa",1,0);
$pdf->Cell(25,4,"Imposto",1,0);
$pdf->Cell(25,4,"ICMS",1,0);
$pdf->Cell(30,4,"Ladroagem",1,0);
$pdf->Cell(60,4,"Total Cobrado",1,0);
$pdf->Ln(4);
$pdf->SetFont('Arial','',10);
$pdf->Cell(25,5,$valor,1,0);
$pdf->Cell(25,5,$taxa,1,0);
$pdf->Cell(25,5,$imposto,1,0);
$pdf->Cell(25,5,$ICMS,1,0);
$pdf->Cell(30,5,$Ladroagem,1,0);
$pdf->Cell(60,5,$valor,1,0);
$pdf->Ln(10);
$pdf->Cell(0,7,"Lista de Produtos Comercializados",1,1,'C');
//$pdf->Ln(5);
$pdf->SetFont('Courier','',10);
for($i=1;$i<=70;$i++){
$pdf->Cell(50,5,"Produto número: ".$i,1,0,'L');
$pdf->Cell(50,5,"Produto número: ".$i,1,0,'L');
$pdf->Cell(50,5,"Produto número: ".$i,1,0,'L');
$pdf->Cell(40,5,"Produto número: ".$i,1,0,'L');
$pdf->Ln(5);
}
$pdf->CodeBar();
if(isset($_POST['PDF'])){
$pdf->Output();
}
?>
Biblioteca fpdf.php: http://www.fpdf.org/en/download.php
Bibliotecas js para gerar o código de barras: http://bytescout.com/barcodegeneratorsdkjs_code128/index.html
As bibliotecas js me permitem criar uma imagem com o código recebido e a fpdf gera e permite a impressão do arquivo pdf formatado da forma que eu desejar. Contudo, ele apresenta o seguinte erro: FPDF error: Some data has already been output, can't send PDF file. Como se ele não pudesse gerar o PDF e a imagem ao mesmo tempo. Gostaria de saber quais as possibilidades para que eu consiga imprimir o código dentro do pdf sem que o usuário tenha que salvar a imagem do código de barras e em seguida o pdf com o mesmo código. Um jeito de passar a imagem via get pra dentro da função CodeBar (se é que isso é possível), sla qqr coisa, nem q precise de outra página para o usuário, mas os dois tem que sair juntos. Desde já agradeço.
Discussão (0)
Carregando comentários...