我的应用程序从数据库中获取pdf字节,并使用itextsharp库将pdf发送到iframe。当pdf显示在iframe中时,工具栏和导航窗格将显示,但我们希望隐藏它们。在加载pdf文档时,只需使用#toolbar=0键入pdf的url即可
应用程序逻辑是使用PdfStamper向pdf添加一些按钮和其他数据。当我将pdf文件写入响应时。Outputstream,pdf显示了添加的按钮,除了我无法摆脱工具栏和导航窗格之外,一切都很好。我已尝试添加“toolbar=0”
我已经编写了一个测试应用程序,它表明使用PdfSmartCopy而不是stamper可以完美地工作——pdf显示在浏览器中,默认情况下隐藏工具栏和导航窗格。
问题是,我仍然需要通过母版向pdf添加一些按钮。我已经编写了一个测试应用程序,它通过压模添加按钮,然后智能复制从压模中抓取每页,并将所有这些内容写入响应。输出pdf显示在浏览器中,没有工具栏或导航窗格,但按钮不在那里。
以下是使用压模和智能副本的代码——非常感谢您的帮助:
private void SendStamperToCopy()
{
try
{
String filePath = @"C:\debug\PerfIndicWithDefaults.pdf";
byte[] pdfBytes = ReadFile(filePath);
Document document = new Document();
PdfSmartCopy copy = new PdfSmartCopy(document, Response.OutputStream);
document.Open();
MemoryStream memStream = new MemoryStream();
PdfReader reader = new PdfReader(pdfBytes);
PdfStamper pdfStamper = new PdfStamper(reader, memStream);
// add a button with the stamper
iTextSharp.text.Rectangle rectCancel = new iTextSharp.text.Rectangle(50, 50, 20, 20);
PushbuttonField btnCancel = new PushbuttonField(pdfStamper.Writer, rectCancel, "Cancel");
btnCancel.Text = "Cancel";
iTextSharp.text.pdf.PdfAnnotation fieldCancel = btnCancel.Field;
pdfStamper.AddAnnotation(fieldCancel, 1);
int numOfPgs = reader.NumberOfPages;
for (int n = 1; n <= numOfPgs; n++)
{
copy.AddPage(pdfStamper.GetImportedPage(reader, n));
}
String headerStr = "inline; filename=PerfIndicWithDefaults.pdf";
Response.AppendHeader("content-disposition", headerStr);
Response.ContentType = "application/pdf";
Response.OutputStream.Flush();
document.Close();
Response.OutputStream.Close();
}
catch (Exception ex)
{
Console.Write(ex);
Response.OutputStream.Flush();
Response.OutputStream.Close();
}
}
如果我正确理解你的问题,你想使用PdfStamper
添加一个按钮,你想改变查看器的首选项。可以这样做:
PdfReader reader = new PdfReader(source);
System.IO.MemoryStream m = new System.IO.MemoryStream();
PdfStamper stamper = new PdfStamper(reader, m);
PdfStamper.ViewerPreferences = PdfWriter.HideToolbar | PdfWriter.PageModeUseNone;
stamper.Close();
reader.Close();
HideToolbar
将隐藏工具栏,而PageModeUseNone
意味着您不显示任何面板(如书签面板等)。
不清楚为什么在这个上下文中需要PdfSmartCopy
。也许我错过了什么。另外:在您的代码中也有一些奇怪的错误:您从未关闭过压模
实例,但是您将一个页面从压模
导入到复制
实例中。我从未见过有人尝试过。这当然不是我写iText时的想法。你的代码让我很困惑。
问题内容: 如何在Web浏览器中的.html页面上显示pdf? 问题答案: 我使用的是Google文档可嵌入的PDF查看器。这些文档不必上传到Google文档,但必须在线提供。
问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: 如何使用servlet在jsp中显示pdf文件 我从数据库中检索pdf文件,并将其放入这样的文件中 现在这是在服务器端。在我的客户端中,每当用户单击jsp页面中的说 href = pdf(pdf是我的servlet名称) 的链接时 ,我都应该在客户端的浏览器上显示从数据库检索到的文件。 我该怎么办? 问题答案: 将响应的内容类型
问题内容: 在我的servlet中,我使用下面的代码在浏览器中打开PDF文件,但是,它显示了一个下载对话框。 我做错了什么? 问题答案: 你可以尝试用
问题内容: 我是expressjs的新手,我无法使用数据对象发送响应。二进制内容在浏览器中可见。给我建议如何处理? 问题答案: 我测试了您的代码,它在chrome中对我有效,但有一个更改:更改为 编辑:由于您似乎认为仅POST服务器是一个好主意,请阅读:http : //net.tutsplus.com/tutorials/other/a-beginners-introduction-to-htt
我的应用程序是一个全屏游戏的覆盖图(alwaysOnTop),当用户点击我的覆盖图时,它会聚焦并在游戏顶部显示任务栏。集中注意力是好的,但我不能有任务栏显示。 null 不是不能关注的工具箱窗口 这意味着有可能创建一个无法关注的窗口。 有人知道如何创建一个工具箱窗口,或者简单地避免在点击电子窗口时显示任务栏吗? 我应该提到我已经尝试了 和 。我还有 和 。 我创建的覆盖是“安全,中线,离线”按钮。
在向应用添加导航栏和工具栏之前,我们需要决定使用哪种布局。 Framework7在这方面很自由,有3种不同类型的导航栏/工具栏布局,它们对应着在页面/视图中的不同位置。 静态布局 静态布局可能是最少使用的布局。在这种情况下,导航栏和工具栏只是可以滚动的页面内容的一部分,每个页面都有它自己的导航栏和工具栏: <body> ... <div class="views"> <div cl