JasperReport 6.17.0 编码及Studio使用资料_第1页
JasperReport 6.17.0 编码及Studio使用资料_第2页
JasperReport 6.17.0 编码及Studio使用资料_第3页
JasperReport 6.17.0 编码及Studio使用资料_第4页
JasperReport 6.17.0 编码及Studio使用资料_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JasperReport6.17.0

编码及Studio使用

目录

目录

1.JaspcrRcport编码1

1.1.单体架构(SSH)1

1.1.1.加入Jar包1

M.2.生成报表传给客户端1

1.13.报表另存为多种格式2

1.2.SpringBoot4

1.2.1.修改pom.xml,引入jar包4

1.2.2.编写Service层代码5

1.2.3.编写Ulil代码6

1.2.4.编写Controllci代码8

1.2.5.生成PDF文件,中文字体解决方案9

1.3.特殊情况处理12

13.1.默认页打印空行12

1.3.2.控制指定内容只在末页最后一行打印13

2.JaspcrSoftStudio寸艮表设计器使用15

2.1.简介15

2.1.1.报表生命周期15

2.1.2.界面16

2.2.基本使用17

2.2.1.创建列表式报表17

.绘制报表17

.通过JSON生成报表20

.1,配置数据适配器(JSON)20

.2.读取字段列表23

.3,报表各部分组成24

.4.绘制报表25

.4.1,添加标题25

.4.2.添加字段26

.4.3.设定PDF字体(重要!)27

.4.4,设定表格边框28

.4.5.设定各区域高度29

2.2.L2.4.6.设置字段组件30

,通过查询数据库生成报表31

2.2.13.1.配置数据适配器(DB)31

.2.设置查询语句、读取字段列表34

2.2.1.33.参数的使用35

.1.添加参数35

2.2.1.33.2.程序中传递参数37

2.2.13.3.3.报表模板接收参数37

2.2.1.3.4.自定义变量的使用37

.1,顺序号37

.4.2.小计39

目录

.4.3.合计40

表头合计40

表尾合计41

2.2.2.创建卡片式报表43

2.2.3.编译、发布43

23报表设计器进阶43

2.3.1.加入图片43

2.3.2.页码相关47

2.3.2.1.添力口页码47

23.2.2.根据页码进行打印控制48

2.3.3.参数49

2.33.1.添加参数49

233.2.程序中传递参数50

2.3.33报表模板接收参数51

2.3.4,自定义变量51

.顺序号51

2342小计53

234.3.合计54

2.3A3.1.表头合计54

2表尾合计55

2.3.5.分栏报表(横向循环)56

2.36加入条码/二维码59

2.3.7.分组报表61

238.图形报表64

2.3.9.子报表66

,制作父报表66

239.2.制作子报表67

2.393.于报表自适应行高72

II

JasperReport6.17.0编码及Studio使用

1.JasperReport编码

下面详细说明•下如何利用JasperReport实现自己系统中的报表功能。

1.1,单体架构(SSH)

1.1.1.加入Jar包

首先在工程中加入核心类包C

解压从官网上下载的压缩包,在distFl录中可以找到“jasperreports-5.6.1.jar”和“jasperreports-fonts-

561.jar",复制到项目WEB-INF/lib下,加入到Eclipse的构建配置中。

再加入JasperReport运行所需的支持包。建议将“lib”文件夹下的所有jar文件都复制到项目的lib文

件夹中。如果遇到JasperReport所提供的jar包和系统原有Jar包冲突,建议保留版本较新的jar。

1.1.2.生成报表传给客户端

JasperReport可以将生成的报表以文件流的形式传送给客户端浏览器。

官方提供的生成方法,是先填充报表模板,然后采用各类Export对象输出。但是我没有实验成功

欢迎各路高手指教,我可以修改此部分的说明。

我采用JasperReportsUtils提供的方法生成(spriing包中提供)报表。

建议可以采用html或者pdf格式输出。以下是代码实例:

〃创建报表参数Map对象,需要传入报表的参数,均需要通过这个map对象传递

Map<StringJObject>parameters=newHashMap<StringJObject>();

JasperReport6.17.0编码及Studio使用

