ミスチルの大名曲の数々が配信決定!! 31日間無料!!【PR】

Windows2000 or WIndowsXP
IIS5.0
ASP(言語はVBscrptを使用)

今あるボタンを押すと、PDFファイルを作成し、
そのできたファイルへのリンクを画面に表示
するようにしています。
そのリンクをクリックするとAcrobatReaderに
よってプレビューが開かれ、そこで印刷ボタンを
押すと印刷できるという仕組みになっています。

これからはそうではなくて、あるボタンを押すと
PDFファイルを作成し、データをプリンタに送って?
印刷できるようにしたいと考えています。

(1)そんなことは技術的に可能でしょうか?
(2)また、印刷する際にどのプリンタから出力される
かをプログラムで指定することはできますでしょうか?
指定しなければ、通常使うプリンタから出る?
(3)印刷する際に、印刷設定ダイアログ(プリンタ選択画面)を出現させることは可能でしょうか?

大変困っています。どなたかヒントだけでも
(できればサンプルコードも)よいので
教えて下さいませんでしょうか?

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

サーバー(IIS)側からプリンタに出力するのであれば


可能と思われます。
一番簡単なのはAcrobatReaderのコマンドラインを使用
する方法です。
イメージでいえば
1.クライアントから印刷指示
2.サーバー側でPDF作成
3.サーバー側でAcrobatReaderのコマンドラインに
  2.のPDFを渡し印刷する

AcrobatReaderのコマンドラインには印刷指定やプリンタ
指定などがあるのやりたいことはできると思います。
但し、サーバーが参加しているネットワーク上のプリンタ
のみが対象になりますが・・・

AcrobatReaderのコマンドラインについては
1.http://www.adobe.co.jp/partners/main.htmlへアクセス
2.「ASNディベロッパープログラム FAQ 」をクリック
3.文書番号3821の「Acrobat 6.0 SDK : Acrobat Developer FAQ 日本語版」をクリック
4.DeveloperFAQ.pdfを開く
5.一番下の「Windows 上のコマンドラインからAcrobat およびAdobe Reader を使用」を選択
で参照してください。

どうしてもクライアントで行いたい場合は
ActiveX等を作成する必要がありますが、証明書を
申請したりしないとセキュリティ上難しいので
お勧めできません。

お役に立てれば幸いです。
    • good
    • 0
この回答へのお礼

ありがとうございます!
コマンドラインについての情報大変助かります!
感謝です!!

けれどクライアントで印刷したいのです・・。
WEBでサーバー上にあるPDFファイルにアクセス
してそれをクライアントのアクロバットリーダー
から直接出したいのですが・・

クライアントのアクロバットリーダーのコマンドライン
に渡すことはできないのでしょうか・・・

お礼日時:2004/09/02 14:23

 印刷というローカルプログラムの実行はブラウザ(ここではIEを想定しますが)のセキュリティの制限事項に触れる問題ですから、セキュリティレベルを最低に下げても、完全に連続で実行することができません。

もちろん、プリンタの制御もできません。
実現可能な手段としては
(1)ブラウザによるPDFファイルのダウンロードを監視するプログラムのサービスとして動作させておき、ダウンロードと同時に印刷を実行する。
(2)ブラウザに頼らない独自のダウンロード&印刷プログラムを開発する。

あたりになると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
難しそうですね・・。

お礼日時:2004/08/20 22:39

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPDFファイルを開かずに印刷したい

幾つものPDFファイルを印刷したいのですが、
できればAdobeReaderを起動させずに印刷したいです。

ファイルのアイコン上で右クリック→印刷でも可能ですが、
数が多くなると、この作業も大変です。
そこでVisualBasic2008ExpressEditionを使って、
簡単なシステムを作りたいと考えています。

しかし、PDFを開かずに印刷する方法が、どうしてもわかりません。
ネット検索、教えてgoo内の検索でもヒットせず途方に暮れています。
参考になるホームページや書籍がありましたら教えてください。
「こんな手法があるよ」というものでも構いません。

宜しくお願いします。

Aベストアンサー

PDFを開く際にACRORD32.exeに対して以下のコマンドラインを指定してください。

ACRORD32.EXE /s /l /p /h [PDFのパス]

コマンドラインの解説は参照URLを。

参考URL:http://scripting.cocolog-nifty.com/blog/2007/07/adobe_reader_81_e41e.html

QPHPでPDFファイルの直接印刷

HTML、PHP、JavascriptでWeb画面上から印刷枚数を指定し、Web画面上の「印刷」ボタンを押すと、直接、特定のファイルパスのPDFファイルを印刷できるようにしたいと思っています。
かなり検索したのですが、それを実現できるようなものが見当たりません。
どうかご教授ください。よろしくお願い致します。

