205 lines
6.7 KiB
PHP
205 lines
6.7 KiB
PHP
<?php
|
||
//生成西部数据中心离线申请表
|
||
require_once('fpdf/chinese-unicode.php');
|
||
require_once('fpdi/fpdi.php');
|
||
class MetadataPDF extends PDF_Unicode
|
||
{
|
||
public $metadata;
|
||
public $fontsize=10;
|
||
|
||
function draw()
|
||
{
|
||
$this->init();
|
||
$this->drawTitlePage();
|
||
$this->drawContent();
|
||
}
|
||
|
||
function init()
|
||
{
|
||
//$this->AddUniGBhwFont('ugb','AdobeSongStd-Light-Acro');
|
||
//$this->AddUniGBhwFont('ugh','AdobeHeitiStd-Light');
|
||
$this->AddUniGBhwFont('uGB');
|
||
$this->AddFont('uGB');
|
||
}
|
||
|
||
function DrawTitlePage()
|
||
{
|
||
$this->AddPage();
|
||
$this->Image('http://westdc.westgis.ac.cn/images/westdc_logo_white.gif',80,30,0,0,'','http://westdc.westgis.ac.cn/');
|
||
$this->SetFont('uGB','B',20);
|
||
$this->setXY(0,70);
|
||
$this->Cell(0,0,'中国西部环境与生态科学数据中心',0,2,'C',false,'http://westdc.westgis.ac.cn/');
|
||
$imgurl='http://'.$_SERVER['SERVER_NAME'].'/service/bigthumb/uuid/'.$this->metadata['uuid'];
|
||
$imgsize=getimagesize($imgurl);
|
||
if ($imgsize)
|
||
{
|
||
if ($imgsize[0]/$imgsize[1]>200/180)
|
||
$this->Image($imgurl,5,110,200,0,$this->metadata['filetype']);
|
||
else
|
||
$this->Image($imgurl,100-round(90.0*$imgsize[0]/$imgsize[1]),110,0,180,$this->metadata['filetype']);
|
||
}
|
||
$this->SetFont('uGB','B',20);
|
||
$this->setXY(0,80);
|
||
$this->multicell(0,10,$this->metadata['title'],0,'C');
|
||
//$this->setFont('Arial','',12);
|
||
$this->ln(10);
|
||
$this->SetFont('uGB','B',12);
|
||
$this->Cell(0,0,'UUID: '.$this->metadata['uuid'],0,2,'C',false,'http://westdc.westgis.ac.cn/data/'.$this->metadata['uuid']);
|
||
}
|
||
|
||
function DrawContent()
|
||
{
|
||
$this->addPage();
|
||
$this->setfont('uGB','',12);
|
||
//$this->setXY(15,80);
|
||
$this->multicell(0,10,$this->metadata['title'],0,'C','http://'.$_SERVER['SERVER_NAME'].'/data/'.$this->metadata['uuid']);
|
||
if ($this->metadata['title_en'])
|
||
{
|
||
//$this->setFont('times','',12);
|
||
$this->multicell(0,5,$this->metadata['title_en'],0,'C','http://'.$_SERVER['SERVER_NAME'].'/data/'.$this->metadata['uuid']);
|
||
}
|
||
$this->ln(10);
|
||
$this->setfont('uGB','',10);
|
||
$this->setFillColor(200,200,200);
|
||
$this->Cell(0,8,' 摘要',0,1,'L',true);
|
||
//$this->write(5,$this->metadata['description']);
|
||
$this->DrawTable($this->metadata['description']);
|
||
//todo: table in abstract
|
||
$this->ln(5);
|
||
$this->Cell(0,8,' 关键词',0,1,'L',true);
|
||
$this->write(5,'主题:'.$this->metadata['keyword']['theme']);
|
||
$this->ln(5);
|
||
$this->write(5,'位置:'.$this->metadata['keyword']['place']);
|
||
$this->ln(5);
|
||
$this->write(5,'时间:'.$this->metadata['keyword']['temporal']);
|
||
$this->ln(5);
|
||
$this->write(5,'学科:'.$this->metadata['keyword']['discipline']);
|
||
$this->ln(5);
|
||
$this->write(5,'地层:'.$this->metadata['keyword']['stratum']);
|
||
|
||
$this->ln(5);
|
||
$this->Cell(0,8,' 数据分类',0,1,'L',true);
|
||
$this->write(5,'分类:'.$this->metadata['category'].' '.$this->metadata['category_zh']);
|
||
|
||
$this->ln(5);
|
||
$this->Cell(0,8,' 数据细节',0,1,'L',true);
|
||
if ($this->metadata['rfdenom'])
|
||
{
|
||
$this->write(5,'比例尺:'.$this->metadata['rfdenom']);
|
||
$this->ln(5);
|
||
}
|
||
if ($this->metadata['resolution'])
|
||
{
|
||
$this->write(5,'分辨率:'.$this->metadata['resolution']);
|
||
$this->ln(5);
|
||
}
|
||
$this->write(5,'投影:'.$this->metadata['projection']);
|
||
$this->ln(5);
|
||
$this->write(5,'数据大小(MB):'.$this->metadata['filesize']);
|
||
$this->ln(5);
|
||
$this->write(5,'数据格式:'.$this->metadata['fileformat']);
|
||
|
||
$this->ln(5);
|
||
$this->Cell(0,8,' 缩略图和空间范围',0,1,'L',true);
|
||
$this->ln(5);
|
||
$x=$this->getX();$y=$this->getY();
|
||
$w=50*abs(($this->metadata['north']-$this->metadata['south'])/($this->metadata['west']-$this->metadata['east']));
|
||
$this->Image('http://'.$_SERVER['SERVER_NAME'].'/service/thumb/uuid/'.$this->metadata['uuid'],$x+80+$w,$y,0,50,$this->metadata['filetype']);
|
||
$this->rect($x+50,$y,$w,50);
|
||
$this->setXY($x+55,$y-4);
|
||
$this->write(5,'N:'.$this->metadata['north']);
|
||
$this->setXY($x+40,$y+20);
|
||
$this->write(5,'W:'.$this->metadata['west']);
|
||
$this->setXY($x+50+$w,$y+20);
|
||
$this->write(5,'E:'.$this->metadata['east']);
|
||
$this->setXY($x+55,$y+50);
|
||
$this->write(5,'S:'.$this->metadata['south']);
|
||
|
||
$this->ln(5);
|
||
$this->Cell(0,8,' 时间范围',0,1,'L',true);
|
||
$this->write(5,'开始时间:'.$this->metadata['timebegin']);
|
||
$this->ln(5);
|
||
$this->write(5,'结束时间:'.$this->metadata['timeend']);
|
||
|
||
$this->ln(5);
|
||
$this->Cell(0,8,' 本数据引用方式',0,1,'L',true);
|
||
$this->write(5,$this->metadata['citation']);
|
||
|
||
$this->ln(5);
|
||
$this->Cell(0,8,' 建议参考文献',0,1,'L',true);
|
||
$this->write(5,$this->metadata['reference']);
|
||
|
||
//$this->ln(5);
|
||
$this->Cell(0,8,' 数据DOI',0,1,'L',true);
|
||
$this->write(5,$this->metadata['doi']);
|
||
|
||
$this->ln(5);
|
||
$this->Cell(0,8,' 项目支持信息',0,1,'L',true);
|
||
$this->write(5,$this->metadata['suppinfo']);
|
||
|
||
$this->ln(5);
|
||
$this->Cell(0,8,' 使用限制',0,1,'L',true);
|
||
$this->write(5,$this->metadata['uselimits']);
|
||
|
||
$this->Cell(0,8,' 相关链接',0,1,'L',true);
|
||
foreach($this->metadata['resources'] as $k=>$r)
|
||
{
|
||
$this->write(5,($k+1).'. '.$r['name'].' '.$r['linkage'],$r['linkage']);
|
||
$this->ln(5);
|
||
}
|
||
|
||
$this->Cell(0,8,' 相关联系人',0,1,'L',true);
|
||
$party_zh=array('resourceProvider'=>'资源提供者','custodian'=>'维护者','owner'=>'拥有者','user'=>'用户','distributor'=>'数据服务联系人','originator'=>'创建者','pointOfContact'=>'联系人','principalInvestigator'=>'数据调查与处理者','processor'=>'处理者','publisher'=>'元数据发布者','author'=>'元数据作者');
|
||
foreach($this->metadata['contacts'] as $k=>$c)
|
||
{
|
||
$this->write(5,($k+1).'. '.$party_zh[$c['role']]);$this->ln(5);
|
||
$this->write(5,$c['individual'].' 单位:'.$c['organisation']);$this->ln(5);
|
||
$this->write(5,'地址:'.$c['country'].' '.$c['administractive'].' '.$c['city'].' '.$c['delivery']);$this->ln(5);
|
||
$this->write(5,'邮编:'.$c['postal'].' 电话:'.$c['phone'].' 邮件:'.$c['email']);
|
||
$this->ln(5);
|
||
$this->ln(5);
|
||
}
|
||
}
|
||
|
||
function DrawTable($text)
|
||
{
|
||
$table=explode("{|",$text);
|
||
$this->write(5,$table[0]);
|
||
$table1=explode("|}",$table[1]);
|
||
$table=explode("|-",$table1[0]);
|
||
$header=explode("!",str_replace(array("\r\n", "\n", "\r"),'',$table[0]));
|
||
$data=array();
|
||
foreach($table as $line=>$tr)
|
||
{
|
||
if ($line>0 && !empty($tr))
|
||
{
|
||
$tr=substr(trim($tr),1);
|
||
$data[]=explode("||",$tr);
|
||
}
|
||
}
|
||
//Header
|
||
foreach($header as $k=>$col)
|
||
if ($k>0) $this->Cell(40,7,$col,1);
|
||
$this->Ln();
|
||
//Data
|
||
foreach($data as $row)
|
||
{
|
||
foreach($row as $col)
|
||
$this->Cell(40,6,$col,1);
|
||
$this->Ln();
|
||
}
|
||
$this->write(5,$table1[1]);
|
||
}
|
||
|
||
function Footer()
|
||
{
|
||
//Page footer
|
||
$this->SetY(-15);
|
||
$this->SetFont('Arial','I',8);
|
||
$this->SetTextColor(128);
|
||
if ($this->PageNo()>1) $this->Cell(0,10,' - '.($this->PageNo()-1).' - ',0,0,'C');
|
||
}
|
||
|
||
}
|
||
?>
|