Asp.net mvc 使用itextsharp和MVC在网页中显示一系列PDF页面

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

我用这个网站复制了一些例子,并向不同的人寻求帮助,所以我想我会和其他可能感兴趣的人分享我的尝试

以下内容从现有PDF文件中获取一系列页面,并在iframe或新选项卡中显示结果。它使用[itextsharp][1]

这段代码包含了相当多的新手代码,但至少它是有效的。 问我任何问题都毫无意义,因为我几乎肯定不知道答案

如果有人想指出哪些地方可以改进,我将不胜感激

查看

<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),需要将其移动到