Inizializzazione
This commit is contained in:
281
jpgraph-3.5.0b1/src/barcode/mkbarcode.php
Normal file
281
jpgraph-3.5.0b1/src/barcode/mkbarcode.php
Normal file
@@ -0,0 +1,281 @@
|
||||
<?php
|
||||
require_once('jpgraph/jpgraph_barcode.php');
|
||||
|
||||
/*=======================================================================
|
||||
// File: MKBARCODE.PHP
|
||||
// Description: Comman line tool to generate linear barcodes
|
||||
// Created: 2009-06-20
|
||||
// Ver: $Id: mkbarcode.php 1455 2009-07-03 18:52:25Z ljp $
|
||||
//
|
||||
// Copyright (c) Asial Corporation. All rights reserved.
|
||||
//=======================================================================
|
||||
*/
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// CLASS ParseArgs
|
||||
// Parse command line arguments and make sanity checks
|
||||
//----------------------------------------------------------------------
|
||||
class ParseArgs {
|
||||
var $argc,$argv;
|
||||
|
||||
function ParseArgs() {
|
||||
// Get command line argument
|
||||
$this->argv = ($_SERVER['argv']);
|
||||
$this->argc = ($_SERVER['argc']);
|
||||
}
|
||||
|
||||
function PrintUsage() {
|
||||
$n = $this->argv[0];
|
||||
echo "$n -b <symbology> [-r -h -c -o <output format> -m <width> -s <scale> -y <height> -f <filename> ] datastring \n".
|
||||
"Create the specified barcode\n".
|
||||
"-b What symbology to use, one of the following strings (case insensitive)\n".
|
||||
" UPCA \n".
|
||||
" UPCE \n".
|
||||
" EAN128 \n".
|
||||
" EAN13 \n".
|
||||
" EAN8 \n".
|
||||
" CODE11 \n".
|
||||
" CODE39 \n".
|
||||
" CODE128 \n".
|
||||
" CODE25 \n".
|
||||
" CODEI25 \n".
|
||||
" CODABAR \n".
|
||||
" BOOKLAND \n".
|
||||
"-c Add checkdigit for symbologies where this is optional\n".
|
||||
"-o Output format. 0=Image, 1=PS, 2=EPS\n".
|
||||
"-m Module width\n".
|
||||
"-s Scale factor\n".
|
||||
"-h Show this help\n".
|
||||
"-f Filename to write to\n".
|
||||
"-r Rotate barcode 90 degrees\n".
|
||||
"-y height Set height in pixels\n".
|
||||
"-x Hide the human readable text\n".
|
||||
"--silent Silent. Don't give any error mesages\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
function Get() {
|
||||
$barcode='code39';
|
||||
$hide=false;
|
||||
$checkdigit=false;
|
||||
$modulewidth=2;
|
||||
$scale=1;
|
||||
$output=0;
|
||||
$filename='';
|
||||
$data = '';
|
||||
$rotate = false;
|
||||
$silent=false;
|
||||
$height = 70;
|
||||
if( ($n=$this->GetNum()) > 0 ) {
|
||||
$i=1;
|
||||
while( $i <= $n ) {
|
||||
switch( $this->argv[$i] ) {
|
||||
case '-h':
|
||||
$this->PrintUsage();
|
||||
exit(0);
|
||||
break;
|
||||
case '-b':
|
||||
$barcode = $this->argv[++$i];
|
||||
break;
|
||||
case '-o':
|
||||
$output = (int)$this->argv[++$i];
|
||||
break;
|
||||
case '-y':
|
||||
$height = (int)$this->argv[++$i];
|
||||
break;
|
||||
case '-x':
|
||||
$hide=true;
|
||||
break;
|
||||
case '-r':
|
||||
$rotate=true;
|
||||
break;
|
||||
case '-c':
|
||||
$checkdigit=true;
|
||||
break;
|
||||
case '--silent':
|
||||
$silent=true;
|
||||
break;
|
||||
case '-s':
|
||||
$scale = (float)$this->argv[++$i];
|
||||
break;
|
||||
case '-m':
|
||||
$modulewidth = (float)$this->argv[++$i];
|
||||
break;
|
||||
case '-f':
|
||||
$filename = $this->argv[++$i];
|
||||
break;
|
||||
default:
|
||||
if( $data == '' ) {
|
||||
$data = $this->argv[$i];
|
||||
}
|
||||
else {
|
||||
$this->PrintUsage();
|
||||
die("Illegal specified parameters");
|
||||
}
|
||||
break;
|
||||
}
|
||||
++$i;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if( $output < 0 || $output > 2 ) {
|
||||
fwrite(STDERR,"Unkown output format ($output)\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if( $output === 0 ) {
|
||||
$modulewidth = floor($modulewidth);
|
||||
}
|
||||
|
||||
// Sanity check
|
||||
if( $modulewidth > 15 ) {
|
||||
fwrite(STDERR,"Too large modulewidth\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Sanity check
|
||||
if( $height > 1000 ) {
|
||||
fwrite(STDERR,"Too large height\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Sanity check
|
||||
if( $scale > 15 ) {
|
||||
fwrite(STDERR,"Too large scale factor\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if( strlen($filename) > 256 ) {
|
||||
fwrite(STDERR,"Too long filename\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if( trim($data) == '' ) {
|
||||
fwrite(STDERR,"No input data specified\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$barcodes = array(
|
||||
'UPCA' => ENCODING_UPCA,
|
||||
'UPCE' => ENCODING_UPCE,
|
||||
'EAN128' => ENCODING_EAN128,
|
||||
'EAN13' => ENCODING_EAN13,
|
||||
'EAN8' => ENCODING_EAN8,
|
||||
'CODE11' => ENCODING_CODE11,
|
||||
'CODE39' => ENCODING_CODE39,
|
||||
'CODE128' => ENCODING_CODE128,
|
||||
'CODE25' => ENCODING_CODE25,
|
||||
'CODEI25' => ENCODING_CODEI25,
|
||||
'CODABAR' => ENCODING_CODABAR,
|
||||
'BOOKLAND' => ENCODING_BOOKLAND,
|
||||
);
|
||||
$barcode = strtoupper($barcode);
|
||||
if( key_exists($barcode,$barcodes) ) {
|
||||
$barcode = $barcodes[$barcode];
|
||||
}
|
||||
else {
|
||||
fwrite(STDERR,'Specified barcode symbology ('.$barcode.") is not supported\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$ret = array(
|
||||
'barcode' => $barcode,
|
||||
'hide' => $hide,
|
||||
'modulewidth' => $modulewidth,
|
||||
'scale' => $scale,
|
||||
'output' => $output,
|
||||
'data' => $data,
|
||||
'silent' => $silent,
|
||||
'rotate' => $rotate,
|
||||
'height' => $height,
|
||||
'checkdigit' => $checkdigit,
|
||||
'filename' => $filename
|
||||
);
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function _Dump() {
|
||||
var_dump($this->argv);
|
||||
}
|
||||
|
||||
function GetNum() {
|
||||
return $this->argc-1;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// CLASS Driver
|
||||
// Main driver class to create barcodes with the parmeters specified on
|
||||
// the command line.
|
||||
//----------------------------------------------------------------------
|
||||
class Driver {
|
||||
|
||||
private $iParams;
|
||||
static public $silent=false;
|
||||
|
||||
static public function ErrHandlerPS(Exception $e) {
|
||||
if( !Driver::$silent )
|
||||
fwrite(STDERR,$e->getMessage()."\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
static public function ErrHandlerImg(Exception $e) {
|
||||
if( !Driver::$silent )
|
||||
fwrite(STDERR,$e->getMessage()."\n");
|
||||
$errobj = new JpGraphErrObjectImg();
|
||||
$errobj->Raise($e->getMessage());
|
||||
exit(1);
|
||||
}
|
||||
|
||||
function Run($aParams) {
|
||||
|
||||
$this->iParams = $aParams;
|
||||
|
||||
Driver::$silent = $aParams['silent'];
|
||||
|
||||
$encoder = BarcodeFactory::Create($aParams['barcode']);
|
||||
$encoder->AddChecksum($aParams['checkdigit']);
|
||||
switch( $aParams['output'] ) {
|
||||
case 0:
|
||||
$e = BackendFactory::Create(BACKEND_IMAGE,$encoder);
|
||||
set_exception_handler(array('Driver','ErrHandlerImg'));
|
||||
break;
|
||||
case 1:
|
||||
$e = BackendFactory::Create(BACKEND_PS,$encoder);
|
||||
set_exception_handler(array('Driver','ErrHandlerPS'));
|
||||
break;
|
||||
case 2:
|
||||
$e = BackendFactory::Create(BACKEND_PS,$encoder);
|
||||
$e->SetEPS();
|
||||
set_exception_handler(array('Driver','ErrHandlerPS'));
|
||||
break;
|
||||
}
|
||||
$e->SetHeight($aParams['height']);
|
||||
$e->SetVertical($aParams['rotate']);
|
||||
$e->SetModuleWidth($aParams['modulewidth']);
|
||||
$e->SetScale($aParams['scale']);
|
||||
$e->HideText($aParams['hide']);
|
||||
if( $aParams['output'] === 0 ) {
|
||||
$err = $e->Stroke($aParams['data'], $aParams['filename']);
|
||||
}
|
||||
else {
|
||||
$s = $e->Stroke($aParams['data'], $aParams['filename']);
|
||||
if( $aParams['filename'] == '' ) {
|
||||
// If no filename specified then return the generated postscript
|
||||
echo $s;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$pa = new ParseArgs();
|
||||
$params = $pa->Get();
|
||||
$driver = new Driver();
|
||||
$driver->Run($params);
|
||||
|
||||
// Successfull termination
|
||||
exit(0);
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user