wpisywanie tekstu do wzorca

0

Witajcie

Chce stworzyć program który będzie wpisywal tekst w luki do podanego wzorca pliku tekstowego np Doc choć może być cokolwiek innego byle można było zastosować formatowanie tekstu i by ostateczny dokument jakoś wyglądał.

  1. wpisujemy w programie dane np imię i nazwisko
  2. otwieramy plik tekstowych z danym wzorcem
  3. dodajemy do pliku imię i nazwisko we wcześniej ustalone miejsca
  4. zapisujemy całość i gotowe

Czy znacie jakiś łatwy sposób na wykonanie tej czynności? np. jakas biblioteke zewnetrzna?
Moim zdaniem problem leży w formowaniu tekstu : tabulacje , akapit, różne czcionki, tabele czego nie widać po wczytaniu tekstu i myślałem nad kodowaniem HTML

0

Może być HTML albo RTF: przygotuj szablon, gdzie w miejsce wpisania danych dasz jakieś znaczniki, np. #IMIE#, #NAZWISKO#, etc. Prostota rozwiązania polega na tym, że te formaty to po prostu pliki tekstowe, więc później wystarczy wczytać plik w trybie tekstowym, wyszukać znaczniki i podmienić wartościami podanymi przez usera, a potem z powrotem zapisać jako plik tekstowy. Z DOC albo DOCX będzie o wiele więcej roboty, bo do nich potrzeba już zewnętrznej biblioteki.

0

Problem wydaje sie prawie rozwiazany : stosowalem 2 mozliwosci

  1. HTMLeditorkit - tutaj niestety jak tworze html'a z css to wywala unknow source (nie moge sobie z tym poradzic, gdzies czytalem ze wystarczy dodac do editora paczke css i dziala ale nie moge teraz tego znalezc), przy zwyklym HTML'u wszystko dziala

  2. RTFeditorkit - tutaj nie wywala zadnych bledow, ale najpierw musialem zmienic znaki polskie na unicode zeby pokazywalo(poradzilem sobie) a teraz nie wiem jak zrobic zeby np. do Jeditorpane wczytywal dobrze plik z calym formatowaniem , dokladnie chodzi mi o tabelki. nie pojawiaja sie one na wczytanym w javie dokumencie mimo ze w kazdym innym programie np. glupi wordpad sa.

prosze was o podpowiedz, wszystko jedno do ktorej opcji bo juz sie wkurzam a wujek google nie pokazuje za wiele w temacie.

Dodam jeszcze czemu tak robie :

program ma za zadanie wczytac dane z szablonu (HTML, RTF) w miejsca znacznikow powstawiac dane z bazy SQL, i go wydrukowac.

Z tego co umiem do tej pory drukowanie odbywa sie metoda Java print service i tam wybieramy z czego korzystamy : jesli ma byc to HTML to flavor HTML jesli tekstowy to inny. Kombinowalem na wszelkie mozliwe metody ale stworzonego HTML nie wczytuje do drukarki (pojawia sie invalid flavor ) wiec zgodnie z wujkiem google postapilem i zainstalowalem JEditorPane, tutaj wczytuje sie do kontrolki dobrze ale bez odpowiedniego formatowania(brak tabel). Kolo sie zapetla a niby rozwiazanie jest bardzo proste.

0

Mam cos takiego :

import java.awt.BorderLayout;
import java.awt.Color;

import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.MessageFormat;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.rtf.RTFEditorKit;

public class druk extends JFrame 
{
	static MessageFormat head = new MessageFormat("");
    static MessageFormat foot = new MessageFormat("");
    
  public druk() {
    setTitle("RTF Text Application");
    setSize(20, 20);
    setBackground(Color.gray);
    getContentPane().setLayout(new BorderLayout());

    JPanel topPanel = new JPanel();
    topPanel.setLayout(new BorderLayout());
    getContentPane().add(topPanel, BorderLayout.CENTER);
    
    // Create an RTF editor window
    RTFEditorKit rtf = new RTFEditorKit();
    JEditorPane editor = new JEditorPane();
 //   editor.setPreferredSize(new Dimension(693,980));
    editor.setEditorKit(rtf);
    editor.setBackground(Color.white);

    // This text could be big so add a scroll pane
    JScrollPane scroller = new JScrollPane();
    scroller.getViewport().add(editor);
    topPanel.add(scroller, BorderLayout.CENTER);

    // Load an RTF file into the editor
    try {
      FileInputStream fi = new FileInputStream("szablon1_uni.rtf");
      rtf.read(fi, editor.getDocument(), 0);
    } catch (FileNotFoundException e) {
      System.out.println("File not found");
    } catch (IOException e) {
      System.out.println("I/O error");
    } catch (BadLocationException e) {
    }
    
    PrinterJob pj = PrinterJob.getPrinterJob();
    pj.lookupStreamPrintServices("text/richtext");
    pj.setPrintable(editor.getPrintable(head, foot));
    try {
		pj.print();
	} catch (PrinterException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
  }
}

O ile w JEditorPane jeszcze dobrze wyswietla tekst (zaleznie od rozmiaru okna formatowanie sie inaczej uklada). Wzglednie podczas wydruku na drukarce sie ono rozjezdza niesamowicie. Nie wiem od czego to zalezy i jak to zmienic, ze JEditorPane poprawnie rozpoznaje spacje a drukarka robi z tego tabulatory.

Prosba o pomoc

0

Dla zainteresowanych : posluzylem sie zewnetrzna biblioteka html to image i juz wszystko dziala. Drukuje po prostu obrazek w odpowiedniej formie na calej stronie. Co prawda na okretke ale na te chwile wystarczy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1