Aベストアンサー

PXDocについて、
所詮はXMLなので、PHPで、SVGの記述にそったXMLを出力すればよいです。ブラウザ側には、pxd拡張子で投げるため、
PHPで、header指定のコードを記述する必要はありそうです。

header("Content-type: application/pxd");

PXDocのサイト(参考URL)にサンプルとリファレンスがあります。
.pdx という拡張子がありますが、単なるXMLファイル(テキストファイル)なので、メモ帳なり秀丸なりで開けば、ああなるほどとわかると思います。

複雑な帳票で、テンプレートを作り、部分的に動的な値を埋め込む場合は、テンプレートをExcelとかOpenOffice.orgで作ってSVG保存したものを使えばよいと思います。

※SVG(つまり実体はXML)はテキストファイルなので、
ユーザが内容を書き換えることが可能です。(書き換えようと思えばですが)

PDFのように、編集不可にする手段はないのでご注意ください。

参考URL:http://www.pxdoc.com/sample/index.htm

PXDocについて、
所詮はXMLなので、PHPで、SVGの記述にそったXMLを出力すればよいです。ブラウザ側には、pxd拡張子で投げるため、
PHPで、header指定のコードを記述する必要はありそうです。

header("Content-type: application/pxd");

PXDocのサイト(参考URL)にサンプルとリファレンスがあります。
.pdx という拡張子がありますが、単なるXMLファイル(テキストファイル)なので、メモ帳なり秀丸なりで開けば、ああなるほどとわかると思います。

複雑な帳票で、テンプレートを作り、部分的に動的な値...続きを読む

QPDFファイルを開き、印刷し、閉じるマクロ

Excel 2003 VBAにて、
PDFファイルを開き、印刷し、閉じるマクロを作りたいと思っています。

Dim AA, AAA

AA = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe C:\Scan\20131101160734050_001.pdf"
AAA = Shell(AA, vbNormalFocus)

にて、PDFファイルを開くことは出来ました。
このPDFファイルを、「印刷し、閉じる」ためには、
このPDFファイルを指定する必要があると思いますが、
その構文が判りません。
知っている方、教えて下さい。

Aベストアンサー

#3です。
WShell.Execを使うと閉じる事ができる様ですが、色々と気難しくて苦労しました。
まず、なぜかAdobe Reader/Acrobatのフルパスを与えないと、ファイルがみつからないとゴネます。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub test()
printPdf2 GetDesktopPath & "\test.pdf", "DocuWorks Printer", "DocuWorks Printer Driver"
' printPdf2 GetDesktopPath & "\test.pdf"
End Sub

Sub printPdf2(pdfDocument As String, Optional printerName As Variant, Optional printerDriver As Variant)
Dim cmdLine As String
Dim WShell As Object
Dim oExec As Object
'ここは調整の必要がありそう
Const waitTime As Long = 1000
'Windows7 Home 64bitの場合です
Const pgmFullPath As String = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"

Set WShell = CreateObject("WScript.Shell")
If IsMissing(printerName) Or IsMissing(printerDriver) Then
cmdLine = "pgmFullPath /n /s /o /h /t ""pdfFullPath"""
cmdLine = Replace(cmdLine, "pgmFullPath", pgmFullPath)
cmdLine = Replace(cmdLine, "pdfFullPath", pdfDocument)
Else
cmdLine = "pgmFullPath /n /s /o /h /t ""pdfFullPath"" ""printerName"" ""printerDriver"""
cmdLine = Replace(cmdLine, "pgmFullPath", pgmFullPath)
cmdLine = Replace(cmdLine, "pdfFullPath", pdfDocument)
cmdLine = Replace(cmdLine, "printerName", printerName)
cmdLine = Replace(cmdLine, "printeDriver", printerDriver)
End If
Debug.Print cmdLine
Set oExec = WShell.exec(cmdLine)
Sleep waitTime
'Windows7Home/64bit環境ではここで実行時エラーが出るので無理矢理先に進めていますが
'Adobe Readerは閉じられる様です
On Error Resume Next
oExec.Terminate
Set WShell = Nothing
End Sub

Private Function GetDesktopPath() As String
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("Wscript.Shell")
GetDesktopPath = wScriptHost.SpecialFolders("Desktop")
Set wScriptHost = Nothing
End Function

