westdc-zf1/application/models/MetadataPDF.php

205 lines
6.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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 ($this->metadata['filetype'] && $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']));
if ($this->metadata['filetype']) $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');
}
}
?>