XSL Formatter V2 Q&A| Q. | IISを使用して、ASPでXSL Formatterを使用してPDFファイルを出力するには。 [No.2002030103] |
|---|---|
| A. |
こちらにASPスクリプトファイルと、これを呼び出すHTMLファイルを用意いたしました。ご参考にしていただければと思います。 |
| Q. | ASPを使用してPDFをローカルのハードディスクに保存させようとするとエラーになってしまいます。 [No.2002041901] |
|---|---|
| A. |
通常ASPにてサーバにリクエストを出した場合、サーバはこのクライアントをGuestアカウント(IUSERアカウント)として処理します。よってGuestアカウントにて書き込みが許されないストレージに書き込みを行おうとしますので、エラーとなります。よって、PDFを保存したいストレージに対してGuestアカウント(IUSERアカウント)に書き込み権限を与えてください。 |
| Q. | ASPを使用してPDFを作成するとき、PDFをローカルのハードディスクではなくASP呼び出しクライアントのブラウザに直接表示させることは可能ですか。 [No.2002070501] |
|---|---|
| A. |
「PDF出力オプション」を使用すれば、作成したPDFデータを直接クライアントのブラウザに表示させることが可能です。
|
| Q. | XSL FormatterにFOをDOMで引き渡し、なおかつPDFストリームを直接クライアント側ブラウザに表示させたいと思いますが、このような運用は可能でしょうか。 [No.2002093010] |
|---|---|
| A. |
XSL Formatter V2.3 からFOをDOMで引き渡すことが可能になりました。(SDKをご購入いただく必要もありません。)また、IISでASPを使用した場合に限りますが、PDFストリームを直接クライアント側ブラウザに出力することができます。 |
| Q. | XSL Formatter をサーバで使用して、組版結果をクライアント側に送ることは可能ですか。 [No.2002100402] |
|---|---|
| A. |
APSからAXFOSVR.XFOObjを利用している場合に限って、クライアントのブラウザへのPDFのstream出力をサポートしています。それ以外の場合の AXFOSVR.XFOObjの利用については、未サポートですので、その場合は一旦出力結果を一時ファイルにしてから、それをブラウザに送るような処理をする必要があります。 |
| Q. | XSL Formatterをサーバにインストールして、XSL FormatterのCOMインターフェイスをクライアント側から使用することは可能ですか。 [No.2002102501] |
|---|---|
| A. |
サーバにインストールされたXSL Formatterをクライアント側から(GUI、COMインターフェイスなどで)使用することはサポートしていません。 もし XSL Formatter をサーバ上で運用させたい場合は、XSL Formatter を呼び出すアプリケーションを作成して、このアプリケーションをクライアント側から使用してください。 |
| Q. | XSL Formatter を ASP から使用する際、PDF への出力ページ数を 'StartPage'と 'EndPage' で指定したのですが、全ページ印刷されてしまいます。不具合ではないでしょうか。 [No.2003011703] |
|---|---|
| A. |
ASP には次のように書かれていました。 XMLFO.Source = Input_XMLFilename XMLFO.Stylesheet = Input_XSLFilename XMLFO.OutputFile = Output_Filename XMLFO.PrinterName = "@PDF" XMLFO.Startpage = 1 XMLFO.Endpage = 3 XMLFO.Clear() XMLFO.Execute() (XSL Formatter 呼び出し部分のみ抜粋) 問題は、Execute() メソッドを呼び出す直前の Clear() メソッドにあります。
ここでClear()メソッドを呼ぶと、Startpage、Endpageに指定したページ数が初期化されてしまい、結果全ページが出力されます。
|
| Q. | ASP を使用して PDF ストリームを直接クライアントブラウザに表示させようとしたのですが、クライアントブラウザに PDF が表示されません。なぜですか。 [No.2003030701] |
|---|---|
| A. |
ASP には下記のように書かれていました。
<%
dim objXML
set objXML = CreateObject("MSXML2.DOMDocument.3.0")
objXML.async = False
objXML.load "C:\inetpub\wwwroot\fo\test.fo"
dim objAXF
Set objAXF = Server.CreateObject("AXFOSVR.XFOObj")
objAXF.Clear()
objAXF.foXMLDOM = objXML
objAXF.PrinterName= "@PDF"
objAXF.OutputFile = ""
objAXF.ExtLevel=1
Response.ContentType = "application/pdf"
objAXF.Execute()
%>
<%'=objAXF.ErrorCode%>
<%
set objAXF=nothing
%>
原因は objAXF.Execute() の後の <%'=objAXF.ErrorCode'%> にあります。たぶんエラーが発生した場合にクライアントブラウザにエラーを表示させようとして指定したと思われます。
<%
dim objXML
set objXML = CreateObject("MSXML2.DOMDocument.3.0")
objXML.async = False
objXML.load "C:\inetpub\wwwroot\fo\test.fo"
dim objAXF
Set objAXF = Server.CreateObject("AXFOSVR.XFOObj")
objAXF.Clear()
objAXF.foXMLDOM = objXML
objAXF.PrinterName= "@PDF"
objAXF.OutputFile = ""
objAXF.ExtLevel=1
Response.ContentType = "application/pdf"
objAXF.Execute()
Response.End
if objAXF.ErrorCode <> 0 then
Response.Write "Error: " & objAXF.ErrorCode & " " & objAXF.Reason
end if
Set objAXF = Nothing
Set objXML = Nothing
|
| Q. | AXFOSVR.XFOObj の SetParamメソッドを使用して、xsl:paramの値を変化させようとしたのですが、うまく行きません。 [No.2003032802] |
|---|---|
| A. |
「SetParam」メソッドは、MSXML4またはMSXML3をXSLTプロセッサとして使用する場合のみ有効です。使用しているプロセッサがMSXML4またはMSXML3かどうか確認してください。 |
| Q. | IIS 経由にて XSL Formatter を使用しようとしたときに「IIS send an error : IID_IXFOCtl failed」というエラーが発生します。 [No.2003060603] |
|---|---|
| A. |
XSL Formatter を呼び出す ASP には次のように書かれています。
xlsfo.Source = Application("TMPFileDirectory") & xmlFileName
xlsfo.Stylesheet = Application("XSLFileDirectory") & xslFileName
xlsfo.PrinterName = "@PDF"
xlsfo.OutputFile = Application("WriteTemplateDirectory") & TempFileName
このとき、"WriteTemplateDirectory" ディレクトリに書き込み権限がないユーザがこの ASP を動作すると「IIS send an error : IID_IXFOCtl failed」というエラーが発生する場合があります。
|
| Q. | XSL Formatter は .NET API をサポートしていますか。 [No.2002102502] |
|---|---|
| A. |
XSL Formatter V2.5改訂3版とXSL Formatter V3から.NETインターフェイスを用意しております。 |
| Q. | XSL Formatter のCOMインターフェイスを使用して、PDFファイルを作成するには。 [No.2002011537] |
|---|---|
| A. |
PrinterName プロパティに "@PDF" を指定することでPDFファイルを出力できます。 こちら にサンプルを用意しましたので参考にしてください。 |
| Q. | XSL FormatterのCOMインターフェイスを使用したサンプルソースはありませんか。 XSL FormatterのCOMインターフェイスでのエラー処理方法を知りたい。 [No.2002011543] |
|---|---|
| A. |
XSL Formatter のCOMインターフェイスは、Executeメソッドのリターン値と例外エラーにて終了状況を返します。 C++ サンプルソース と VB Script サンプルソース の、サンプルを用意しましたので参考にしてください。 |
| Q. | XMLをDOM形態でXMLドキュメントのかわりに渡すことは可能ですか。 [No.2002093006] |
|---|---|
| A. |
V2.3からCOMインターフェイスにDOMを引き渡すためのプロパティを用意致しました。詳しくはXSL Formatterのオンラインマニュアルをご覧ください。 こちら に VBS のサンプルを用意しましたので参考にしてください。 |
| Q. | XSL FormatterをCOMで使用したとき、「画像がない」等のエラーが取得できないがなぜか。 [No.2002100403] |
|---|---|
| A. |
エラーの発生状況はエラーオブジェクト(VBSではErrオプジェクト)だけではなく、XSL FormatterのErrorプロパティでも返ってきますので、こちらも確認するようにプログラミングしてください。 |
| Q. | COMインターフェイス'AXFO.XFOCtl'にFOのDOMオブジェクトを引き渡したときに「画像が見つかりません」のエラーが発生します。なぜですか。 [No.2002101505] |
|---|---|
| A. |
下記がそのときのソースコード(VBscript)の一部です。
dim domXML
set domXML = CreateObject("MSXML2.DOMDocument.3.0")
domXML.async = False
domXML.load "data/document.xml"
dim domXSL
set domXSL = CreateObject("MSXML2.DOMDocument.3.0")
domXSL.async = False
domXSL.load "data/sheet.xsl"
dim domFO
set domFO = CreateObject("MSXML2.DOMDocument.3.0")
domFO.async = False
' XML + XSL => FO
domXML.transformNodeToObject domXSL, domFO
dim xfoctl
dim xfoerr
set xfoctl = CreateObject("AXFO.XFOCtl")
' MSXML -> XSL Formatter
xfoctl.xfodoc.foXMLDOM = domFO
.
.
.
画像ファイルもDataフォルダに入っています。
dim domXML
dim domXSL
on error resume next
set domXML = CreateObject("Msxml2.FreeThreadedDOMDocument.4.0")
if Err = 0 then
on error goto 0
set domXSL = CreateObject("Msxml2.FreeThreadedDOMDocument.4.0")
else
on error goto 0
set domXML = CreateObject("Msxml2.FreeThreadedDOMDocument.3.0")
set domXSL = CreateObject("Msxml2.FreeThreadedDOMDocument.3.0")
end if
domXML.async = False
domXML.load "data/document2.xml"
domXSL.async = False
domXSL.load "data/sheet.xsl"
dim xfoctl
set xfoctl = CreateObject("AXFO.XFOCtl")
' MSXML -> XSL Formatter (XML + XSL)
xfoctl.xfodoc.sourceXMLDOM = domXML
xfoctl.xfodoc.stylesheetXMLDOM = domXSL
.
.
.
注意点が2つあります。 |
| Q. | COM インターフェイスを使用して、XSL Formatter を使用するとき、PrinterName メソッドにはどのようなプリンタ名を渡せば良いかわかりません。 [No.2003012403] |
|---|---|
| A. |
プリンタ名は、基本的にはWindowsのプリンタダイアログに表示されています、プリンタの名前を使用します。
|
| Q. | COM インターフェイスを使用して、空白を含んだ URL を指定したのですが、「指定されたパスが見つかりません」( The system cannot locate the object specified. )のエラーが発生します。なぜですか。 [No.2003013102] |
|---|---|
| A. |
指定された URL は次のようになっていました。 objAXF.Source = "http://localhost/XSLFO/AntennaHouse%20Sample/document.xml" 本来の URL は "http://localhost/XSLFO/AntennaHouse Sample/document.xml" となっていますが、'AntennaHouse' と 'Sample' の間に空白がありますので、これをユーザが '%20' に置き換えて指定したと思われます。
|
| Q. | COM インターフェイスを使用して、組版を行ったのですが、「Error code: -2146697209(0x800C0007)」のエラーが発生します。どこに問題があるのでしょうか。 [No.2003013103] |
|---|---|
| A. |
これは、XSL Formatter V2.3 以前の不具合でした。XSL Formatter V2.4 では改善されています。 |
| Q. | COM インターフェイスや Javaインターフェイスを使用して、組版結果をPDFに出力するときに、出力ファイルパスをURL形式で指定したところ、エラーが発生します。なぜですか。 [No.2003020705] |
|---|---|
| A. |
URL形式のOutputFile指定はサポートしておりません。URL形式ではないファイルパスを指定してください。
objAXF.OutputFile= "file:H:/ASPTest/TEST/Result.pdf" 下記のように指定してください。 objAXF.OutputFile= "H:/ASPTest/TEST/Result.pdf" なお、XSL Formatter V3 は "file:"形式のパス指定が可能です。 |
| Q. | PDF ストリームをクライアントブラウザに表示する際、XSL Formatter の COM インターフェイスがテンポラリのPDFファイルを作成しているように見えます。もしそうならばテンポラリの PDF ファイルを作成しないで、 PDF ストリームをクライアントブラウザに表示させることはできますか。 [No.2003030704] |
|---|---|
| A. |
XSL Formatter では、一旦テンポラリのPDFファイルを作成して、これをクライアントブラウザに表示させます。そして、これは仕様になります。これを回避することはできません。ご了承ください。 |
| Q. | Delphiを使用して、XSL Formatterを呼び出したいのですが、'AXFO 2.5 Type Library' をインポートしても、オンラインマニュアルに記載されているメソッドやプロパティが見つかりません。 [No.2003072501] |
|---|---|
| A. |
'AXFO 2.5 Type Library' は ActiveX インターフェースになります。ActiveX インターフェースは
開発キット(SDK)ライセンスをご購入された方のみに公開しています。
|
| Q. | Javaを使用してXSL Formatterを使用できますか。 [No.2002030104] |
|---|---|
| A. |
V2.2から「Javaインターフェイス」を用意いたしました。Javaインターフェイスのモジュールを別途インストールすることで使用可能になります。詳細につきましては、Javaインターフェイスに付属しているReadmeファイルおよび、ドキュメントを参照してください。 |
| Q. | PDF ストリームを直接ブラウザに出力したいのですが、これがJavaでできますか。 [No.2002092005] |
|---|---|
| A. |
いいえ。XSL Formatter がPDFを直接ブラウザに出力できるのは、IISとASPサーバを使ったときのみとなります。 |
| Q. | XSL Formatter の動作環境は Windows95/98/me/NT4.0/2000/XP とされていますが、AXFO.jar が提供されているので、JAVA(サーブレットコンテナ)の稼働環境でも同等の処理もできるのではないでしょうか。 [No.2002102503] |
|---|---|
| A. |
XSL Formatter V2 は Windows環境でしか動かない設計になっておりますので、Windows以外での動作は不可能となります。また、AXFOSVR.jar は、Windows+JRE(Java実行環境)の場合にJavaからWindowsのCOMを利用するためのブリッジの役割をしています。したがって、これ以外の環境では動作しません。
|
| Q. | XSL Formatter を Javaインターフェイスから使用しようとしたのですが「NoClassDefFoundError」というエラーが発生します。なぜですか。 [No.2003012404] |
|---|---|
| A. |
環境変数が正しく指定されていない可能性があります。
set CLASSPATH= %CLASSPATH%;c:\Program files\Antenna\xslformatter\lib\axfosvr\AXFOSVR.jar; まず、この点を確認してください。 |
| Q. | XSL Formatter の Java インターフェイスはマルチスレッドに対応していますか。 [No.2003022102] |
|---|---|
| A. |
Java インターフェイスはマルチスレッドに対応していません。 マルチスレッド(アパーティメントスレッド)にて動作させるには、COMインターフェイスを使用してください。 |