出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

[1229] ASPからサーバ上でPDF化する方法(暫定版)
投稿者:Tomitomiさん 2001/12/10 18:26:35
こんにちは、Tomitomiです。
例の物です。とりあえず実現可能です。DLLは無理ですが。w
長文になります。また読みにくい文章ですみません。

ちょっと説明
「Acrobat PDFWriter」をインストールして、Excel等を開きプリンターを「Acrobat PDFWriter」にすると、
保存先が表示され、OKすると、PDFファイルが出来上がり、「Acrobat Reader」が立ち上がり表示する。

で、実際VB等で使用する場合は、ファイル名ダイアログと「Acrobat Reader」が立ち上がるのを抑制したいので、
以下のようにする。

ファイル名ダイアログを抑制するには、
「__pdf.INI」に

PDFFILENAME=作成するPDFファイルまでのパス
bDocInfo=0

*PDFFILENAMEはPDFファイル作成毎に書き換わるのでVBにて毎回iniファイルを書き換える。
とする。
「Acrobat Reader」が立ち上がるのを抑制するには、
「__pdf.INI」の
「bExecViewer=1」を「bExecViewer=0」とする。

でOK.

後は、これでDLLを作ればできるかな?と思いきや。。最後の最後でダメでした。

1.ASPにてサーバ側で印刷するには、レジストリを書き換える必要がある。*これは試してOKでした。
  VBでは、動いてなぜASPではだめなの?と思うかもしれませんが、ASPでExcel等のオブジェクトで印刷する場合、
  権限がsystemになるそうです。なのでレジストリのsystem領域にプリンタを追加してあげるのです。。

2.普通のプリンターは上記設定により印刷できるが、PDFWriterではエラーになる。
 ↑これでダメでした。いろいろ調べましたが、権限関係で苦労するぽいので早々にあきらめました。


解決策として、レジストリ書き換えるのも難儀なので、VBで以下のソースを元にexeを作る。
それを、Basp21等を利用し、ASPからコールする。まだ試してませんが、これが一番楽そうです。

注意点
ダイアログ抑制関係で使う、「__pdf.INI」ですが、PDFWriter4.Xではレジストをいじらなければ、抑制できないそうです。
僕は、PDFWriter4.Xは持ってないので、PDFWriter4.Xを使う場合はご自分でお調べください。w

□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
必要なもの・こと
Acrobat PDFWriter 3.03

参照設定にて、「Microsoft Excel X.X Object Library」にチェックする。
*「X.X」は、バージョンです。

「__pdf.INI」を、書き換える。
*私の環境では、「C:\WINNT\system32\spool\drivers\w32x86\2\__pdf.INI」

iniファイルの「bExecViewer=1」を「bExecViewer=0」とする。
↑これにより、「Acrobat Reader」がPDFファイル作成後、「Acrobat Reader」が立ち上がるのを抑制できる。
□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■

呼び出し部(フォームなど)==============================================================================
Call sSet_ini("C:\WINNT\system32\spool\drivers\w32x86\2\__pdf.INI", "E:\test.pdf")
Call ExcelPrint("E:\test.xls")


'ファンクション部(標準モジュールなど)=================================================================
'iniファイル書き込み用
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpString As String, _
ByVal lpFileName As String) As Long

'iniファイルを書き込む
Function sSet_ini(ByVal sIniFileName As String, ByVal sPDFFileName As String) As Long
On Error GoTo ErrNanoda
'ダイアログを非表示にする
lRet = WritePrivateProfileString("Acrobat PDFWriter", "PDFFILENAME", sPDFFileName, sIniFileName)
'作成者名ダイアログを非表示にする
lRet = WritePrivateProfileString("Acrobat PDFWriter", "bDocInfo", "0", sIniFileName)
Exit Function
ErrNanoda:

sSet_ini = Err.Number & ":" & vbCrLf & Err.LastDllError & vbCrLf & Err.Description
End Function

'Excelファイルを印刷する。 By PDF
Public Function ExcelPrint(sFilePath As String) As String
Dim ErrFLAG As Integer
Dim EXF As Excel.Application
Dim ObjBook As Excel.Workbook

On Error GoTo ErrNanoda

ErrFLAG = 1
Set EXF = CreateObject("Excel.Application")
ErrFLAG = 2
Set ObjBook = EXF.Workbooks.Open(sFilePath)
ErrFLAG = 3
ObjBook.Application.Visible = False
ObjBook.Application.DisplayAlerts = False
ErrFLAG = 4
EXF.Sheets.PrintOut
ErrFLAG = 5
ObjBook.Close False
EXF.Application.Quit
ErrFLAG = 6
Set ObjBook = Nothing
Set EXF = Nothing

ExcelPrint = sFilePath

Exit Function
ErrNanoda:
ObjBook.Close False
Set ObjBook = Nothing
Set EXF = Nothing
ExcelPrint = Err.Number & ":" & "<BR>" & Err.LastDllError & "<BR>" & Err.Description & "<BR>ErrFlag:" & ErrFLAG
End Function

ASPからサーバ上でPDF化する方法   杉本さん [2001/12/03 17:53:58] [1181]
  Re:ASPからサーバ上でPDF化する方法   Tomitomiさん [2001/12/03 18:47:36] [1183]
    Re:ASPからサーバ上でPDF化する方法   杉本さん [2001/12/04 13:01:16] [1189]
      Re:ASPからサーバ上でPDF化する方法   Tomitomiさん [2001/12/04 13:39:22] [1190]
        Re:ASPからサーバ上でPDF化する方法   杉本さん [2001/12/04 18:50:41] [1200]
          Re:ASPからサーバ上でPDF化する方法   Tomitomiさん [2001/12/05 10:39:55] [1205]
            機械翻訳   北岳さん [2001/12/05 11:37:04] [1208]
              Re:機械翻訳   杉本さん [2001/12/05 12:49:40] [1211]
                Re:機械翻訳   Tomitomiさん [2001/12/05 13:07:52] [1213]
                  機械翻訳・新発見   北岳さん [2001/12/05 14:48:20] [1214]
            Re:ASPからサーバ上でPDF化する方法   杉本さん [2001/12/05 12:47:54] [1210]
              Re:ASPからサーバ上でPDF化する方法   Tomitomiさん [2001/12/05 13:06:23] [1212]
                ADOBE Acrobat PDF Reader/Writer   北岳さん [2001/12/06 9:59:02] [1215]
  光が見えてきましたw   Tomitomiさん [2001/12/06 16:54:20] [1217]
  Acrbat 5.0 SDKを使ってみました   杉本さん [2001/12/07 15:56:12] [1224]
    Re:Acrbat 5.0 SDKを使ってみました   Tomitomiさん [2001/12/07 16:16:09] [1226]
  ASPからサーバ上でPDF化する方法(暫定版)   Tomitomiさん [2001/12/10 18:26:35] [1229]


TreeBBS For ASP V.0.1.3
Program By YasNet