导航:首页 > 文档加密 > mvc40pdf

mvc40pdf

发布时间:2023-05-17 05:05:21

1. MVC中网页导出为pdf怎么实现

最近做过一个将页面表格导出至PDF的功能,现在将它整理出来,以备不时之需。
PDF模板是用的是.net报表文件(.rdlc),原理就是将数据填充到报表文件中,利用Microsoft.Reporting.WebForms.LocalReport类的方法,输出PDF字节流,然后,通过定义Response的HTTP标头定义,在浏览器输出PDF文件。
以下是关键部分的代码:
1. 首先,准备一个输出PDF字节流的方法:

usingSystem;
usingSystem.Collections.Generic;
usingATA.Toeic.Models;
usingATA.Toeic.DAL;
usingSystem.IO;
usingMicrosoft.Reporting.WebForms;
namespaceATA.Toeic.BLL
{
publicclassAdmissionTicketBLL
{
privateRegistrationDALdal=newRegistrationDAL();

///<summary>
///‘单个导出’
///导出包含一张准考证的pdf文件
///</summary>
///<paramname="addmissionFormId">准考证号</param>
///<paramname="reportPath">报表模板路径</param>
///<returns>pdf文件字节流</returns>
publicbyte[]ExportTicket(stringaddmissionFormId,stringreportPath,outstringmimeType)
{
List<string>arrId=newList<string>();
arrId.Add(addmissionFormId);
returnExportTicket(arrId,reportPath,outmimeType);
}

///<summary>
///‘批量导出’
///导出多张准考证的pdf文件
///</summary>
///<paramname="arrAddmissionFormId">需要导出的准考证号</param>
///<returns>pdf文件字节流</returns>
publicbyte[]ExportTicket(List<string>arrAddmissionFormId,stringreportPath,outstringmimeType)
{
LocalReportlocalReport=newLocalReport();
localReport.ReportPath=reportPath;
//报表对象的模板文件的路径
//报表对象的数据源
=newReportDataSource("dsList",GetAdmissionTicketList(arrAddmissionFormId.ToArray())
//这个方法返回一个IList<Model>对象);
localReport.DataSources.Add(reportDataSource);
stringreportType="PDF";
stringencoding;
stringfileNameExtension;
//
//http://msdn2.microsoft.com/en-us/library/ms155397.aspx
stringdeviceInfo="<DeviceInfo><OutputFormat>PDF</OutputFormat></DeviceInfo>";Warning[]warnings;string[]streams;byte[]renderedBytes;//Renderthereport
renderedBytes=localReport.Render(reportType,deviceInfo,outmimeType,outencoding,outfileNameExtension,outstreams,outwarnings);
returnrenderedBytes;
}
}
}
2.在action中定义HTTP标头,输出PDF文件,在这里批量和单个已经没有区别了,区别包含在byte[]的字节流中。

[CheckServiceExpire]
(intserviceid,stringCondition)
{
List<RegistrationEn>list=newRegistrationBLL().GetExamineeByCondi(serviceid,Condition);
if(list==null||list.Count==0)
returnAlert("目前没有准考证信息!","~/Views/ExamService/SaveSuccess.aspx",new{action="GetExamineeByPage",controller="Registration",serviceid=serviceid});
List<string>sl=newList<string>();
foreach(RegistrationEnreninlist)
sl.Add(ren.fAdmissionFormId);
try
{
AdmissionTicketBLLbll=newAdmissionTicketBLL();
stringrdlcPath=Server.MapPath("~/Resources/AdmissionTicket.rdlc");
stringmimeType;
byte[]renderedBytes=bll.ExportTicket(sl,rdlcPath,outmimeType);
Response.AddHeader("content-disposition","attachment;filename=AdmissionTicket.pdf");
returnFile(renderedBytes,mimeType);
}catch{
returnAlert("获取准考证信息出错!","~/Views/ExamService/SaveSuccess.aspx",new{action="GetExamineeByPage",controller="Registration",serviceid=serviceid});
}
}

这样就可以正常导出PDF文件了。

补充:

如果想在页面中直接打开PDF(要求机器已安装adobe reader),则只需要修改HTTP标头的参数:

将“Response.AddHeader("content-disposition", "attachment; filename=AdmissionTicket.pdf");”替换成“Response.AddHeader("content-disposition", string.Format("inline;filename={0}.pdf", admissionFormId));”

2. spring mvc框架 加ireport模板打印pdf文件异常 高手指点

为什么不直接用servlet?
if ("pdf".equals(strfiletype.trim())) {//导出pdf
System.out.println("导出pdf.........");
byte[] bytes = JasperRunManager.runReportToPdf(reportFile
.getPath(), parameters, conn);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
String filename = null;
if(exportFileName != null && !exportFileName.equals("")){
filename = exportFileName + ".pdf";
}else{
filename = DateTime.getSystemDateTimeString() + ".pdf";
}
String fileName = new String(filename.getBytes("GBK"),
"ISO8859_1");
response.setHeader("Content-disposition",
"attachment; filename=" + fileName);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
response.setStatus(response.SC_OK);
response.flushBuffer();
System.out.println("导出pdf....end.....");
}

3. 《看透SpringMVC源代码分析与实践》pdf下载在线阅读,求百度网盘云资源

《看透Spring MVC》(韩路彪)电子书网盘下载免费在线阅读

资源链接:

链接:

提取码:e5xd

书名:看透Spring MVC

作者:韩路彪

豆瓣评分:6.8

出版社:机械工业出版社

出版年份:2016-1-1

页数:309

内容简介:

国内资深Web开发专家根据Spring MVC全新技术撰写,基于实际生产环境,从基础知识、源代码和实战3个维度对Spring MVC的结构和实现进行详细讲解

全面介绍Spring MVC的架构、原理、核心概念和操作,通过案例完整呈现Tomcat的实现,系统总结Spring MVC九大组件的处理以及常用的技巧和实践

在大型网站和复杂系统的开发中,Java具有天然的优势,而在Java的Web框架中Spring MVC以其强大的功能以及简单且灵活的用法受到越来越多开发者的青睐。本书不仅详细地分析Spring MVC的结构及其实现细节,而且讲解网站的不同架构及其演变的过程,以及网络底层协议的概念及其实现方法,帮助读者开发更高效的网站。

通过本书,你将:

系统学习网站的各种架构以及每种架构所针对的问题。

深入分析Web底层协议及其实现方法。

系统理解Spring MVC框架,为灵活开发高质量产品打下坚实基础。

深入理解Spring MVC的编程技巧和设计理念,提高综合思考、整体架构的能力。

学习作者自研的源代码分析方法——器用分析法,高效学习程序源代码。

4. MVC4中怎么将视图打开为新窗口,调用window.open不好用!

在tab页里面打开其实就是新窗口,如果想要你所谓的那伏租种新窗口 ,在ie下面凯雹设置即可:工具-internet选项-选项盯厅帆卡

5. 如何实现springmvc将返回的给前端的pdf文件放在浏览器里预览

1,在web路径下建立一个uploadFiles文件夹

2,在springMVC里映射PDF文件就像映射静态文件那样。
<mvc:resources mapping="/pdf/**" location="/uploadFiles/"/>

3,写个controller返回PDF的URL路径。
@Controller
@CrossOrigin(origins = "*")
public class PDFController {

@ResponseBody
@RequestMapping(value = "/pdf", method = RequestMethod.GET)
public String pdfDownload() throws IOException
{
String retString = null;
String dir = XXXX文件在服务器中路径。
String path = httpServletRequest.getRequestURL() + dir.substring(dir.lastIndexOf('\\'));
retString = path.replaceAll("\\\\","/");
Map<String,Object >map = new HashMap<>();
map.put("code",0);
map.put("pdf",retString);
return JSON.toJSONString(map);
}
}

4,返回的JSON数据。
{"code":0,"pdf":"8080/pdf/1472128890165sample.pdf"},前面加上http://127.0.0.1:。
5,浏览器中直接打开pdf这个url就可以预览PDF啦。

6. 《PHP高级程序设计模式框架与测试》pdf下载在线阅读全文,求百度网盘云资源

《PHP高级程序设计模式框架与测试》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1-71lP8UukjGVFygLldsTYw

?pwd=uthw 提取码:uthw
简介:PHP高级程序设计:模式、框架与测试详细讲解了对他们为重要的主题:高级面向对象、设计模式、文档、测试和标准PHP库等内容。同时,为适应目前Web开发的新趋势,作者还全面探讨了MVC架构和Zend Framework,以及Ajax、JSON、SOAP等Web 2.0技术。

7. 写出MVC的工作原理

1.当用户在浏览器中点击一个链接或者提交一个表单时,那么就会产生一个请求(request)。当请求离开浏览器时,它会携带用户请求的信息。


2.请求的第一站到达的是Spring的DispatcherServlet,它是一个前端控制器,工作是将用户的请求委托给其他的组件(这里是交给Spring MVC的控制器)去处理。

这里DispatcherServlet要决定将请求传给哪一个控制器(Controller)去处理,那么这时就需要处理器映射(Handler Mapping)了。

处理器映射会看请求的URL信息,然后决定将请求交给哪一迟核迹个控制器去处理。比如说有两个控制器ControllerA和ControllerB,分别处理后缀名为.html和.jsp送来的请求,那么当请求者的后缀名为.html时,那么DispatcherServlet就将请求交给ControllerA进行处理。

C代表Controller,负责用户界面和业务逻辑层的通信控制,一方面解释来自用户界面的输入,识别用户动作(如点击按钮等),调用相应Model中的方法,另一方面处理来自Model的事件和返回的执行结果,调用适当的View显示给用户,Controller主要由Servlet完成。

M代表Model,负责整个解决方案的业务逻辑实现,底层的数据库也由Model访问和操作;

V代表View,负责系统向用户的展示,主要由HTML及JSP等完成;

拓展资料:

MVC组件说明:

以下组件通常使用框架提供实现:

DispatcherServlet:作为前端控制器,整个流程控制的中心,控制其它组件执行,统一调度,降低组件之间的耦合性,提高每个组件的扩展性。

HandlerMapping:通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

HandlAdapter:通过扩展处理器适配器,支持更多类型的处理器。

ViewResolver:通过扩展视图解析器,支持更多类型的视图解析,例如:jsp、freemarker、pdf、excel等。

组件:
1、前端控制器DispatcherServlet(不需要工程师开发),由框架提供
作用:接收请求,响应结果,相当于转发器,中央处理器。有了dispatcherServlet减少了其它组件之间的耦合度。


用户请求到达前端控制器,氏腔它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

2、处理器映射器HandlerMapping(不需要工程师开发),由框架提供
作用:根据请求的url查找Handler


HandlerMapping负责根据用户请求找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式码并等。

3、处理器适配器HandlerAdapter
作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler


通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

4、处理器Handler(需要工程师开发)


注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler
Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。


由于Handler涉及到具体的用户业务请求,所以一般情况需要工程师根据业务需求开发Handler。

5、视图解析器View resolver(不需要工程师开发),由框架提供
作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)


