Boas, eu preciso de ajuda para alterar parágrafos dum pdf.
A situação é a seguinte: eu tenho um programa com várias janelas, crio um pdf numa delas e preciso de alterá-lo noutra janela diferente, mas só preciso de alterar dois parágrafos específicos, não o pdf todo. Alguém sabe como posso fazer isso?
Bom dia!
Só para eu entender melhor, em uma tela voce gera um pdf, depois na outra tela o pdf precisa de mais dois campos de informações que estão está tela.
Você esta usando Ireport, se sim como você gera o pdf, usando o JRBeanCollectionDataSource ou entrega uma conexão para o ireport.
Tenho um dica mas preciso saber como voce faz o pdf.
Até mais.
Boas, não é assim, quando eu crio o pdf ele tem 5 parágrafos. Na jenela onde eu o quero alterar eu preciso alterar eu preciso alterar os parágrafos 4 e 5. o código que eu tenho para criar o pdf está aqui:
[code] OutputStream os = null;
String caminho = null;
String tecnico = this.ComboBox_tecnico.getSelectedItem().toString();
if(camposPreenchidos()){
try{
doc = new Document(PageSize.A4);
String nrreparacao = this.TextField_reparação.getText();
JFileChooser ficheiro = new JFileChooser();
ficheiro.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
ficheiro.showSaveDialog(this);
File pasta = ficheiro.getSelectedFile();
System.out.println(pasta);
os = new FileOutputStream(pasta + "\Folha de Reparações " + this.ComboBox_nomes.getSelectedItem().toString() + “.pdf”);
caminho = pasta + "\Folha de Reparações " + this.ComboBox_nomes.getSelectedItem().toString() + “.pdf”;
PdfWriter.getInstance(doc, os);
System.out.println(caminho);
doc.open();
Image img;
img = Image.getInstance(“Imagem5.png”);
img.setAlignment(Element.ALIGN_LEFT);
img.setSpacingAfter(10);
doc.add(img);
Font fp1 = new Font(FontFamily.TIMES_ROMAN, 12, Font.NORMAL );
Paragraph p1 = new Paragraph(“conteúdo do parágrafo”, fp1);
p1.setAlignment(Element.ALIGN_LEFT);
p1.setSpacingAfter(20);
doc.add(p1);
Font fp2 = new Font(FontFamily.TIMES_ROMAN, 12, Font.NORMAL);
SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
String data = formatoData.format(this.DateChooser1_data.getDate());
String nome = this.ComboBox_nomes.getSelectedItem().toString();
String localidade = this.ComboBox_localidade.getSelectedItem().toString();
Paragraph p2 = new Paragraph("Dados do Cliente\n"
+ "Nome : " + nome + "\n"
+ "Localidade : " + localidade);
p2.setSpacingAfter(10);
doc.add(p2);
Paragraph p3 = new Paragraph("Nº de Reparação Técnico"
+ " Data");
p3.setSpacingAfter(10);
doc.add(p3);
Paragraph p4 = new Paragraph(nrreparacao + " " + tecnico +
" " + data);
p4.setAlignment(Element.ALIGN_LEFT);
doc.add(p4);
String tipo = this.ComboBox_tipo.getSelectedItem().toString();
String marca = this.ComboBox_marca.getSelectedItem().toString();
String modelo = this.ComboBox_modelo.getSelectedItem().toString();
String nrserie = this.ComboBox_nrserie.getSelectedItem().toString();
String problema = this.TextArea_problema.getText();
String obs = this.TextArea_observações.getText();
String aprovado;
if(this.CheckBox_sim.isSelected()){
aprovado = "Aprovado";
}
else{
if(this.CheckBox_não.isSelected())
aprovado = "Não Aprovado";
else
aprovado = "Aguarda aprovação do cliente";
}
Paragraph p5 = new Paragraph("Dados do Computador\n"
+ tipo + " " + marca + " " + modelo + "\n"
+ "Nº de Série:" + nrserie + "\n"
+ "Problema: " + problema + "\n"
+ "Observações: " + obs + "\n" + aprovado);
doc.add(p5);
return caminho;
} catch (BadElementException ex) {
JOptionPane.showMessageDialog(this, "Ocorreu um erro, por favor contacte o programador...\n" + ex.getMessage(), "ERRO",
JOptionPane.ERROR_MESSAGE);
} catch (MalformedURLException ex) {
JOptionPane.showMessageDialog(this, "Ocorreu um erro, por favor contacte o programador...\n" + ex.getMessage(), "ERRO",
JOptionPane.ERROR_MESSAGE);
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, "Ocorreu um erro, por favor contacte o programador...\n" + ex.getMessage(), "ERRO",
JOptionPane.ERROR_MESSAGE);
} catch (DocumentException ex) {
JOptionPane.showMessageDialog(this, "Ocorreu um erro, por favor contacte o programador...\n" + ex.getMessage(), "ERRO",
JOptionPane.ERROR_MESSAGE);
} finally{
try {
if(doc != null)
doc.close();
if(os != null){
os.close();
return caminho;
}
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, "Ocorreu um erro, por favor contacte o programador...\n" + ex.getMessage(), "ERRO",
JOptionPane.ERROR_MESSAGE);
}
}
}
else{
JOptionPane.showMessageDialog(this, "Tem que preencher todos os campos", "FALTA DE DADOS", JOptionPane.ERROR_MESSAGE, erro);
return null;
}
return null;
}[/code]
O que eu estava a tentar fazer, sem sucesso, era criar outro pdf, alterando os parágrafos necessários, e depois o utilizador guardava “por cima” do pdf inicialmente criado, mas isso não funciona, ficando a faltar os parágrafos que seriam editados.
É diferente do que eu pensava, mas por que você não usa o Ireport.
Acho que seria uma boa, ele é a melhor ferramenta para geração de relatórios, só exportar em pdf.
Mas é só uma dica.
Vou ver seu código agora…
Até mais…