C# IE浏览器不显示使用iTextSharp的PDF集的标题和文件名

C# IE浏览器不显示使用iTextSharp的PDF集的标题和文件名,c#,internet-explorer,firefox,pdf-generation,itextsharp,C#,Internet Explorer,Firefox,Pdf Generation,Itextsharp,我正在使用iTextSharp将数据写入模板文件。然后使用C#中的MemoryStream呈现PDF文档 谷歌Chrome和firefox的一切都如预期般正常 var document = new Document(); //document open and content settings are done here document.AddTitle("My Document Title"); //Statement-1 document.AddHeader("content-dispos

我正在使用iTextSharp将数据写入模板文件。然后使用C#中的MemoryStream呈现PDF文档

谷歌Chrome和firefox的一切都如预期般正常

var document = new Document();
//document open and content settings are done here
document.AddTitle("My Document Title"); //Statement-1
document.AddHeader("content-disposition", "inline;filename=MyFileName.pdf");
Google chrome将标题显示为“我的文档标题”,下载时将文件名设置为“我的文件名”。IE和Firefox的情况并非如此

IE将站点名称显示为标题,并将查询参数指定为文件名。Firefox也有随机行为。甚至javascript(window.open设置)也不起作用。我希望浏览器显示与Google chrome相同的标题和文件名


如果我错过了跨浏览器标准化标题和文件名的任何重要步骤,请提供指导。

此问题由两部分组成:

显示标题 现在,您正在向PDF文档添加元数据:您正在为文档添加标题。在PDF查看器中打开PDF时,您希望在标题栏中看到此标题。要实现此目的,必须设置
DisplayDocTitle
viewer首选项:

writer.AddViewerPreference(PdfName.DISPLAYDOCTITLE, new PdfBoolean(true));
现在,当您在Adobe Reader中打开PDF时,标题将显示在标题栏中。在Chrome PDF viewer(与Adobe Reader不同)中打开PDF时,无需设置此查看器首选项。Chrome PDF viewer仍然选择显示标题。在Firefox中打开PDF时,您使用的是PDF.js来查看PDF。我不知道pdf.js是否尊重查看器的首选项。我怀疑MSIE是否会查看在PDF浏览器插件中打开的PDF的查看器首选项

摘要:如果您使用Adobe Reader作为独立工具(在浏览器之外)打开下载的PDF,并在标题栏中看到标题,那么您就做对了。如果标题未显示在浏览器的标题栏中,则您对此无能为力,因为浏览器不支持您所需的内容

定义文件名 要定义文件名,需要使用以下行:

document.AddHeader("Content-Disposition", "inline;filename=MyFileName.pdf");
如果你有这条线,你就做对了。如果浏览器不重复内容配置,则表明浏览器做得不对

请参阅以下有关StackOverflow的帖子,了解解决方法的灵感:


(你的问题以前已经回答过很多次。)

FYI:这不是一个真正的iTextSharp问题,这是一个浏览器或浏览器插件问题。我不知道你对这个问题的期望是什么。PDF还可以,您几乎无法“规范化”accross浏览器。在加载外部插件内容的过程中,没有关于浏览器在标题栏中显示的方式和内容的规范,因此任何内容都可以。(加载后显示PDF标题是另一个问题)IHMO认为它应该在那里显示内容替换内容是错误的(因为文档仍在加载)。布鲁诺,把他们不应该做的事情归咎于浏览器,或者通过推广你的iText产品来回应,这是不酷的。