Pdf com Itext

Prezados, o que eu faço aqui é recuperar um pdf do banco, inserir uma linha e cada pagina e salvar ele novamente. Ele funciona para maioria, mas para alguns pdfs ele insere o texto transparente, nao aparece no pdf mas se mando localizar ele localiza. existe alguma coisa de PDF protegido ou algo do tipo? alguem sabe como resolver. segue abaixo o codigo.

PdfReader pdfReader = new PdfReader(tp.getSbAnexo());
				qtPaginas = pdfReader.getNumberOfPages();
				 ByteArrayOutputStream stream = new ByteArrayOutputStream();

				PdfStamper stamper = new PdfStamper(pdfReader, stream);
				int totalPaginas = pdfReader.getNumberOfPages() + 1;

				for (int i = 1; i < totalPaginas; i++){
					Rectangle pagesize = new Rectangle(612, 792);

					pagesize.setBackgroundColor(new Color(0x64, 0x95, 0xed));
					
					PdfContentByte pdfContentByte = stamper.getUnderContent(i);
				
					pdfContentByte.setFontAndSize(BaseFont.createFont(BaseFont.TIMES_ROMAN, BaseFont.CP1250, true), 12);
					pdfContentByte.beginText();
					pdfContentByte.setTextMatrix(50, 830);
					pdfContentByte.setColorFill(Color.BLUE);
				
					pdfContentByte.newlineShowText(0, 0, "teste de nova linha -----------------------!"); 
						
				}
				pdfReader.close();
				stamper.close();
				stream.flush();
				stream.close();
				byte[] pdfByte = stream.toByteArray(); 
				tp.setSbAnexo(pdfByte);

obrigado

Olá,

o problema é que nem sempre um texto que se encontra em um PDF é um texto em um PDF.
Muitas vezes, é uma imagem colocada em determinada posição, ou mesmo texto puro mesmo com alguma formatação.

Sendo assim, a edição de documentos PDF com o itext (ou basicamente qualquer outra biblioteca) é sempre um processo muito trabalhoso e altamente impreciso.

No seu caso, nada impede que:
a) o documento esteja protegido de alguma maneira (o Acrobat só descobre isto ao abrir o arquivo, mas como o seu processo é externo, nada impede a inclusão de novas informações em um pdf protegido)
b) há chunks que parecem texto mas são imagens, com ordenação do índice-z, por exemplo, fora do convencional (como um layer por exemplo).

Cara, acho que vc matou a charada. os pdfs que estao dando problema sao aqueles que parecem ser uma imagem escaneada. Entao deve estar escrevendo mas a imagem cica por cima ja que a imagem vai ser a folha inteira… sendo assim acho que complicou. será que tem uma forma de colocar uma imagem em cima de outra?

pouco provável.
mesmo que fosse, o trabalho que você teria de parsear o documento, certificar-se de que está alterando a imagem correta e em seguida finalizar a tarefa não valeria à pena :frowning:

De toda forma agradeco…vou pensar em uma outra solucao. valeu.

Boa tarde,
Não sei se este tópico estava fechado, mas foi a partir dele que consegui resolver meu problema.
Estava com um problema um pouco pior que nosso amigo fhsantiago.
eu descobri que quando você usa:

você escreve abaixo do PDF que usou como template, mas dai fica estranho, então resolvi usar a outra opção:

só que por algum motivo que só Deus sabia, ele não escrevia no maldito PDF de template,
então depois de várias pesquisas e bater cabeça percebi quando você escreve um texto com o “UnderContent”,
você abre pdfContentByte.beginText(); mas não precisa fechá-lo, mas com o maldito “OverContent”,
precisa por pdfContentByte.endText(); caso contrário ele não escreve.

espero que isto possa ajudar outras pessoas que esteja sofrendo para escrever acima do template usando IText.