- PR -

Java Aplication で、PDF又はPSファイルの印刷について

1
投稿者投稿内容
かつや
ベテラン
会議室デビュー日: 2004/01/19
投稿数: 70
投稿日時: 2004-11-22 14:26
Java アプリケーションで、PDF又はPSファイルを印刷したいと思います。
プリンターがサポートしてる機能は次のPGで調べてみました。

DocFlavor[] myFlavors = myDefService.getSupportedDocFlavors();
loop = myFlavors.length;
DocFlavor flavor;
for (int i = 0; i < myFlavors.length; i++) {
 flavor = myFlavors[i];
 System.out.println("toString: " + flavor.toString());
}

----------------------- 実行結果 ---------------------------
toString: image/gif; class="[B"
toString: image/gif; class="java.io.InputStream"
toString: image/gif; class="java.net.URL"
toString: image/jpeg; class="[B"
toString: image/jpeg; class="java.io.InputStream"
toString: image/jpeg; class="java.net.URL"
toString: image/png; class="[B"
toString: image/png; class="java.io.InputStream"
toString: image/png; class="java.net.URL"
toString: application/x-java-jvm-local-objectref; class="java.awt.print.Pageable"
toString: application/x-java-jvm-local-objectref; class="java.awt.print.Printable"
toString: application/octet-stream; class="[B"
toString: application/octet-stream; class="java.net.URL"
toString: application/octet-stream; class="java.io.InputStream"
---------------------------------------------------------------

上記の環境から、PDF又はPSファイルを印刷するには、
どのようにすれば良いか行き詰ってます。
現状は、下記のPGを作ってます。
エラー、例外は発生してないのですが、印刷されないです。

public void doPrint() throws FileNotFoundException, PrintException, Exception {
 InputStream stream = new FileInputStream("******.pdf");
 DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
 Doc doc = new SimpleDoc(stream, flavor, null);
 PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
 aset.add(new Copies(1)); 
 aset.add(MediaSizeName.ISO_A4);
 aset.add(Sides.ONE_SIDED);
 PrintService service = PrintServiceLookup.lookupDefaultPrintService();
 DocPrintJob job = service.createPrintJob();
 job.print(doc, aset);
}

一応最後までPGは流れるのですが、印刷されてこないです。
どこが悪いのか調査してますが、いまだにわからないです。
ご存知の方、ご指摘いただけないでしょうか?
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-11-22 14:45
DocFlavor一覧をみていただけると分かるとおり、あなたが使用しているJREの
Print Serviceの実装では、PS、PDF印刷に対応していません。

Print Service APIは、統一したAPIで印刷できるようにしよう、という要求か
ら出来たものですが、Sunが提供しているデフォルトの実装は、全てのフォーマ
ットに対して提供されているわけではないです。
定数は切られているのですけれど。

どこかからPDF印刷用Print Serviceプロバイダ実装を探す(あるかな?)か、ほか
の方法を探すか、ということになると思います。
たけし
会議室デビュー日: 2004/11/11
投稿数: 2
お住まい・勤務地: 東京
投稿日時: 2004-11-27 00:44
現在開発中のアプリでは、java.lang.Runtime クラスのメソッド
public Process exec(String command)で Adobe Readerを起動しています。

たとえば、次のフォーラムでも同じトピックを扱っています。(英語)
http://forum.java.sun.com/thread.jspa?forumID=4&messageID=2742166&threadID=293692

コマンドラインから次のコマンドで任意のプリンターからの直接出力ができます。
C:\Program Files\Adobe\\Acrobat 6.0\Reader\AcroRd32.exe /t ファイル名 プリンター名

ただし、この機能がAdobeによって正式サポートされているかはについてはちょっとわかりません。

情報をお持ちの方いらっしゃいますか?

1

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