Transformar txt ou doc em pdf

Pessoal, o meu projeto( JAVAxCOBOL) possui uma funcionalidade onde o COBOL gera um arquivo texto e eu preciso pegar esse arquivo txt e transformá-lo em pdf, gostaria de saber se isso é possível e como é feito. O meu sistema hoje trabalha com relatórios gerando diretamente o pdf dessa maneira:

JasperExportManager.exportReportToPdfStream( this.printObject, baos );

response.setContentType  ( "application/pdf" );
response.setHeader       ( "Expires", "0" );
response.setHeader       ( "Cache-Control","must-revalidate, post-check=0, pre-check=0" );
response.setHeader       ( "Pragma", "no-cache" ); //HTTP 1.0
response.setDateHeader   ( "Expires", 0 ); //prevents caching at the proxy server
response.setHeader       ( "Cache-Control", "no-cache" ); //HTTP 1.1
response.setHeader       ( "Cache-Control", "max-age=0" );
response.setContentLength( baos.toByteArray( ).length );

baos.writeTo( servletOutputStream );

Obrigado.

Leia o conteudo do txt e passe como parametro para o jasperreports.

Se a coisa é bem simples, pode PDFBox para criar um PDF ou Jakarta POI para criar um DOC.

Aleck
Eu gostaria de uma implementação mais drag and drop, sem me preocupar com o formato que o arquivo texto terá, porque eu somente pegaria o arquivo texto e jogaria em pdf da maneira como ele foi criado pelo COBOL, sem me preocupar com formatações ou campos do arquivo.

Filipe Sabella
Não entendi o PDFBox, poderia me explicar melhor essa parte por favor.

Obrigado a todos.

implementação mais drag n’ drop é complicado heim?

axo que isso pode resolver…

import java.awt.Component;
import java.awt.Font;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;

public class GeraArquivo {

	public static void gerar(String texto, String nfile){
		java.io.FileOutputStream fos;
		  JOptionPane alert;
		  File file;
	
		  try{

				file = new File("C:\\" + nfile);
				if (file.exists()){                              /**se o arquivo a ser gerado existe*/
																
					file.delete(); 							   /**arquivo sera apagado            */
					fos = new java.io.FileOutputStream(file); /**e sera gerado novo arquivo      */
					fos.write(texto.getBytes());             /**passando o texto(valor) qualquer*/
															
					fos.flush();                           /**finaliza o arquivo              */
					fos.close();                          /**fecha o arquivo                 */
					
					JOptionPane.showMessageDialog(null, "Arquivo " + nfile.toString() + " criado com sucesso!");
					
				}else{
					
					fos = new java.io.FileOutputStream(file);
					fos.write(texto.getBytes());
					fos.flush();
					
					fos.close();
					JOptionPane.showMessageDialog(null, "Arquivo " + nfile.toString() + " criado com sucesso!");

				}
		  }catch(Exception e){
				JOptionPane.showMessageDialog(null, "Ocorreu um Erro ao Gerar o arquivo.");
		  }
	}

	public static void main(String args[]){
	new GeraArquivo().gerar("Teste", "arquivo.txt");
	}	  
}

pode ser que isso funcione…

qq duvida me avise q eu t ajudo…

douggs, me tire uma dúvida por favor.

O arquivo .txt já existe fisicamente e já está com as informações geradas pelo COBOL.

Eu não entendi o seguinte:
Se o arquivo existir, você executa o código fos.write(texto.getBytes()); para que se o arquivo já está ok ??
No meu caso isso não será necessário, mas como eu pegarei o objeto FileOutputStream e passarei para PDF ??

Obrigado.

axo que vc compreendeu errado este programa…

assim:

quando vc inseri os dados manualmente e manda ele gerar nomedoarquivo.pdf :cry:

ele ira gerar o arquivo pdf…no caso vc esta carregando o arquivo gerado com as inf. do cobol…

nesse prog…ele não sabe ler o conteúdo do arquivo…ele só verifica se o arquivo existir ele exclui o antigo…

vc determina a extenção que o arquivo vai ter…

ok?

douggs, mas o problema é justamente esse, como abrir o arquivo no browse com PDF ou TXT.

Estou tentando utilizar o código abaixo, porém ele não está abrindo com a cara de ADOBE, o browse joga o arquivo texto sem nenhum scroll.

Alguém sabe me informar o que está errado ??

Eu já tentei também abrir como txt alterando de "application/pdf" para "application/txt", mas ao invés de explodir o arquivo dentro da servlet está abrindo uma nova janela.

Valeu.

Alguém poderia me dar um help ??

Obrigado.

Pessoal, encontrei uma solução, tive que abrir o arquivo mas pelo menos está fazendo o que era necessário.

public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
	ServletOutputStream sos = response.getOutputStream( );
	try {
		ByteArrayOutputStream baos = new ByteArrayOutputStream( );

		Document document = new Document( );
		PdfWriter.getInstance( document, baos );
		document.open( );

		BufferedReader br = new BufferedReader( new FileReader( (String)request.getSession( ).getAttribute( "fakefile" ) ) );
		request.getSession( ).removeAttribute( "fakefile" );

		String strLinha = null;
		boolean bVazio = false;
		while( ( strLinha = br.readLine( ) ) != null ) {
			document.add( new Paragraph( strLinha ) );
			bVazio = true;
		}
		if( !bVazio ) {
			document.add( new Paragraph( " " ) );
		}
		document.close( );
		br.close( );

		response.setContentType  ( "application/pdf" );
		response.setHeader       ( "Expires", "0" );
		response.setHeader       ( "Cache-Control","must-revalidate, post-check=0, pre-check=0" );
		response.setHeader       ( "Pragma", "no-cache" ); //HTTP 1.0
		response.setDateHeader   ( "Expires", 0 ); //prevents caching at the proxy server
		response.setHeader       ( "Cache-Control", "no-cache" ); //HTTP 1.1
		response.setHeader       ( "Cache-Control", "max-age=0" );
		response.setContentLength( baos.toByteArray( ).length );

		baos.writeTo( sos );
		baos.close( );
		sos.flush( );
		sos.close( );
	} catch( IOException e ) {
		sos.flush( );
		sos.close( );
	} catch( Exception e ) {
		sos.flush( );
		sos.close( );
	} finally {
		sos.flush( );
		sos.close( );
	}
}

import com.lowagie.text.;
import com.lowagie.text.pdf.
;
import java.io.*;

/**
*

  • @author Rodrigo
    */
    public class TextToPDF {

    public void geraPDF() {
    try {
    FileInputStream fstream = new FileInputStream(“C:\TextName.txt”);
    DataInputStream in = new DataInputStream(fstream);
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    String strLine;
    //criação do pdf
    Document document = new Document(PageSize.A4, 36, 72, 108, 180);
    PdfWriter.getInstance(document, new FileOutputStream(“C:\PDFName.pdf”));
    document.open();

         //Ler txt linha a linha
         while ((strLine = br.readLine()) != null) {
             String text = strLine;
             document.add(new Paragraph(text));
         }
         document.close();
     } catch (Exception e) {
     }
    

    }
    }