使用搜索参数打开PDF只会打开PDF

时间:2014-03-11 19:08:02

标签: c# javascript asp.net pdf

我被要求在现有系统中添加一些搜索功能,以便我们收集PDF。我知道搜索PDF并用搜索参数打开它们,在我写的测试应用程序中,它就像一个梦想。当试图将其转换为我们现有的应用程序时,PDF会打开,但没有搜索条件或Acrobat Reader的高级查找弹出。任何帮助将不胜感激!

以下是cs代码的片段:

case "PDF":
      string searchTerms = SearchWordsTB.Text;
      searchTerms = searchTerms.Replace(',', ' ');
      launchStr = "OpenPDF('" + e.Row.Cells[9].Text.Replace("\\", "/") + "','" + HttpUtility.UrlEncode(e.Row.Cells[2].Text) + "','" + e.Row.Cells[0].Text + "','" + searchTerms + "')";
      break;

我们正在动态创建文档列表,PDF是其中一个选项。假设我正确理解了这一点,就会创建一个DataGrid,其中包含所有这些可单击的行,这些行将在单击时执行Javascript函数。 Javascript函数OpenPDF如下所示:

function OpenPDF(url, filename, ID, searchTerms) {
    if (searchTerms.length > 0) {
        window.open('FileViewer.aspx?name=' + filename + '&ID=' + ID + '&url=' + url + '#search="' + searchTerms + '"', 'mywindow' + windowCnt, 'width=800,height=600,location=no,resizable=yes');
    }
    else {
        window.open('FileViewer.aspx?name=' + filename + '&ID=' + ID + '&url=' + url, 'mywindow' + windowCnt, 'width=800,height=600,location=no,resizable=yes');
    }
    windowCnt++;
}

从CS代码中的调试开始,我知道我在搜索术语中正确地删除了逗号,所以不应该成为问题。目前发生的是PDF文件将打开正常,但搜索条件没有被使用。我试过通过Javascript跟踪调试器(这对我来说一直是最常见的),但是断点永远不会被击中。还应该注意的是,Javascript函数保存在单独的Javascript文件中,并且不在aspx页面中内联。是的,我们正确引用了Javascript文件。我将非常乐意使用所请求的任何额外信息更新此帖子。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我可以通过在启动字符串上使用http编码来实现所需的结果,如下所示。

launchStr = "OpenFile('" + HttpUtility.UrlEncode(e.Row.Cells[9].Text.Replace("\\", "/") + "#search=\"" + searchTerms + "\"") + "','" + HttpUtility.UrlEncode(e.Row.Cells[2].Text) + "','" + e.Row.Cells[0].Text + "','" + e.Row.Cells[1].Text + "')";

然后我使用该函数打开窗口,其中包含PDF。我遇到的问题是没有HTTP编码,URL只是切断了搜索参数。我认为这是因为#search =“blah”通常不会被识别为URL的一部分,因此被截断。如果有人有更好的理由,我很乐意听到。