0

可能重复:
在 ASP.NET C# 中打开 pdf 后如何不更改网页中的字体?

之前我发过这个问题:

如何在 ASP-NET c# 中从特定路径打开文件?

事实上,我已经问过这个问题,但这只是一个小问题,所以我想这在上一篇文章中并不那么重要,所以我会在这里问。

每当我打开pdf时:

Response.Write("<script>window.open('FilePath');</script>");

页面中的所有字体都被改变了,例如,字母的大小增加了,一些字母的颜色变成了黑色,而不是我指定的字体。

有没有办法可以解决这个问题?

http://imageshack.us/a/img838/5145/beforeja.png

http://imageshack.us/a/img546/4760/afterw.png

哦,我注意到当你打开像 jpg 这样的图像时也会发生这种情况

4

1 回答 1

1

我不确定直接用 Response.Write 写是在这种特殊情况下的最佳解决方案。我对此的记忆很模糊,但似乎我(很久以前)尝试通过 Response.Write 直接写入输出并遇到了一些奇怪的行为,就像你描述的那样。其他 SO 成员应该能够更好地详细说明为什么会发生这种情况,但我认为这与您在页面生命周期和 IIS 流中所处的位置有关 Response.Write 是否会实现所需的行为。如果你想将文件直接推送到客户端,你可以考虑 MVC。MVC 使得通过 FilePathResult 类将文件直接推送到客户端变得更加容易。如果您愿意,可以混合搭配 MVC 和 WebForms。Scott Hansleman在这里展示了如何做到这一点。

但是,如果您想坚持使用 WebForms,那么这是我整理的一个简单页面,以展示如何使用 RegisterStartupScript 通过单击相应的按钮打开两个本地 PDF 中的任何一个:

ASPX:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Register Startup Script Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="bnOpenTest1PDF" runat="server" 
         OnClick="opnTest1PDF" Text="OpenPDF1" />
        <asp:Button ID="bnOpenTest2PDF" runat="server" 
         OnClick="opnTest2PDF" Text="OpenPDF2" />
    </div>
    </form>
</body>
</html>

代码背后:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void opnTest1PDF(Object sender, EventArgs e)
    {
        Page.ClientScript.RegisterStartupScript(
            this.GetType(),
            "myFileOpenScript",
            "<script>window.open('test1.pdf');</script>");
    }

    protected void opnTest2PDF(Object sender, EventArgs e)
    {
        Page.ClientScript.RegisterStartupScript(
            this.GetType(),
            "myFileOpenScript",
            "<script>window.open('test2.pdf');</script>");
    }
}
于 2012-09-19T21:24:23.240 回答