Alterar parágrafos dum pdf

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…