JPEG画像を印刷する方法と注意点

このQ&Aのポイント
  • JPEG画像をブラウザ上で印刷する方法について説明します。JPEG画像の印刷ができない場合の解決策も紹介します。
  • Javaのサンプルコードを使用して、ボタンを追加してJPEG画像を印刷する方法を説明します。
  • 単純明快な方法でJPEG画像のみを印刷するための解説を提供します。
回答を見る
  • ベストアンサー

JPEG画像のみを印刷したいのですが・・・

度々質問します。 ブラウザに表示させたイメージ画像(JPEG)を印刷した所、印刷できま せんでした。 ちょうど他の方も印刷が出来ないと言うことで、ご質問されていまして、 参考になるURLにジャンプして色々見たのですが、正直よくわかりません。 本にもちょうど載っていたのですが、的外れな事が書かれているため、 参考にもなりません。 以下のソースは最初にA1.jpgを表示させ、その後「画像を変更」ボタンを 押すとB2.jpgに画像が変更されるものです。 やりたいのは、ボタンをもう一つ(印刷ボタン)追加して、そのボタンが 押された時に画像が印刷されるようにしたいんです。 基本的に画像のみを印刷したいと言う単純明快な形にしたいんです。 それで出来たらバカにでもわかるくらい簡単に書いていただけると助かります。 お手数ですがよろしくお願いします。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.io.*; import java.lang.*; public class Sample extends Applet { Button Henko; Image image; Color bgcolor; Font font; public void init() { setLayout(null); bgcolor = new Color(240,248,255); setBackground(bgcolor); setForeground(Color.black); font = new Font("Serif",Font.PLAIN,18); image = getImage(getDocumentBase(),"A1.jpg"); Henko = new Button("画像を変更"); Henko.setFont(font); Henko.setBounds(20,100,140,30); add(Henko); Henko.addActionListener(new Gazohenko()); } public void paint(Graphics g){ g.drawImage(image,150,150,this); } public class Gazohenko implements ActionListener{ public void actionPerformed(ActionEvent e){ image = getImage(getDocumentBase(), "B2.jpg"); repaint(); } } }

  • Java
  • 回答数3
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

>実行しても全く無反応です。 >何がいけないんでしょうか? >印刷のメソッドを記述したのに、印刷が出来ません。 とのことですが、どこまで上手く行って、どこで上手く行っていないのか位は分かりませんか? デバッガの出力とか、JavaConsoleとか。ついでに環境も教えてください。

sr20detk
質問者

お礼

色々やりましが、結局出来ませんでした。 やり方を変えて、ブラウザから印刷できるようJavaScriptでやることに しました。 色々ご迷惑をおかけしました。そしてありがとうございました。

sr20detk
質問者

補足