View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

springmvc框架提供了很多的View视图类型,包括:jstlView、freemarkerView、pdfView等。

一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由工程师根据业务需求开发具体的页面。

6、视图View(需要工程师开发jsp...)
View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)

参考资料:网络-MVC

8. 如何实现springmvc将返回的给前端的pdf文件放在浏览器里预览

你好可以打开软件管家在里边下载安装PDF阅读器,安装后就可以在浏览器里显示。

9. 如何实现springmvc将返回的给前端的pdf文件放在浏览器里预览

你好你可以在电脑里安装PDF阅读器,安装后就可以在浏览器中预览。

10. asp.net mvc 4如何输出pdf

试试这个代码:

usingSystem;
usingSystem.IO;
usingSystem.Text;
usingSystem.Collections;

namespacePDFGenerator
{

publicclassPDFGenerator
{
staticfloatpageWidth=594.0f;
staticfloatpageDepth=828.0f;
staticfloatpageMargin=30.0f;
staticfloatfontSize=20.0f;
staticfloatleadSize=10.0f;


static山余明StreamWriterpPDF=newStreamWriter("E:\myPDF.pdf");

staticMemoryStreammPDF=newMemoryStream();

(stringstrMsg)
{
Byte[]buffer=null;
buffer=ASCIIEncoding.ASCII.GetBytes(strMsg);
mPDF.Write(buffer,0,buffer.Length);
buffer=null;
}

staticstringxRefFormatting(longxValue)
{
stringstrMsg=xValue.ToString();
intiLen=strMsg.Length;
if(iLen<10)
{
StringBuilders=newStringBuilder();
inti=10-iLen;
s.Append('0',i);
strMsg=s.ToString()+strMsg;
}
returnstrMsg;
}

staticvoidMain(string[]args)
{
ArrayListxRefs=newArrayList();
//Byte[]buffer=null;
floatyPos=0f;
longstreamStart=0;
longstreamEnd=0;
longstreamLen=0;
stringstrPDFMessage=null;
//PDF文档头信息
strPDFMessage="%PDF-1.1 ";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="10obj ";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="<</Length20R>> ";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="stream ";
ConvertToByteAndAddtoStream(strPDFMessage);
////////PDF文档描述
streamStart=mPDF.Length;毁册
//字体
strPDFMessage="BT /F0"+fontSize+"Tf ";
ConvertToByteAndAddtoStream(strPDFMessage);
//PDF文档实体高度
yPos=pageDepth-pageMargin;
strPDFMessage=pageMargin+""+yPos+"Td ";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage=leadSize+"TL "逗告;
ConvertToByteAndAddtoStream(strPDFMessage);

//实体内容
strPDFMessage="(http://www.wenhui.org)Tj ";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="ET ";
ConvertToByteAndAddtoStream(strPDFMessage);
streamEnd=mPDF.Length;

streamLen=streamEnd-streamStart;
strPDFMessage="endstream endobj ";
ConvertToByteAndAddtoStream(strPDFMessage);
//PDF文档的版本信息
xRefs.Add(mPDF.Length);
strPDFMessage="20obj "+streamLen+" endobj ";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="30obj <</Type/Page/Parent40R/Contents10R>> endobj ";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="40obj <</Type/Pages/Count1 ";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/Kids[ 30R ] ";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/Resources<</ProcSet[/PDF/Text]/Font<</F050R>>>> ";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/MediaBox[00"+pageWidth+""+pageDepth+"] >> endobj ";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="50obj <</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>> endobj ";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="60obj <</Type/Catalog/Pages40R>> endobj ";
ConvertToByteAndAddtoStream(strPDFMessage);

streamStart=mPDF.Length;
strPDFMessage="xref 07 000000000065535f ";
for(inti=0;i<xRefs.Count;i++)
{
strPDFMessage+=xRefFormatting((long)xRefs[i])+"00000n ";
}
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="trailer << /Size"+(xRefs.Count+1)+" /Root60R >> ";
ConvertToByteAndAddtoStream(strPDFMessage);

strPDFMessage="startxref "+streamStart+" %%EOF ";
ConvertToByteAndAddtoStream(strPDFMessage);
mPDF.WriteTo(pPDF.BaseStream);

mPDF.Close();
pPDF.Close();
}
}
阅读全文

与mvc40pdf相关的资料

热点内容
宝马x5大灯编程 浏览:673
python安装和使用 浏览:381
加密的门禁卡复制了用不了 浏览:714
javacsv读写 浏览:806
ug编程教程pdf 浏览:763
latex编译软件安卓版 浏览:248
如何在信合app上交居民医保 浏览:109
丑恶pdf 浏览:365
陕西定频压缩机销售公司 浏览:795
安卓系统如何帮人打王者 浏览:427
sbtlinux安装 浏览:141
阿里云sip服务器 浏览:73
身为程序员的你怎么拼命 浏览:453
android图片手势放大 浏览:586
钱的所有算法 浏览:13
光模块服务器怎么直接连电脑 浏览:376
编译器识别单词 浏览:344
2b2t服务器怎么获得金苹果 浏览:344
SQL如何进行服务器配置 浏览:175
贸易公司适合在什么app引流 浏览:717