//设置报表的默认类型,此处设置为htmL防止传入空值

Stringreport_type="html";

//获取报表输出的类型

if(request.getParameter("type")!=null&&!"".equals(report_type)){

report_type=request.getParameter("type");

)

〃读取当前的查询子句,查询子句已经作为变量,设置在报表模板中了

StringwhereValue=request.getParameter("wherevalue");

parameters.put("whereValue","where"+whereValue);

〃读取报表模板文件

FilereportFile=newFile("d:/test.jasper");

〃创建JDBC连接。木例使用JDBC数据源,DataSource从Hibernate中获取。

DataSourceds=(DataSource)

AppContextHolder.getAppCcntext().getBean("dataSource");

Connectionconn=ds.getConnection();

〃报表文件临时存储设置,切记!!此临时文件夹一定要真实存在!!!

JRFileVirtualizervirtualizer-newJRFileVirtualizer(2,"d:/cacheDir");

parameters.put(3RParameter.REPORT_VIRTUALIZER,virtualizer);

virtualizer.setReadOnly(true);

DasperPrintjasperPrint=

3asperFillManager./itl/?eport(reportFile.getPath(),parameters,conn);

3RAbstractExporter<?,?,?,?>exporter=null;

if("pdf",equals(report_type)){

response.setContentType("application/pdf°);

exporter=newDRPdfExporter();

}elseif("html".equals(report_type)){

response.setContentType("text/html");

exporter=newHtmlExporter();

)

3asperReportsUtils.render(exporterjasperPrint,

response.getOutputStream());

exporter=null;

//manuallycleaningup

virtualizer.cleanup();

〃关闭JDBC连接

conn.close();

1.1.3.报表另存为多种格式

JasperReport支持将报表导出为多种格式保存,可以将报表导出到指定格式,生成指定格式的实体文

2

JasperReport6.17.0编码及Studio使用

件;也可以以文件流的形式传输给客户端浏览微,山用户自行保存。

本例提供以文件流形式返回客户端进行保存的实例代码:

〃创建报表参数Map对象,需要传入报表的参数,均需要通过这个map对象传递

Map<String,Object>parameters=newHashMap<String,0bject>();

Stringtype=request.getParameter("type");

〃读取当前的查询子句,查询子句已经作为变量,设置在报表模板中了

StringwhereValue=request.getParameter("wherevalue");

parameters.put("whereValue","where"+whereValue);

〃读取报表模板文件

FilereportFile=newFile("d:/test.jasper");

〃创建JDBC连接。木例使用1DBC数据源,DataSource从Hibernate中获取。

DataSourceds=(DataSource)

AppContextHolder.getAppCcntext().getBean("dataSource");

Connectionconn=ds.getConnection();

〃报表文件临时存储设置,切记!!此临时文件夹一定要真实存在!!!

JRFileVirtualizervirtualizer-newJRFileVirtualizer(2^"d:/cacheDir");

parameters.put(3RParameter.REPORTVIRTUALIZER}virtualizer);

virtualizer.setReadOnly(true);

DasperPrintjasperPrint=

3asperFillManager./itl/?eport(reportFile.getPath(),parameters,conn);

3RAbstractExporter<?,?,?,?>exporter=null;

