Os projetos estão mudando, os requisitos estão mudando e os programadores imutáveis estão sempre digitando em teclados ...
Depois que o PDF é gerado, às vezes você precisa adicionar algum outro conteúdo ao PDF, como texto, fotos ...
Após várias tentativas fracassadas, finalmente consegui a maneira correta de escrever o código.
Este registro e resume, para que da próxima vez você permaneça inalterado e se adapte às mudanças, mova -se para: gerar um guia completo em PDF
Leitor pdfreader = new pdfreader ("e: //a.pdf"); Pdfstamper Stamper = novo pdfstamper (leitor, new FileOutputStream ("e: //b.pdf")); PdfContentByte Overcontent = sTAMPER.GETOVERCONTENT (1);O código acima é considerado o código principal que adiciona conteúdo ao PDF original. O processo específico é o seguinte
• Se o leitor tomar cuidado, o código será ler o A.PDF original, escrevê -lo para B.PDF e operar B.PDF.
• Alguns leitores podem dizer que a leitura de A e, em seguida, escrever em A definitivamente não é possível. A foi carregado e não pode ser modificado ao ler.
• Não gosto disso porque as informações do PDF original já estão armazenadas no banco de dados, incluindo o caminho do servidor do PDF, nome antigo, novo nome, tipo ...
• Isso causará uma operação extra de alteração de banco de dados, porque o nome do PDF precisa ser alterado aqui e as pessoas sabem como os requisitos subsequentes mudarão.
• É urgente adicionar conteúdo ao PDF aqui, e nada mais muda, então eu ajustei um pouco o código.
Fileutil.FileChannelCopy (a.pdf, a + "tmp" .pdf)); Leitor pdfreader = novo pdfreader (a + "tmp" .pdf); Pdfstamper Stamper = novo pdfstamper (leitor, new FileOutputStream (a.pdf)); PdfContentByte Overcontent = sTAMPER.GETOVERCONTENT (1);
O fluxo de código se torna assim
Aqui, apresentamos o arquivo de copiar do pipeline, copiar A, ler a cópia e, em seguida, gravará novamente no PDF A original e, é claro, você precisa excluir o arquivo de cópia.
Nesse ponto, não importa como os requisitos subsequentes mudam, as outras propriedades do PDF permanecem inalteradas e você pode enfrentá -las com calma.
O código de cópia do pipeline é o seguinte:
PubPC estático void FileChannelCopy (fontes de arquivo, arquivo de arquivo) {try {FileInputStream inputStream = new FileInputStream (fontes); FileOutputStream outputStream = new FileOutputStream (dest); Filechannel filechannepn = inputStream.getChannel (); // Obtenha o canal de arquivo correspondente FileChannel Filechannelout = outputStream.getChannel (); // Obtenha o canal de arquivo correspondente FilechanNepn.Transferto (0, FileChannEpn.Size (), FilechanNout); inputStream.close (); filechannepn.close (); outputStream.Close (); filechannelout.close (); } catch (Exceção e) {e.printStackTrace (); }}O PDF completo outro código de conteúdo é o seguinte:
FILEUTIL.FILECHANNELCOPY (novo arquivo ("e: //a.pdf"), novo arquivo ("e: // a+" tmp ".pdf")); Leitor pdfreader = new pdfreader ("e: // a+" tmp ".pdf"); Pdfstamper Stamper = novo pdfstamper (leitor, new FileOutputStream ("e: //a.pdf")); PdfContentByte Overcontent = sTAMPER.GETOVERCONTENT (1); // Adicione texto BaseFont font = BaseFont.CreateFont ("Stsong-Pght", "Unigb-UCS2-H", BaseFont.Not_Embedded); Overcontent.BegINTEXT (); Overcontent.SetFontandSize (Font, 10); Overcontent.SettextMatrix (200, 200); Overcontent.showTextApgned (Element.apgn_center, "texto a ser adicionado", 580,530,0); Overcontent.endText (); // Adicione a imagem pdfdictionary pdfdictionary = reader.getpagen (1); PdfObject pdfObject = pdfdictionary.get (new pdfname ("mediabox")); PDFARRAY PDFARRAY = (PDFARRAY) PDFOBJECT; Imagem imagem = imagem.getInstance ("d: //1.jpg"); image.setabsolutePosition (100.100); Overcontent.addimage (imagem); // Adicione um círculo vermelho sobrecontent.setrgbcolorsTroke (0xff, 0x00, 0x00); Overcontent.SetPNewidth (5F); Overcontent.elpse (250, 450, 350, 550); Overcontent.stroke (); stamper.close ();O guia completo acima para gerar PDFs é o método de implementação de adicionar conteúdo aos PDFs existentes. O editor compartilha todo o conteúdo com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.