- ベストアンサー
JavaにHTMLを代入。力を貸してください。
文章を縦書きでに変換するソフトを作っています。 横書きファイル→変換ソフト→縦書きファイル(変換後は拡張子がHTML)になるようにしたいです。 ここまでは作れましたがJava中にHTMLを入れることはできるのでしょうか? import java.awt.*; // file.java filedialog(black) import java.awt.event.*; import java.io.*; public class file { public static void main(String [] args) { fra f = new fra("Dialogs"); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);}}); } } class fra extends Frame implements ActionListener { int i,j,k; MenuBar mb; Menu m1,m2; MenuItem mi1,mi2; Label lab; FileDialog dialog; String fn; byte ba[]=new byte[5000], da[]=new byte[10000]; fra(String s) { super(s); setSize(200,200); show(); lab = new Label("File contents area"); setLayout(new GridLayout(1, 1)); mb = new MenuBar(); add(lab); m1 = new Menu("File"); mi1 = new MenuItem("Open"); m1.add(mi1); mi1.addActionListener(this); mi2 = new MenuItem("Exit"); m1.add(mi2); mi2.addActionListener(this); mb.add(m1); dialog = new FileDialog(this, "File Dialog"); m2 = new Menu("Help"); mb.add(m2); setMenuBar(mb); } public void actionPerformed(ActionEvent e){ if(e.getSource() == mi1){ dialog.setVisible(true); fn=dialog.getFile(); lab.setText("You chose " + fn); info(fn); int n1=fis(fn, ba); for(i=0;i<n1;i++)da[i]=ba[i]; ★ ★ ★ ★ fos("a0.html", da ,n1); } if(e.getSource() == mi2)System.exit(0); } void info(String s) { File f = new File(s); System.out.println("================== File information ================="); System.out.print("File: "+f.getName() + (f.isFile() ? " is a file" : " is a named pipe or directory")); System.out.println(" Size: " + f.length()); System.out.println("Path: "+f.getPath()+" " + f.getAbsolutePath()); System.out.print("File was last modified: " + f.lastModified()); System.out.println(f.exists() ? " File exists" : " File does not exist"); System.out.print(f.canRead() ? "File can be read" : "File cannot be read"); System.out.print(f.canWrite() ? " File can be written" : " File cannot be written"); System.out.println(f.isDirectory() ? " File is a directory" : " File is not a directory"); } int fis (String s, byte ba[]) { int n1=0; System.out.println("=================== FileInputStream ================="); try{ FileInputStream f = new FileInputStream(s); System.out.println("File input stream size : " + f.available()); n1=f.read(ba); System.out.println("file length="+n1); System.out.println(new String(ba,0,n1)); f.close();} catch (IOException e){System.out.println(e);} System.out.println("FileInputStream size n1="+n1); return n1;} void fos(String s2, byte da[], int n2) {; System.out.println("==================FileOutputSream ==================="); try {FileOutputStream g = new FileOutputStream(s2); g.write(da,0,n2); g.close();} catch (IOException e){System.out.println(e);} System.out.println("File "+s2+" generated."); } ★があるところに入れればうまくいくんでしょうか? HTMLでは <style type="text/css"> <!-- .tate { position: absolute; width:1em; text-align: center; top: 10em; } --> </style> <div class="tate" style="left:20em;">あいうえお</div> <div class="tate" style="left:18em;">かきくけこ</div> <div class="tate" style="left:16em;">さしすせそ</div> このようにすれば縦書き表示になることがわかりました。 しかし、これでは変換したいファイルの中身をいちいち記述しないと いけないので万能性がありません。 どのようにすればうまくいくでしょうか? わかる方教えてください。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
String header = "<html> <head> <title>TAG index Webサイト</title> <style type="text/css"> <!-- p { writing-mode: tb-rl; white-space: nowrap; font: 200%/150% serif; } --> </style> </head> <body> <p>" String footer = "</p> </body> </html> " StringBuffer out = new StringBuffer(header); while(読み込んだファイル行数){ out.append(読み込んだ1行).append("<br>"); } out.append(footer); ファイル出力(out) No2さんの参考サイトを利用させてもらいました。 (エスケープとかしてない適当未検証なのでおかしいところは五字分で修正してください)
その他の回答 (3)
- ProKaseifu
- ベストアンサー率51% (98/192)
入力したファイル名の最後にある「.」から前の部分を仮に「入力ファイル名」として「入力ファイル名」 + 「h」 + 「.html」で出力したらよいのでは?
- SAYKA
- ベストアンサー率34% (944/2776)
css の writing-mode ? http://www.google.com/search?lr=lang_ja&q=css%20%E7%B8%A6%E6%9B%B8%E3%81%8D HTMLだからそういうのじゃだめなのかな 今はまだIEでしか出ないらしいけど。
- ProKaseifu
- ベストアンサー率51% (98/192)
質問の意図がいまいち分からないです。 インプット、アウトプットがどういう結果になればいいんでしょ? たとえば・・・ aaa.txtというテキストファイルがありその中身が あいうえお(改行) かきくけこ(改行) さしすせそ(EOF) となっており、変換した結果 あかさ(改行) いきし(改行) うくす(改行) えけせ(改行) おこそ(EOF) 上記内容でbbb.txtというテキストファイルを出力する。 といった具合でやりたい内容をもう少し具体的に説明してください。
補足
わかりづらくてすいません。 インプット、アウトプットは特にそれほど重要ではないです。 インプットがaaa.htmlというファイルがあれば そのバイト数を数え表示、さらにファイルの内容をemacsに表示 アウトプットは新しく縦書きに出来たソフト(上のソースではa0.html)の 名前をemacsに表示。 やりたい内容はProKaseifuさんがおっしゃったものそのものです。 aaa.txtというテキストファイルがありその中身が あいうえお(改行) かきくけこ(改行) さしすせそ(EOF) となっており、変換した結果 あかさ(改行) いきし(改行) うくす(改行) えけせ(改行) おこそ(EOF) 上記内容でbbb.txtというテキストファイルを出力する。 違うのは ファイルがテキストではなくHTMLファイル。 現在のソースだと縦書きに変換されたファイルがa0.htmlと 名前が固定されているので、元のファイル名の前に『t-』なんかを つけるようにしたいです。 横書き変換 縦書き変換 aaa.html →t-aaa.htmlみたいな感じにしたいです。 よろしくお願いします。
補足
なるほど。参考になります。 あと縦書きに変換するプログラムはどうやってJava内に 記述すればよいでしょうか? これも万能性があるように横書きのテキストを Javaで縦書きにするようにしたいんですが。 何度もすいませんがよろしくお願いします。