if("pdF二equals(type)){〃生成PDF格式的报表。此功能已通过测试。

exporter=newJRPdfExporter();

response.reset();

response.setContentType("application/pdf");

response.setHeader("Content-Disposition","attachment;filename="+new

StringCrl.getRO.getBytesC'gbk"),"iso8859-l”)+”.pdf”);〃打开,保存

}elseif("rtf”.equals(type)){〃生成RTF格式的报表。此功能已通过测试。

exporter=newJRRtfExporter();

response.reset();

response.setContentType("application/msword");

response.setHeader("Content-disposition","attachment;filename="+new

String(r1.getReport_name().getBytes("gbk"),"iso8859-l")+".rtf");

}elseif(”xml”.equals(type)){〃生成XML格式的报表。此功能已通过测试。

exporter=new3RXmlExporter();

response.reset();

response.setHeader("Content-Disposition",

"attachment;filename=\""+newString(rl.getReport_name().getBytes("gbk"),

3

JasperReport6.17.0编码及Studio使用

“iso8859-l”)+”.xml\"");〃打开保存

response.setCharacterEncoding("GBK");

}elseif("xlslequalsltype)){〃生成XLS格式报表。此功能已通过测试。

exporter=newJRXlsExporter();

response.reset();

response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-Disposition"

"attachment;filename=\""+newString(rl.getReport_name().getBytes("gbk"),

"iso8859-l")+".xls\"");〃打开保存

}elseif("csv”.equals(type)){〃生成CSV格式报表。乱码,无法使用

exporter=new3RCsvExporter();

response.reset();

response.setContentType("application/x-msdownload;charset=\"GBK\"");

response.setHeader("Content-Disposition",

"attachment;filename=\""+newString(rl.getReport_name().getBytes("gbk"),

"iso8859-l")+".csv\"");〃打开保存

response.setCharacterEncoding("GBK");

}elseif("odt".equals(type)){〃此段代码未测试

exporter=new3ROdtExporter();

response.reset();

response.setContentType("application/x-msdownload");

response.setHeader("Content-Disposition",

“attachment;filename=\""+newString(rl.getReport_name().getBytes("gbk"),

"iso8859-l")+".odt\"");〃打开保存

}

3asperReportsUtils.render(exporterjasperPrint^

response.getOutputStream());

exporter=null;

//manuallycleaningup

virtualizer.cleanup();

conn.close();

1.2.SpringBoot

1.2.1.修改pom.xmb引入jar包

首先在工程中加入核心类包依赖。在dependencies标签中加入如下内容。

4

JasperReport6.17.0编码及Studio使用

<!■■-JasperReports依赖包一〉

〈dependency)

<groupld>net.sf.jasperreports</groupld>

<artifactTd>jasperreports</artifactld>

<version>6.17.0</version>

“dependency〉

<!一条码依赖包--)

〈dependency〉

<groupld>net.sourceforge.barbecue</groupld>

<artifactId>barbecue</artifac:Id>

<version>l.5-betal</version>

</dependency>

1.2.2.编写Service层代码

为了便于后续生成代码时复用,需要生成报表的核心代码写入到Service层中。

本例中,数据输入采用JSON,报表输出到指定目录中,保存为PDF文件。

先创建Service接口和实现类。

▼Eiservice

▼Bimnl

❻Data2PdfServicelmpl

0RabbitMQServicelmpI

IData2PdfService

❶RabbitMQService

接口类Data2PdfServrice代码如下。

packagecom.thinkdifferenl.data2pdf.service;

importnet.sf.jasperreports,engine.JasperReport;

importjava.util.Map;

publicinterfaceData2PdfService{

/不斗

*将传入的JSON对象,转换为PDF文件,输出到指定的目录中。

*@paramparameters辘入的参数,包括JSON数据对象

*@paramJasperReport报表文件对象

*QparamstrOutputPathFileNasje输出的PDF所在路径(绝对路径)和PDF文件名

7/'

voidCreatePdf(Map<String,Object>parameters,JasperReportJasperReport,

StringstrOutputPathFi1eName):

)

5

JaspcrRcport6.17.0编码及Studio使用

实现类Data2PdfServriceImpl代码如下:

packagecom.thinkdifferent.data2pdf.service,inip1;

importcom.thinkdifferent.data2pd'.service.Data2PdfService:

importnet.sf.jasperreports,engine.JasperExportManager;

importnet.sf.jasperreports,engine.JasperFi1IManager;

importnet.sf.jasperreporls.engine.JasperPrinl;

importnet.sf.jasperreports,engine.JasperReport:

importorg.springframework.stereotype.Service;

importjava.util.Map;

©Service

