【问题标题】:itext sharp generated pdf should open in new tab in mvc c#itextsharp生成pdf应该在mvc c#的新选项卡中打开
【发布时间】:2017-10-12 08:52:23
【问题描述】:
   $(document).off("click", "#btnPreviewAndDownload").on("click", "#btnPreviewAndDownload", function (e) {
    var QuestionPaperID = 1;
    var SubjectCode = '@Model.Model.SubjectPapperCode';
   window.location = "@Url.Action("PreviewAndDownloadQuestionPaper", "TeamCreation")?QuestionPaperID=" + QuestionPaperID + "&SubjectPapperCode=" + SubjectCode;
});
  private FileResult CreateQuestionPaperPDF(List<CustomMainQuestionDTO> questionDTOList, byte[] byteDoc, MemoryStream memStream)
    {
        Document doc = new Document(iTextSharp.text.PageSize.A4, 70, 40, 70, 40);
        PdfWriter writer = PdfWriter.GetInstance(doc, memStream);

        Font fontH1 = new Font(Font.FontFamily.HELVETICA, 11, Font.BOLD);

        doc.Open();
        doc.NewPage();


        Paragraph Heading = new Paragraph(questionDTOList[0].SubjectName, fontH4);
        Heading.Alignment = Element.ALIGN_CENTER;
        doc.Add(Heading);


        foreach (var questionDTO in questionDTOList)
        {
            doc.Add(Chunk.NEWLINE);
            if (String.IsNullOrEmpty(questionDTO.QuestionParentQuestionMappingID.ToString()))
            {
                MainQuestion(questionDTO, fontH2, doc, fontH1Bold);
            }
            else
            {
                SubQuestion(questionDTO, fontH2, fontH1, doc);
            }
        }
         doc.Close();
        byteDoc = memStream.GetBuffer();
        string fileName = "QuestionPaper - " + questionDTOList[0].SubjectName + ".pdf";
        return File(byteDoc, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
    }

我已使用 Itextsharp 创建并调整了试卷格式并下载了它。 它正在窗口中下载但无法在新标签中打开?如何在新选项卡中打开生成的 PDF?

【问题讨论】:

标签: c# asp.net-mvc-4 pdf itext


【解决方案1】:

您可以尝试使用以下代码生成您的 pdf,它将显示在您的浏览器上。

string filenm = "test";
        Document doc = new Document(iTextSharp.text.PageSize.A4, 70, 40, 70, 40);

        var fpath = Server.MapPath("~/PDFFiles/FunctionProspectus/");
        PdfWriter.GetInstance(doc, new FileStream(fpath + filenm, FileMode.Create));

        Font fontH1 = new Font(Font.FontFamily.HELVETICA, 11, Font.BOLD);

        doc.Open();
        doc.NewPage();

        Paragraph Heading = new Paragraph("Test");
        Heading.Alignment = Element.ALIGN_CENTER;
        doc.Add(Heading);

        doc.Add(Chunk.NEWLINE);               

        doc.Close();

        string contentType = "application/pdf";
        return File(Server.MapPath("~/PDFFiles/FunctionProspectus/") + filenm, contentType);

在我的一个项目中,我使用了这个并且运行良好。

【讨论】:

  • 但我必须创建并打开 pdf
  • @Ahilya ..代码正在同一窗口中创建和打开 pdf。如果您想在新窗口中使用它,只需尝试从新窗口中调用它。用这个试试你的代码,你会得到结果。
【解决方案2】:

如果我正确阅读了问题,您可以创建并返回 PDF,但这会导致浏览器导航到文档而不是单独打开。这样做的原因是因为您将 window.location 更改为生成 PDF 的操作的地址。避免这种情况并简化代码的一种方法是使用“target”属性设置为“_blank”的超链接,而不是使用 JavaScript 打开它。如果您想继续使用 JavaScript 解决方案,您也可以使用 window.open 而不是设置位置。根据浏览器和用户首选项设置,这两者都将在新选项卡或新浏览器窗口中打开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 2019-04-14
    • 2021-12-02
    • 1970-01-01
    • 2019-04-12
    • 2013-12-22
    • 2017-04-28
    • 1970-01-01
    相关资源
    最近更新 更多