Terminateで原因不明のエラーが出るのでWebを漁っいて下記をみつけました。64bit環境でエラーが出るのはこれも関係しているのでしょうか?少々無理をしている様なので、ご使用時はご注意下さい。
Terminate メソッドは最後の手段としてのみ使用します。これは、アプリケーションによっては適切にクリーンアップできない場合があるためです。通常は、プロセスを途中で中断せず、プロセス自身で実行を終了させるようにします。Terminate メソッドは WM_CLOSE メッセージを使ってプロセスを終了しようとします。これで終了できない場合は、通常のシャットダウン手順を実行せずに、プロセスを強制終了します。
http://msdn.microsoft.com/ja-jp/library/cc364387.aspx

#3です。
WShell.Execを使うと閉じる事ができる様ですが、色々と気難しくて苦労しました。
まず、なぜかAdobe Reader/Acrobatのフルパスを与えないと、ファイルがみつからないとゴネます。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub test()
printPdf2 GetDesktopPath & "\test.pdf", "DocuWorks Printer", "DocuWorks Printer Driver"
' printPdf2 GetDesktopPath & "\test.pdf"
End Sub

Sub printPdf2(pdfDocument As String, Optional printerName As Variant, Optional prin...続きを読む

QVBSでExcelファイル印刷時のプリンタ指定

VBSでExcelファイルを印刷する際、場合によってはプリンタを変えて印刷したいのですが、プリンタの指定をどのようにコーディングすれば良いのか分かりません。

印刷時のソースは下記のとおりです。

Set Excel = CreateObject("Excel.Application")
Set objWkBk = Excel.Workbooks.Open("C:\Test.xls", , False)

Excel.ActiveWindow.SelectedSheets.PrintOut()

Excel.DisplayAlerts = False
Excel.quit()
objWkBk.close
Set objWkBk = Nothing
Set Excel = Nothing


上記コーディングに下記(1)~(4)を追加または、修正して試してみましたが、エラーとなってしまいます。

(1)Application.ActivePrinter = "\\NAS0013W\Kyocera LS-6700SKX2"
(2)Excel.ActivePrinter = "\\NAS0013W\Kyocera LS-6700SKX2"
(3)Excel.ActiveWindow.SelectedSheets.PrintOut("\\NAS0013W\Kyocera LS-6700SKX2")
(4)Excel.ActiveWindow.SelectedSheets.PrintOut(ActivePrinter = "\\NAS0013W\Kyocera LS-6700SKX2")

そもそも、vbsからはプリンタの指定はできないのでしょうか?

ご教授いただきたく、よろしくお願いいたします。

VBSでExcelファイルを印刷する際、場合によってはプリンタを変えて印刷したいのですが、プリンタの指定をどのようにコーディングすれば良いのか分かりません。

印刷時のソースは下記のとおりです。

Set Excel = CreateObject("Excel.Application")
Set objWkBk = Excel.Workbooks.Open("C:\Test.xls", , False)

Excel.ActiveWindow.SelectedSheets.PrintOut()

Excel.DisplayAlerts = False
Excel.quit()
objWkBk.close
Set objWkBk = Nothing
Set Excel = Nothing


上記コーディングに下記(1)~(4)を追加また...続きを読む

Aベストアンサー

プリンターを切り替えるには手作業でプリンターを変更します。
その後イミディエイトウィンドウで
?application.activeprinter + Enter
で PDFCreator on Ne00: みたいのが返ってきますので
これを指定します。
excel.activeprinter = "PDFCreator on Ne00:" のように。

または変更は印刷時に行うようにして
excel.ActiveWindow.SelectedSheets.PrintOut activeprinter:="PDFCreator"
とすると ポート指定部分は無くても機能するようですね。

QVBScriptでのWord印刷

お世話になります。

VBScriptよりWordを開いて印刷を行うプログラムを作成しているのですが、
「印刷中です。Wordを終了すると印刷待ちのすべてのジョブがキャンセルされます。Wordを終了しますか?」
が表示されてしまいます。
印刷命令を発行してファイルを閉じる際に表示されていると思いますが、このアラートを表示しない方法はあるのでしょうか?
どなたかご存知でしたらお教え下さい。

宜しくお願い致します。

実行環境
OS   Win2000
Office 2000
プログラム(一部抜粋)
Set objWord = CreateObject("Word.Application")
objWord.Documents.Open(ファイルパス)
Set objWordDoc = objWord.ActiveDocument
objWordDoc.PrintOut
objWordDoc.Close

Aベストアンサー

試してはいませんが、
PrintOutメソッドのBackgroundパラメータの値をFalseにしてみてはいかがでしょうか?
フォアグラウンドで実行すればPrintOutメソッドの処理が終わるまで次の処理に移らないと思いますのでアラートも表示されないのではないでしょうか?

参考URL:http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/dv_wrcore/html/wrtskhowtosenddocumentstoprinter.asp

Qコマンドプロンプトで印刷実行

コマンドプロンプトでテキストファイルを印刷したいのですが、正常に動作しません。
記述は下記の通りです。
直結してあるレーザープリンタを、LPT1ポートで接続しています。
print /d:LPT1: TEST.TXT
実行したところ、プリンタの動作音が一瞬鳴るのですが、紙は出力されません。
どうかよろしくお願いします。

Aベストアンサー

ノートパッドを使ってこんなのはどうでしょうか。

   notepad.exe /pt "TEST.TXT" "LPT1"

下記のページに載っていました。

参考URL:http://www.fpcu.jp/dosvcmd/bbs/log/print/4-1354.html

Qフォルダ内のエクセル文書をすべて印刷したいデス

1つのフォルダに ファイルが100個くらいあり それぞれ 1~3シートのBookになています。
すべてのシートを印刷したいのですが 毎回 ファイルを開いてシートを選択しないとできません。

一括で処理する方法をご存知の方 教えて頂けないでしょうか。
(>_<)よろしくお願いしますぅぅ

Aベストアンサー

>まだ使い方が分かりません。。

エクセルを開いて、[Alt] + [F11] でマクロを編集する画面(VBE)が現れます。
その画面で、[挿入] - [標準モジュール] を選択すると、マクロを記述する画面が現れます。

そこに、Sub ~ End Sub までの行をコピーして貼り付けてください。

一行目の「Sub test()」の "test" の文字は任意に書き換えできます。「一括印刷」などの解りやすい名前にしても良いでしょう。

「Fol = "C:\Tmp"」の "" の内側には、ファイルが入っているフォルダのフルパスを書き込んでください。

実行するには、マクロ文中にカーソルを置いて、VBEの[|>](横向き三角ボタン)をクリックすれば実行できます。
若しくは、エクセルの画面で [Alt] + [F8] で実行するマクロを選択する画面が現れます。

まずは、適当なフォルダを作成し、印刷対象ファイルを数個置いて、そのフォルダを対象にして実行テストをして見てください。

参考URL:http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page03.htm

>まだ使い方が分かりません。。

エクセルを開いて、[Alt] + [F11] でマクロを編集する画面(VBE)が現れます。
その画面で、[挿入] - [標準モジュール] を選択すると、マクロを記述する画面が現れます。

そこに、Sub ~ End Sub までの行をコピーして貼り付けてください。

一行目の「Sub test()」の "test" の文字は任意に書き換えできます。「一括印刷」などの解りやすい名前にしても良いでしょう。

「Fol = "C:\Tmp"」の "" の内側には、ファイルが入っているフォルダのフルパスを書き込んで...続きを読む

QPHPでPDFの自動印刷

PHPでPDFを作成し、PDFがブラウザで表示されたら自動印刷するようにしようと思っています。

FPDFを使い、用紙サイズA4・用紙方向縦に設定したPDFを生成することができました。
さらにFPDFのphpファイルを拡張して、PDFファイルにAcrobat JavaScriptを埋め込めるようにしました。
プリンタを指定してAdobe Readerで自動印刷することができました。

後は給紙を用紙トレイにできればよいのですが、方法がわかりません。

Acrobat JavaScriptでできるのでしょうか?FPDFでできるのでしょうか?
それとも給紙方法の制御は無理なのでしょうか?

Aベストアンサー

Acrobatのjavascriptはプリンタを選べるのでしょうか?
もし選べるなら同じプリンタドライバをもう一個いれて、
デフォルトの給紙を用紙トレイにしておけばよいのでは?
もはやPHPの話ではないですが・・・。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QVBSでプリンターの用紙サイズを変更したい。

VBSでプリンターの用紙サイズを変更したいのですが、
Win32_PrinterConfigurationで現在のサイズの取得までは
出来たのですが、変更ができません。

出来れば用紙の種類も変更したいと思います。
よろしくお願いします。

Aベストアンサー

No1の疑問を、よく飲み込んでから、

http://technet.microsoft.com/ja-jp/subscriptions/system.drawing.printing.pagesettings.papersize

をみるとヒントがあるかと思います。既定値は、論理プリンターごとに決まっています。逆に言えば、設定した用紙サイズごとに論理プリンターを作成すれば済む話です(スクリプトで印刷したい論理プリンターを選ぶだけ<-A3と言う論理プリンターを作成し、デフォルトをA3に設定、WScriptオブジェクトでそれに印刷を実行)。

これがもっとも単純な解決方法で、次にアクティブに論理プリンターを作成したり、削除したりすればいいだけです。

どのレベルで行うかは、あなたの力次第です。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング