IE 浏览器不显示使用 iTextSharp 设置的 PDF 的标题和文件名

Posted

技术标签:

【中文标题】IE 浏览器不显示使用 iTextSharp 设置的 PDF 的标题和文件名【英文标题】:IE browser does not display Title and File Name for PDF set using iTextSharp 【发布时间】:2016-04-05 11:53:43 【问题描述】:

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

在谷歌浏览器和部分火狐浏览器上一切正常。

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");

谷歌浏览器将标题显示为“我的文档标题”,下载时将文件名设置为“我的文件名”。 IE 和 Firefox 的情况并非如此。

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

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

【问题讨论】:

仅供参考:这不是真正的 iTextSharp 问题,而是浏览器或浏览器插件问题。我不确定你对这个问题有什么期望。 PDF 还可以,您几乎无法对跨浏览器进行“规范化”。 在加载外部插件内容时,没有规范浏览器在标题栏中显示的方式和内容,所以任何东西都可以去那里。 (加载后显示 PDF 标题是不同的问题) IHMO 假设它应在此处显示内容分发内容是错误的(因为文档仍在加载)。布鲁诺,将浏览器不应该做的事情归咎于浏览器,或者通过推广您的 iText 产品来回答这些事情并不酷。 【参考方案1】:

这个问题由两部分组成:

显示标题

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

writer.AddViewerPreference(PdfName.DISPLAYDOCTITLE, new PdfBoolean(true));

现在,当您在 Adob​​e Reader 中打开 PDF 时,标题将显示在标题栏中。在 Chrome PDF 查看器(与 Adob​​e Reader 不同)中打开 PDF 时,无需设置此查看器首选项。 Chrome PDF 查看器仍然选择显示标题。当您在 Firefox 中打开 PDF 时,您正在使用 pdf.js 来查看 PDF。我不知道 pdf.js 是否尊重观众的偏好。我怀疑 MSIE 是否会查看在 PDF 浏览器插件中打开的 PDF 的查看器首选项。

总结:如果您使用 Adob​​e Reader 作为独立工具(在浏览器之外)打开下载的 PDF 并在标题栏中看到标题,那么您做对了。如果浏览器的标题栏中没有显示标题,则您无能为力,因为浏览器不支持您的需求。

定义文件名

要定义文件名,你需要使用这一行:

document.AddHeader("Content-Disposition", "inline;filename=MyFileName.pdf");

如果你有这条线,你就做对了。如果浏览器不遵守 Content-Disposition,则说明浏览器做错了。

请参阅 *** 上的以下帖子以获取解决方法的灵感:

PDF Handler : content-disposition filename Internet Explorer 9 does not use file name for inline attachments Content-Disposition Filename not working on IE Content-Disposition inline filename issue with IE ...

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

【讨论】:

以上是关于IE 浏览器不显示使用 iTextSharp 设置的 PDF 的标题和文件名的主要内容,如果未能解决你的问题,请参考以下文章

火狐浏览器和ie浏览器下table边框的显示设置问题

ie11兼容模式仍然无法正常显示怎么解决

ie浏览器下载excel文件大不完整

IE浏览器运行脚本显示“对象不支持此属性或方法”

网页显示不全的解决方法

Libre Office 标签在 iTextSharp 中不显示为“AcroFields”?