Alterar parágrafos dum pdf

3 respostas
J

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?

3 Respostas

Danilo_Carvalho

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.

J

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:

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;
        }

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.

Danilo_Carvalho

É 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…

Criado 31 de maio de 2013
Ultima resposta 31 de mai. de 2013
Respostas 3
Participantes 2