- PR -

子画面にPDFを表示したいのですが(JavascriptのWindow.Openを使用)

1
投稿者投稿内容
もりぞう
会議室デビュー日: 2004/04/01
投稿数: 15
投稿日時: 2004-04-16 00:13
いつもお世話になっております。
FDFToolkitを使ってFDFを生成し、PDFを表示させようとしています。
このとき、親aspxにJavaScriptを埋め込んで、ボタンをクリックすると新しいウィンドウが現れ、その中にFDF生成aspxで作られたPDFを表示させたいと思っております。
現在のコードを示させていただきますと、
親(parent.aspx)
Private Sub Page_Load()
Dim sbScript As New System.Text.StringBuilder
With sbScript
.Append("<script language='javascript'>" & vbCrLf)
.Append("function winOpen(url) {" & vbCrLf)
.Append(vbTab & "var features = 'Height=500,Width=700,Top=50,Left=50,")
.Append("dependent=yes,location=no,menubar=no,resizable=yes,")
.Append("scrollbars=no,status=no,titlebar=no,toolbar=no';" & vbCrLf)
.Append(vbTab & "window.open(url,'_new',features);}" & vbCrLf)
.Append("</" & "script>")
End With
RegisterClientScriptBlock("openwin", sbScript.ToString)
Dim QS as string = "child.aspx?AAA=" & 【テキストボックスの値】
【ボタンのID】.Attributes.Add("OnClick", "winOpen('" & QS & "')")
End Sub

子(child.aspx)
Private Sub Page_Load()
Dim FDFAcx As FdfApp = New FdfApp
Dim resFDF As FdfDoc = FDFAcx.FDFCreate()
Dim pdfpath As String
pdfpath = "【値を埋め込みたいPDFのパス】"
resFDF.FDFSetValue("【フィールド名】", Request.QueryString("AAA"), False)
resFDF.FDFSetFile(pdfpath)
Response.ContentType = "application/vnd.fdf"
Response.AppendHeader("Content-Disposition", "inline")
Response.AppendHeader("Content-Transfer-Encoding", "base64")
Response.BinaryWrite(resFDF.FDFSaveToBuf)
resFDF.FDFClose()
resFDF = Nothing
FDFAcx = Nothing
pdfpath = Nothing
Response.End()
End Sub

これを実行しますと、Acrobat 6がインストールされている状況下で、@子ウインドウの中にPDFがきちんと表示されるとき(成功)とA子ウインドウが空白の状態で開かれ、親(parent.aspx)が表示されていたウインドウの中にPDFが表示されてしまうとき(失敗)のどちらかの現象がランダムに発生します(どちらかといえばAの失敗のほうが多いです)。
どうしてこのように「時々成功する」のかがわかりません。
成功するケースもあるということは、文法的には間違っていないと思うのですが…(何かが足りない?)
ちなみにAcrobat 5がインストールされている状況では確認した限りAの失敗ケースだけが発生します。
どなたか対処方法をご存知の方、よろしくお願い申し上げます。
WinXP Pro、VisualStudio2003、FDFToolKit6、VBです。
もりぞう
会議室デビュー日: 2004/04/01
投稿数: 15
投稿日時: 2004-04-16 15:25
自己レスです。
原因はDocumentクラスのSmartNavigationがTrueになっていたことでした。
これをFalseにすることで常に子ウインドウの中にPDFが表示されるようになりました。
大変お騒がせいたしました。
また何かありましたらよろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)