Asp.net mvc 使用itextsharp和MVC在网页中显示一系列PDF页面
我用这个网站复制了一些例子,并向不同的人寻求帮助,所以我想我会和其他可能感兴趣的人分享我的尝试 以下内容从现有PDF文件中获取一系列页面,并在iframe或新选项卡中显示结果。它使用[itextsharp][1] 这段代码包含了相当多的新手代码,但至少它是有效的。 问我任何问题都毫无意义,因为我几乎肯定不知道答案 如果有人想指出哪些地方可以改进,我将不胜感激 查看Asp.net mvc 使用itextsharp和MVC在网页中显示一系列PDF页面,asp.net-mvc,pdf,itextsharp,Asp.net Mvc,Pdf,Itextsharp,我用这个网站复制了一些例子,并向不同的人寻求帮助,所以我想我会和其他可能感兴趣的人分享我的尝试 以下内容从现有PDF文件中获取一系列页面,并在iframe或新选项卡中显示结果。它使用[itextsharp][1] 这段代码包含了相当多的新手代码,但至少它是有效的。 问我任何问题都毫无意义,因为我几乎肯定不知道答案 如果有人想指出哪些地方可以改进,我将不胜感激 查看 <input id="btnIframe" type="button" value="Iframe" /> <in
<input id="btnIframe" type="button" value="Iframe" />
<input id="btnNewTab" type="button" value="New Tab" />
<div id="pdfDiv"></div>
<script type="text/javascript">
$(function () {
$("#btnIframe").click(function () {
var filename = "Test1";
var startPage = 1;
var endPage = 3;
var pParams = filename + "¬" + startPage + "¬" + endPage;
var url = '/PDFTest/GetPdfPages/' + pParams;
var html = "<iframe src=" + url + " style='width: 100%; height: 400px' ></iframe>";
$('#pdfDiv').html(html);
});
$("#btnNewTab").click(function () {
var filename = "Test1";
var startPage = 1;
var endPage = 3;
var pParams = filename + "¬" + startPage + "¬" + endPage;
var url = '/PDFTest/GetPdfPages/' + pParams;
window.open(url, "_blank");
});
});
</script>
$(函数(){
$(“#b框架”)。单击(函数(){
var filename=“Test1”;
var起始页=1;
var endPage=3;
var pParams=文件名+“,”+起始页+“,”+结束页;
var url='/PDFTest/GetPdfPages/'+pParams;
var html=“”;
$('#pdfDiv').html(html);
});
$(“#btnNewTab”)。单击(函数(){
var filename=“Test1”;
var起始页=1;
var endPage=3;
var pParams=文件名+“,”+起始页+“,”+结束页;
var url='/PDFTest/GetPdfPages/'+pParams;
打开(url为“空白”);
});
});
控制器
public FileStreamResult GetPdfPages(string id)
{
var pParams = id.Split('¬');
var fileName = pParams[0];
var start = Convert.ToInt32(pParams[1]);
var end = Convert.ToInt32(pParams[2]);
var inputFile = Server.MapPath(@"~/PDFFiles/" + fileName + ".pdf");
var inputPdf = new PdfReader(inputFile);
int pageCount = inputPdf.NumberOfPages;
if (end < start || end > pageCount)
{
end = pageCount;
}
var inputDoc =
new Document(inputPdf.GetPageSizeWithRotation(1));
using (MemoryStream ms = new MemoryStream())
{
var outputWriter = PdfWriter.GetInstance(inputDoc, ms);
inputDoc.Open();
var cb1 = outputWriter.DirectContent;
for (var i = start; i <= end; i++)
{
inputDoc.SetPageSize(inputPdf.GetPageSizeWithRotation(i));
inputDoc.NewPage();
var page =
outputWriter.GetImportedPage(inputPdf, i);
int rotation = inputPdf.GetPageRotation(i);
if (rotation == 90 || rotation == 270)
{
cb1.AddTemplate(page, 0, -1f, 1f, 0, 0,
inputPdf.GetPageSizeWithRotation(i).Height);
}
else
{
cb1.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
}
}
inputDoc.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "inline;test.pdf");
Response.Buffer = true;
Response.Clear();
Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length);
Response.OutputStream.Flush();
Response.End();
return new FileStreamResult(Response.OutputStream, "application/pdf");
}
}
public FileStreamResult GetPdfPages(字符串id)
{
var pParams=id.Split(“,”);
var fileName=pParams[0];
var start=Convert.ToInt32(pParams[1]);
var end=Convert.ToInt32(pParams[2]);
var inputFile=Server.MapPath(@“~/PDFFiles/“+fileName+”.pdf”);
var inputPdf=新的PdfReader(inputFile);
int pageCount=inputPdf.NumberOfPages;
如果(结束<开始| |结束>页面计数)
{
结束=页面计数;
}
var输入文件=
新文件(inputPdf.GetPageSizeWithRotation(1));
使用(MemoryStream ms=new MemoryStream())
{
var outputWriter=PdfWriter.GetInstance(inputDoc,ms);
inputDoc.Open();
var cb1=outputWriter.DirectContent;
对于(var i=start;i),需要将其移动到