pub1icclassData2PdfScrviccImplimplementsData2PdfServicc{

/**

*聘传入的JSON对象,转换为PDF文件,输出到指定的目录:中。___________________

*@paramparameters输入的参数,包括JS0X数据对象

*@paramjasperReport报收文件对飘

*©paramsti'OutputPathFileNasie输出的PDF所含路径(绝对路径)和PDF文件名

publicvoidCreatePdf(Map<String,Object>parameters,JasperReportjasperReport,

StringstrOutputPathFileName){

try(

JasperPrinljasperPrint=JasperFilIManager.(jasperReport,parameters);

JasperExportManager.exportKeportiordtbijasperKrint,strUutputEathl,1leAame);

}catch(Exceptione){

c.printStackTracc();

~T

1.2.3.编写Util代码

我们可以看到,在Service的方法中,传入的参数是M叩型,需要提前组装。本例中,单独编写一个

工具类,专门用于组装此参数。代码如下。

packagecom.thinkdifferent.data2pdf.util;

imporlcom.thinkdiI'ferent.(Iat.a2pdservice.I)ata2PdfService;

importnet.sf.jasperreports,engine.JRParameter;

6

JaspcrRcport6.17.0编码及Studio使用

importnet.sf.jasperreports,engine.JasperReport;

importnet.sf.jasperreports,engine,fill.JRFileVirtualizer

importnet.sf.jasperreports,engine,util.JRLoader:

importnet.sf.json.JSONArray;

importnet.sf.json.JSONObject:

importjava.io.ByteArraylnputStream

importjava.io.FilelnputStream;

importjava.io.InputStream;

importjava.util.HashMap:

importjava.util.Map;

publicclassCrealePdfUti1{

publicMap<String,String>daia2PDF(Dala2PdfServicedata2PdfService,JSONObjectjsonlnput){

Map<String,String>mapRe二urn=newHashMapO();

mapReturn.put("flag","success");

mapRcturn.put("message'CreatePdffileSuccess");

try(

〃报表文件路径和文件名(相对路径、文件名、扩展名)__________________________________

StringstrReportPath=jsonlnput.getStringCreportPaihz,);

StringstrReportl'ileName=jsonlnput.getStringCreportl'ileName");

StringstrOutputPath=jsonlnput.getStringCoutputPath");

StringstrFileNameField=jsonlnput.getString("fiIc'amcFicld");

JSONArrayjsonData=jsonlnput.getJSONArray("data");

〃狭取文件流。

StringstrReportPathFi1eName=System,getPropertw&ev.dir")+reportfile/z,+strReportPath

+strReportFilcNamc;

InputStreamjasperStream=newFileInputStream(strReportPathFileName);

JasperReportjasperReporI=(JaspcrRcport)JRLoader.loadObjecI(jasperStream);

for(inti=0;i<jsonData.sizeO:i++)(

StringstrEileName=jsonData.getJSONObject(i).getString(strFileNameEield)+pdfz,:

StringstrOutputPathFileName=strOutputPath+strFileName;

〃创建报表参数Map对象,需要传入报表的参数,均需要通过这个map对象传递

Map<String,Objcct>mapParam=newHashMap<String,ObjcctX);

〃报表文件临时存储设置,切记!!此临时文件夹一定要真实存在!!!

JRFileVirtualizervirtualizer=newJRFileVirtualizer(2,"cacheDir");

mapParam.put(JRParameter.REPORTVIRTUALIZER,virtualizer);

virtualizer.setReadonly(true);

7

JaspcrRcport6.17.0编码及Studio使用

InputStreaminputStream=new

ByteArrayInputStream(jsonData.getJSONObject(i).toStringO.get.Bytes(":TF-8"));

〃填充报表数据源数据流

mapParam.put(Z,JSOXI\PUT_STREAMW,inputStream);

mapParam.putCreportPatI/,System.getPropertyCuser,dir')+"/reportfile/"+

strReportPath);

data2PdfService.CreatePdf(mapParam,jasperReport,strOutputPathFileName):

//manuallycleaningup

virtualizer.cleanupO;

}

}catch(Exceptione){

e.printStackTraceO;

mapRcturn.put(*flag","error");

mapReturn.put("message","CreatePdffileErrorw);

F

returnmapReturn;

)

1.2.4,编写Controller代码

Controller层用于接收REST接口传入的JSON数据,经过处理后传入Util代码。

packagecom.thinkdifferent.data2pdf.controller;

importcom.thinkdifferent.data2pdservice.I)ata2PdfServicc;

importcom.thinkdifferent.data2pdf.service.RabbitMQService:

importcom.thinkdiI'ferent.data2pd'.util.CreatePdfUti1:

importio.swagger,annotations.Api;

importio.swagger,annotations..ApiOperation;

importnet.sf.json.JSONObject;

importorg.springframework.beans,factory,annotation.Autowired:

importorg.springframework.web.bind,annotation.RoquestBody;

importorg.springframework.web.bind,annotation.RequestMapping;

imporlorg.springframework.web.bind.annoLation.RequestMelhod;

importorg.springframework,web.bind,annotation.RestController;

importjava.util.HashMap:

importjava.util.Map;

8

JaspcrRcport6.17.0编码及Studio使用

@Api(tags-根据传入的JSON生成PDF文件")

SRestController

^RequestMapping(value="Japi")

publicclassData2Pdf{

@Autowired

privateData2PdfServicedata2PdfService;

@?\utowired

privateRabbitMQScrvicerabbiMQScrvicc;

@ApiOperation("接收传入的JSON数据,传入对应的报表,在指定目录中生成PDF文件”)

@RequestMapping(value=7data2pdf”,method=RequestMethod.POST)

publicMap<String,String>data2PDF(0RcqucstBodyJSONObjcctjsonlnput){

CreatePdfUli1createPdfUtil=newCrealcPdfUtil0;

Map<String,String>mapReiurn=createPdfUti1.data2PDE(daia2PdfService,jsonlnput);

returnmapReturn;

)

125•生成PDF文件,中文字体解决方案

运行以上程序,当报表采用PDF格式输出,并且其中存在中文时,控制台会报错,内容如下。

Debugg**Output•"2)Tomjtlocjihostlog♦•-5JTomcatJtHirvilog其

net.$f.jasperreports.engine.JRRuntimeException:Couldnotloadthefollowingfont:

pdfFontName:STSong-Light

pdfEncoding:UniGB-UC52-H

IsPdfEmbedded:true

3atnet.sfjasperreports.engine.export.JRPdfExporter.getFoot(・xporterj«iva:-11♦)

后atnet.sfjasperreports,engine,export.3RPdfExporter・getChunk《RPdKxportcr・nova:1317)

二atnet.sfjasperreports・engine・export・JRPdfExporter・jetPhrase(JRPdfExporter.java:1786)

atnet.sfjasperreports.engine.export.SimplePdfTextRenderer.getPhrase(sijplextRenc—,:—)

atnet.sf1asperreports.en&ine.export.SimplePdfTextRenderur.render(SimplePdfTextRenderer.java:99)

atnet.sfjasperreports.engine.export.JRPd<Exporter.exportText(:PdfFxporter.犷丫H:217b)

atnet.sfjasperreports.engine.export.DRPdfExporter.exportElementstJRPdfEx£ortJ?^java:860)

atnet.sfjasperreports,engine.export.JRPdfExporter.exportPage(JRPdfExport”.jdvd:82。)

atnet.sfjasperreports.engine.export.JRPdfExporter.exportReportToStrea«(^RPdfExpo:ter.jiva:697)

atnet.sfjasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.jdva:398)

atcom,svkd.bos.action.workbill.WorkBillAction.exportWorkBill(HorkBillAction63)<4internalca

atognl・OgnlRunt・invokeMethod《OalRuntime.Java:87。)

atoenl.OenlRuntine.callADDroDriateMethodfnlRuntire.:ava:1293)

这是因为导入的相关依赖包中没有对应的中文字体(显示字体)。

网上提供了多种解决方案,最终试脸成功的只有如下一种:

9

JasperReport6.17.0编码及Studio使用

首先,在JaspcrRcportStudi。中加入新的字体设置,可以命名为“华文宋体2021”(避免跟系统中现有

的“华文宋体”重名)。

JJaspersoftStudioProfessional

FileEditViewNavigateProjectWindowHelp

jF3▼JBuildAllqNewWindow

NewEditor

QReposiloProject於

--一HideToolbar

>曰MyReportsOpenPerspective

>必国美档案ShowView

CustomizePerspective...

SavePerspectiveAs...

ResetPerspective...

ClosePerspective

CloseAllPerspectives

Navigation

L如Q网U

Preferences

10

JasperReport6.17.0编码及Studio使用

J?FontFamily□X

FontFamily

Configurefontfamily

注意,此处选择的PDFEncoding一定是你在报表的组件中已经设置的值。

然后将报表中的静态文本、文本框等需要文字输出的内容,分别选中,设置字体为新增加的“华文宋

体2021”。

ional

ProjectWindowHelp

;141Z

3□金jzpz.jrxml'DejavuSans

DejaVuSansl\|ono

多MainReport

DejaVuSerif

0,1,।'Monospaced

SansSerif

2文末体2021

1211cher_company_nam,AdobeArabic

髀3码,l;^>ucher_numhcr|AdobeCaslonPro

AdobeCaslonProBold

摘要AdobeDevanagari

AdobeFanHeitiStdB

AdobeGaramondPro

保存报表,重新编译为jasper文件。

接下来,需要修改SpringBoot工程中的内容。

在src/main/rcsourccs目录中,加入fonts文件夹,从系统中将字体文件STSONG.TTF拷贝到此处。

II

JasperReport6.17.0编码及Studio使用

▼■src

▼■main

►1java

▼resources

▼Bifonts

患fonts.xml

TSTSONG.TTF

f|||jasperreports_perties

在src/main/resources目录中加入jasperreporis_nenies配置文件,内容如下。

net.sf.jasperreports,extension,registry,factory,simple,font,families=net.sf.jasperreports,engine.fonts.Simp

1eFontExtensionsRcgistryFactory

net.sf.jasperreports,extension,simple,font,families.lobstertwo=fonts/fonts.xml

根据此处的设置,需要在src/main/resources/fonts目录下加入fonts.xml配置文件,内容如下。

version="1.0"cncoding-^l'TF-B?>

<fontFamilies>

<fontFamilyname=”华文宋体2021”X!字体名称》

<normal>fonts/STSONG.TTF</normal><!字体文件的路径>

<bold>fonts/STSONG.TTF</bold>

<italic>fonts/STSONG.TTF</italic>

<boldItalic>fonts/STSONG.TTF</boldItalic>

<pdfEncoding>UniGB-UCS2TK/pdfEncodingX!-这里的定义就与报表设置相匹配了一〉

〈pdfEmbedded〉true</pd「Embedded)

<exportFonts>

<exportkey="net.$f.jasperreporls.himl">'华文宋体2021',Arial,Helvetica,sans-serif</export>

<exportkey"net.st.jasperreports,xhtml华文乐体Z02I',Arial,Helvetica,sans-ser11</exports

</exportFonts>

</fontFamily>

</fontFamilies>

重新执行服务,即可正常生成PDF文件了。

13特殊情况处理

13.1.默认页打印空行

首先声明:JasperReport无法自动在末页补齐空行!!

在中式报表设计中,如果最后一页打印数据的行数不足时,一般会打印足够的空行,充满此页。而西

式报表在此种情况时,一般是留白。

经过研究,可以采用在传入报表的数据集加入足够数量的空数据,使报表可以生成空行工

12

JasperReport6.17.0编码及Studio使用

如果数据源为JSON,则传入足够数量的空对象即可。如下图。

"abstract":"XXXXX报销手机费”,

"subject_name":"2241030000其他应付款■员工”,

"debit_amount_lc":"",

"credit_amount_lc":"100.00"

{

"abstract":"",

"subject_name":"",

"debit_amount_lc":"'\

"credit_amount_lc":""

{

"abstract":"",

“subject_name”:”“,

"debi^amountjc":"",,

"credit_amount_lc":""

},

例如,每页打印6记录,而当前记录有8条,则补全4个空对象,使其形成6的倍数即可。

此种方案,案适合设置了“吁高自适应”的表格,否则容易导致空行条数计算错误!

如果采用直接传入数据库连接的方式,暂时没有合适的解决方案。

13.2.控制指定内容只在末页最后一行打印

首先说明,在报表模板中,无法通过预置的“变量”直接获取当前报表的“总页数”!

目前可实现的方案,是服务端调用代码中按照每页显示条数,预先计算总页数,并将总页数作为“字

段”或“参数”传入报表,再进行判断。

本例中,加入一个自定义字段"pages",接收服务端传入的“总页数”。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论