ASPにおいて、PDF形式のバイト配列を出力すると、正しくPDFが作成されず、クライアントのAcrobat Readerでエラーが発生します。
対象製品
ActiveReports 2.0J Standard
詳細
サーバ側で、バイト配列出力時に利用されるテンポラリなディレクトリに対して書き込み権限が必要になります。PDFエクスポートの際、テンポラリファイルが、System32(デフォルト)に格納されます。しかし、System32に書き込みの許可が与えられていない場合、格納することができず問題が発生します。
※本現象は、データのレコード件数等の条件により、発生する場合としない場合があります。問題が発生しない場合にも、書き込み権限の設定をご確認いただくことをお勧めいたします。
このテンポラリファイルの格納先は、FileNameプロパティで、予め指定しておくことができます。こうすることで、IISのルートディレクトリ内のサブディレクトリや、Webアプリケーションのディレクトリに格納できるようになります。
下記のプログラムで示されるパス wrkPDF.FileNameの C:¥Temp に、NTFSファイルシステム セキュリティ設定ページから、実行時のユーザーに対して書き込み権限が無いときに問題となります。書き込み権限のあるパスをコードから設定してください。
このパスの設定の以外に、日本語フォントを利用する場合は、AcrobatVersionプロパティを必ず「DDACR40」(または 2)と指定し、SemiDelimitedNeverEmbedFontsプロパティを ""(空文字)に設定してください。
サンプルコード
※本現象は、データのレコード件数等の条件により、発生する場合としない場合があります。問題が発生しない場合にも、書き込み権限の設定をご確認いただくことをお勧めいたします。
このテンポラリファイルの格納先は、FileNameプロパティで、予め指定しておくことができます。こうすることで、IISのルートディレクトリ内のサブディレクトリや、Webアプリケーションのディレクトリに格納できるようになります。
下記のプログラムで示されるパス wrkPDF.FileNameの C:¥Temp に、NTFSファイルシステム セキュリティ設定ページから、実行時のユーザーに対して書き込み権限が無いときに問題となります。書き込み権限のあるパスをコードから設定してください。
このパスの設定の以外に、日本語フォントを利用する場合は、AcrobatVersionプロパティを必ず「DDACR40」(または 2)と指定し、SemiDelimitedNeverEmbedFontsプロパティを ""(空文字)に設定してください。
サンプルコード
Set rpt = New rptExport
Dim wrkPDF As New ActiveReportsPDFExport2.ARExportPDF
rpt.Run False
wrkPDF.AcrobatVersion = DDACR40
wrkPDF.FileName = "C:¥Temp"
wrkPDF.JPGQuality = 100
wrkPDF.OutputTOCAsBookmarks = False
wrkPDF.SemiDelimitedNeverEmbedFonts = ""
wrkPDF.ShowBookmarksInAcrobat = False
wrkPDF.ExportStream rpt.Pages, wrkArray
Dim wrkPDF As New ActiveReportsPDFExport2.ARExportPDF
rpt.Run False
wrkPDF.AcrobatVersion = DDACR40
wrkPDF.FileName = "C:¥Temp"
wrkPDF.JPGQuality = 100
wrkPDF.OutputTOCAsBookmarks = False
wrkPDF.SemiDelimitedNeverEmbedFonts = ""
wrkPDF.ShowBookmarksInAcrobat = False
wrkPDF.ExportStream rpt.Pages, wrkArray
関連情報
キーワード
問題 エクスポート Web
この文書は、以前は次のFAQ IDで公開されていました : 2905