基本的に処理事態はうまく流れています。どこかで止まってはないみたいです。 メインのプログラムにはボタンが二つあります。「データ表示」と「印刷」です。 二つのボタンは押された後の処理はほぼ同じです。「データ表示」は取得した データと画像をフレームに表示する。「印刷」はデータ表示ボタンと同じく、 取得したデータと画像をフレームに表示させ、印刷し、その後フレームを閉じ ると言う流れです。 今まででもプログラム中にどこかいけない所があると、そこを基点にプログラ ムが一切動かないのですが、このプログラムはきちんと処理が流れます。 ただ印刷がされません。 つまり印刷ボタンを押し、フレームが一瞬表示され、その後フレームが閉じます。 その間の印刷と言うイベントが発生しません。 「if(printjob != null){」というIf文をコメントにして必ず印刷メソッドが 流れるようにしてもだめでした。 それでデバッグをやってみたのですが、今までやった事ないので、本を見な がらやっていたのですが、全く意味がわからず、何が動いているのかが見え ないです。 その為、どこがいけないのか?などの調査が出来ません。 とりあえず使い方をこれから色々探してみたいと思います。 それで以下のものはJAVAコンソールです。 一通り実行してみました。正直よく意味がわかりません。 これで何かわかるのでしょうか? ============================================== ? ヘルプ c クリア f ファイナライザの実行 g ガーベジ収集 m メモリ使用状況 q 終了 t スレッド一覧 list ============================================== f実行 終了しています... 完了 g実行 ガーベジを収集しています... 完了 t実行 重要性 5 AWT-EventQueue-0 重要性 5 AWT-Windows 重要性 5 main 重要性 6 thread applet-fuji.class 重要性 6 TaskManager notify thread 重要性 6 Global Task Manager Thread #0 重要性 6 Global Task Manager Thread #1 ※補足に書いたソースではSampleでしたが、実際記述している  プログラム名はfujiです。 環境ですが、的外れかもしれませんがとりあえず一通り書きます。 OS Win95 IE Ver5.5 JDK Ver1.3 開発ソフト 特に使用していません。エディターでプログラムを記述 お手数ですがよろしくお願いします。

その他の回答 (2)

回答No.2

ちょっと調べてみたら不可能ではないらしいです。 参考URLから「印刷 - print」を探してください。 http://java-house.etl.go.jp/ml/archive/j-h-b/019994.html が直接的かな。。。

参考URL:
http://java-house.etl.go.jp/ml/topics/
sr20detk
質問者

補足

教えていただいたURLにジャンプして、それと同じような感じで、 フレームの中にソースを記述しました。 それで無事コンパイルも出来ましたが、実行しても全く無反応です。 何がいけないんでしょうか? 印刷のメソッドを記述したのに、印刷が出来ません。 class Frame extends Frame{ public Frame(){ super("Print"); PrintJob printjob = getToolkit().getPrintJob(this,"Print", null); if(printjob != null){ Graphics g = printjob.getGraphics(); this.printAll(g); g.dispose(); printjob.end(); System.exit(0); } } public void paint(Graphics g){ g.drawImage(image,50,250,this); } }

回答No.1

そもそも、アプレットから(画像に限らず)印刷ってできるのでしょうかね? アプレットってセキュリティ面で「危険かもしれないものは禁止する」という方針をとっていたと思います。ローカルファイルにアクセスできないのもそのためです。アプレットがプリンタにアクセスできると、ひたすらデータを送り続けてマシンをアップアップさせるアプレットを作ることも可能になりそうなので、先の方針からすると禁止されていても不思議じゃないように思います。

関連するQ&A

  • getDocumentBase() でエラーがでます

    getDocumentBase() でエラーがでます 下のように書いているのですが getDocumentBase() でエラーがでて困っています 他のところは動いてて それに追加しました 何が原因なのでしょうか? import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class window { public static void main( String[] args ) { AppFrame f = new AppFrame(); image i = new image(); i.init(); f.setSize( 200, 200 ); f.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e) { System.exit(0); } } ); // f.show(); f.setVisible( true ); } } class image extends Applet { Image image; image() { } public void init() { image = getImage( getDocumentBase(), "image.jpg" ); } ...

  • JavaAppletのプログラム添削をお願いします

    初心者です。宜しくお願いします。 JAVA Appletで、クリックするたびに画像が変わるものを作りたいのですが、上手くいきません。 プログラムの添削をお願い致します。 JAVA Appletを利用し、画面をクリックするたびに画像が変わるアプリを作りたいのですが、上手くいきません。 ※コンパイルは通るのですが、実行しても何も表示されません。 [参考URL]http://www.geocities.jp/supermisosan/javastudy/mousechange.html この、画像を変えただけのものを作れればOKです。 以下、今私の書いたプログラム内容です。 書いたと言っても、コピペして部分部分を変えただけですが‥。 【click.java】 import java.applet.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class click extends JApplet implements MouseListener { Image siro,kiiro,aka2,img; int x=0; Image image[]=new Image[5]; Graphics g; public void init() { addMouseListener(this); image[0]=getImage(getDocumentBase(),getParameter("siro.gif")); image[1]=getImage(getDocumentBase(),getParameter("kiiro.gif")); image[2]=getImage(getDocumentBase(),getParameter("aka2.gif")); image[3]=getImage(getDocumentBase(),getParameter("aka2.gif")); image[4]=getImage(getDocumentBase(),getParameter("aka2.gif")); setBackground(Color.white); } public void paint(Graphics g) { g.drawImage(image[x],0,0,this); } public void mouseClicked(MouseEvent me) { x++; if(x==5) x=0; repaint(); } public void mouseEntered(MouseEvent me) { } public void mouseExited(MouseEvent me) { } public void mousePressed(MouseEvent me) { } public void mouseReleased(MouseEvent me) { } } 【click.html】 <html> <head> <title>test applet</title> </head> <body> <applet code="click.class" width=500 height=500> </applet> <hr> <a href="click.java"> source file </a> </body> </html> 何が足りないのでしょうか? 勉強不足ですみません、宜しくお願い致します!!

  • jpeg画像でアニメーションを作る

    jpeg画像10枚くらいをつかい、アニメーションを作りたく以下のようなプログラム(全部載せられませんでした)を組んでみました。しかし、画像読み込みにすごく時間がかかり、アニメーションという感じがしないほど、さっと画像が表示されて終わってしまいます。もっと、一枚一枚をゆっくり表示させたく画像読み込みの時間も短縮したいのですが、何か良い方法はありますでしょうか(ちなみに画像のキャンバスサイズは512×384です) import java.applet.*; import java.awt.*; import java.net.*; public class im2a extends Applet implements Runnable{ Image im[] = new Image[10]; URL url; String fn[]={"anime10.jpg","anime11.jpg","anime4.jpg","anime5.jpg",  "anime1.jpg","anime2.jpg","anime1.jpg","anime2.jpg",  "anime8.jpg","anime7.jpg"}; Thread th; MediaTracker mt = new MediaTracker(this); String ms =""; String s =""; int i=0; int j=0; int dt=100; int phase=2 ; boolean ok=false;   public void start(){ th =new Thread(this); th.start(); }    public void readImage(){ ms ="画像入力準備中"; repaint(); for(i=0;i<9;++i){ im[i]=getImage(getDocumentBase(),fn[i]); mt.addImage(im[i],i); ok=false; while(!ok){ try{ Thread.sleep(2000); } catch(InterruptedException ee) { } ok=mt.checkID(i,true); } ms="画像"+i+"読み込み終了"; repaint(); } }

  • appletの画像が表示されない

     画像を表示するappletを作ったんです。  コマンドのappletviewerでは確認出来るんですが、IEでは何故か表示されません。何故なんでしょう?  WINXP/IE6.0.2600です。  以下にコードを記述します。 import java.awt.*; import java.applet.*; public class test extends Applet {  Image img;  public void init() {   img = getImage(getDocumentBase(), "test.PNG");  }  public void paint(Graphics g) {   g.drawImage(img, 10, 10, this);  } }

    • ベストアンサー
    • Java
  • 【Java】画像表示が出来ない!

    Java初心者です。 Eclipseを使って、Javaアプレットでjpeg画像を表示させようとしたのですが、上手くいきません。表示したい画像をインポートして、このようなコードを書きました。 import java.applet.Applet; import java.awt.*; /* <applet code="クラス名.class" width="497" height="600"> <param name="img" value="img/test.jpg"> </applet>*/ public class クラス名 extends Applet { Image img; public void init() { img = getImage(getDocumentBase() , getParameter("/test.jpg")); } public void paint(Graphics g) { g.drawImage(img , 0 , 0 , this); } } Javaアプレットで実行しても、アプレットは真っ白なままです。GIF画像でも試してみましたが、同じく失敗でした。他のJavaアプレットのプログラム(図形を表示したり)は成功したので、私のパソコンのJavaは問題ないと思います。回答よろしくお願いします。

    • ベストアンサー
    • Java
  • イメージの表示に関して教えてください。

    画像を表示するアプレットです。 ボタンをクリックすると、二つの画像を交互に変換して、表示するプログラムを作りたいのですが、よく出来ません。 どうすれば、画像を変換できますか?また、「この部分はこうした方がいい」という部分があれば教えてください。 どうか、よろしくお願いします。 (スペースが表示されない・・・(^^ゞ) ***********************************************ImageDemo.java********* import java.awt.*; import java.applet.*; import java.awt.event.*; //<applet code=ImageDemo.class width=470 height=623></applet> public class ImageDemo extends Applet{ View view; Image image,image2; Panel panel_left,panel_right; Button buttonChange; boolean flag; public void init(){ flag = true; image = getImage(getDocumentBase(),"nagasaku.jpg"); image2 = getImage(getDocumentBase(),"kawamura.jpg"); view = new View(image); buttonChange = new Button("Button Change"); buttonChange.addActionListener(new myActionListener()); add(view); add(buttonChange); } class myActionListener implements ActionListener{ public void actionPerformed(ActionEvent ae){ Object obj = ae.getSource(); if(obj == buttonChange){ if(flag){ view = new View(image2); flag = false; } if(!flag){ view = new View(image); flag = true; } } } } } //////////////////////////////////////////////// class View extends Canvas{ Image image; View(Image image){ this.image = image; setSize(358,623); } public void paint(Graphics g){ g.drawImage(image,0,0,358,623,this); } }

    • ベストアンサー
    • Java
  • 画像表示アプレットプログラムについて

    Javaのプログラムを勉強中です。 javaを理解するために下記のプログラム(zukei.java)を作成しました。 このプログラムを実行(appletviewer zukei.java)すると エラーにはなりませんが、(3)の行により画像("b.jpg")がすぐには表示されません。表示されたWindowにほかのWindowをいったんのせてから動かすと(3)行により画像"b.jpg"が表示されます。 (1)(2)の行は最初からうまく動作して表示されます。 もちろん(3)のappletをthisにするとうまく動作します。 理由がわかりません。 どなたかご教授ください。 プログラム zukei.class *<APPLET CODE="zukei.class" WIDTH=500 HEIGHT=500></APPLET> */ import java.applet.*; import java.awt.Graphics; import java.awt.*; public class zukei extends Applet { Applet applet; Image myimage; int iKai; public zukei(){ applet = this.applet; } public zukei(Applet applet) { this.applet = applet; } public void init(){ iKai = 0; myimage = getImage(getDocumentBase(),"b.jpg"); } public void paint(Graphics g) { kaku(); //(1) g.drawArc(100,150,50,50,0,360); //(2) g.drawImage(myimage,10,300,180,180,applet); //(3) } public void kaku(){ System.out.println("ABC" + iKai++); } }

  • JAVAの文法について教えてください。

    JAVAを学習しはじめたばかりの初心者です。 下記のプログラムに関してわからないので教えてください。 下記はtest.gif画像を表示するプログラムなのですが、 イメージを表示するために import java.awt.Graphicsをインポートして、 Image im でオブジェクトを宣言するのはわかるのですが、 通常はこの後に im = new Image() のようにインスタンス化する必要があると思うのですが、 このプログラムにはありません。 なぜ不要なのでしょうか? ********************** import java.applet.Applet; import java.awt.Graphics; import java.awt.Image; public class MyImage extends Applet{ Image im; public void init(){ im = getImage( getDocumentBase(), "test/test.gif" ); } public void paint(Graphics g){ g.drawImage( im ,10,10, this); } }

    • ベストアンサー
    • Java
  • フレームにJPEGを表示させたい

    JAVAアプレットでフレームを作成しました。 そこにJPEGの画像を表示させようと思い、下記のようにしました。 class TestFrame extends Frame { Image image; TestFrame(String title) { super(title); setLayout(null); image = getImage(getDocumentBase(), "A1.jpg"); } public void paint(Graphics g){ g.drawImage(image,300,300,this); } } しかし、上記をコンパイルすると 「image = getImage(getDocumentBase(), "A1.jpg");」の所でコンパ イルエラーが発生しました。 色々調べた所「public URL getDocumentBase()ドキュメントの URL を返します。戻り値:アプレットを含んでいるドキュメントの URL」 と言うことでした。 つまりgetDocumentBaseが使えないみたいです。 ではどうやってフレームにJPEGの画像を表示させればいいのでしょうか?

    • ベストアンサー
    • Java
  • 画像を表示させるプログラム

    こんばんわ。 現在、Javaで画像を表示させるアプレットを作っているのですが、画像が表示されません。 書いたソースは以下です。 import java.applet.Applet; import java.awt.*; /* <applet code="Panel.class" width="497" height="600"> </applet> */ public class Panel extends Applet { Image data; public void init() { data = getImage(getDocumentBase(),"2-1.gif"); } public void paint(Graphics g) { g.drawImage(data, 0, 0, data.getWidth(this), data.getHeight(this), this); } } 2-1.gifという画像ファイルを表示させたいと思っています。画像ファイルはソースファイルと同じディレクトリにあります。appletviewerで実行しているのですが画像がさっぱり表示されません。 SDKのバージョンは1.5を使っています。 お手数おかけしますが、ご教授の程よろしくおねがいします。

    • ベストアンサー
    • Java