rodriguesabner 17 de mar. de 2020
BufferedImage image = ImageIO . read ( getClass (). getClassLoader (). getResourceAsStream ( "images/img.png" ));
ou
Rambruno 17 de mar. de 2020
Cara quando eu uso o BufferedImage na hora de chamar o image.getInstance(), ele não deixa eu colocar “image”.
Eu tentei esse material mas não consegui, tentei colocar o caminho de todo jeito, quando eu mudo de máquina ele não gera o PDF com a imagem.
Tentei o caminho da forma abaixo mas mesmo assim na minha máquina vai e em outras não. Não sei o que fazer
Image image1 = Image.getInstance(“src/assistentevirtual/imagens/trlogo.png”);
rodriguesabner 17 de mar. de 2020
Ok, fiz uns testes aqui, troquei Buff pra URL
URL url = getClass (). getResource ( "/caminho/icone.png" );
Image image1 = Image . getInstance ( url );
image1 . scaleAbsolute ( 120 , 120 );
image1 . setAbsolutePosition ( 10 , 720 );
document . add ( image1 );
Rambruno 17 de mar. de 2020
@rodriguesabner eu fiz exatamente como você indicou, na minha máquina funciona, quando eu copio a pasta dist pra outra máquina e executo o jar ele não gera o PDF, até gera mas um arquivo zerado que não da pra abrir.
O caminho na minha imagem na máquina é esse (C:\Users\u0180829\Desktop\Projetos JAVA\AssistenteVirtual\src\assistentevirtual\imagens\trlogo.png)
URL url = getClass (). getResource ( "\\imagens\\trlogo.png" );
Image image1 = Image . getInstance ( url );
image1 . scaleAbsolute ( 120 , 120 );
image1 . setAbsolutePosition ( 10 , 720 );
document . add ( image1 );
rodriguesabner 17 de mar. de 2020
ah, esqueci que isso é dentro do projeto, foi mal:
try {
BufferedImage buff = ImageIO . read ( getClass (). getClassLoader (). getResourceAsStream ( "images/img.png" ));
ByteArrayOutputStream bos = new ByteArrayOutputStream ();
ImageIO . write ( buff , "png" , bos );
Image image1 = Image . getInstance ( bos . toByteArray ());
image1 . scaleAbsolute ( 120 , 120 );
image1 . setAbsolutePosition ( 10 , 720 );
document . add ( image1 );
} catch ( BadElementException | IOException ex ) {
Logger . getLogger ( Menu . class . getName ()). log ( Level . SEVERE , null , ex );
}
Quando a img está dentro do projeto vc precisa usar o getResourceAsStream
Rambruno 18 de mar. de 2020
Olha o erro que deu:
Exception in thread "AWT-EventQueue-0" java . lang . IllegalArgumentException : input == null !
at javax . imageio . ImageIO . read ( ImageIO . java : 1348 )
at assistentevirtual . pdf . createPdf ( pdf . java : 73 )
at assistentevirtual . reports . botaopdfActionPerformed ( reports . java : 147 )
at assistentevirtual . reports . access $ 000 ( reports . java : 26 )
at assistentevirtual . reports $ 1 . actionPerformed ( reports . java : 62 )
at javax . swing . AbstractButton . fireActionPerformed ( AbstractButton . java : 2022 )
at javax . swing . AbstractButton $ Handler . actionPerformed ( AbstractButton . java : 2348 )
at javax . swing . DefaultButtonModel . fireActionPerformed ( DefaultButtonModel . java : 402 )
at javax . swing . DefaultButtonModel . setPressed ( DefaultButtonModel . java : 259 )
at javax . swing . plaf . basic . BasicButtonListener . mouseReleased ( BasicButtonListener . java : 252 )
at java . awt . Component . processMouseEvent ( Component . java : 6539 )
at javax . swing . JComponent . processMouseEvent ( JComponent . java : 3324 )
at java . awt . Component . processEvent ( Component . java : 6304 )
at java . awt . Container . processEvent ( Container . java : 2239 )
at java . awt . Component . dispatchEventImpl ( Component . java : 4889 )
at java . awt . Container . dispatchEventImpl ( Container . java : 2297 )
at java . awt . Component . dispatchEvent ( Component . java : 4711 )
at java . awt . LightweightDispatcher . retargetMouseEvent ( Container . java : 4904 )
at java . awt . LightweightDispatcher . processMouseEvent ( Container . java : 4535 )
at java . awt . LightweightDispatcher . dispatchEvent ( Container . java : 4476 )
at java . awt . Container . dispatchEventImpl ( Container . java : 2283 )
at java . awt . Window . dispatchEventImpl ( Window . java : 2746 )
at java . awt . Component . dispatchEvent ( Component . java : 4711 )
at java . awt . EventQueue . dispatchEventImpl ( EventQueue . java : 760 )
at java . awt . EventQueue . access $ 500 ( EventQueue . java : 97 )
at java . awt . EventQueue $ 3 . run ( EventQueue . java : 709 )
at java . awt . EventQueue $ 3 . run ( EventQueue . java : 703 )
at java . security . AccessController . doPrivileged ( Native Method )
at java . security . ProtectionDomain $ JavaSecurityAccessImpl . doIntersectionPrivilege ( ProtectionDomain . java : 74 )
at java . security . ProtectionDomain $ JavaSecurityAccessImpl . doIntersectionPrivilege ( ProtectionDomain . java : 84 )
at java . awt . EventQueue $ 4 . run ( EventQueue . java : 733 )
at java . awt . EventQueue $ 4 . run ( EventQueue . java : 731 )
at java . security . AccessController . doPrivileged ( Native Method )
at java . security . ProtectionDomain $ JavaSecurityAccessImpl . doIntersectionPrivilege ( ProtectionDomain . java : 74 )
at java . awt . EventQueue . dispatchEvent ( EventQueue . java : 730 )
at java . awt . EventDispatchThread . pumpOneEventForFilters ( EventDispatchThread . java : 205 )
at java . awt . EventDispatchThread . pumpEventsForFilter ( EventDispatchThread . java : 116 )
at java . awt . EventDispatchThread . pumpEventsForHierarchy ( EventDispatchThread . java : 105 )
at java . awt . EventDispatchThread . pumpEvents ( EventDispatchThread . java : 101 )
at java . awt . EventDispatchThread . pumpEvents ( EventDispatchThread . java : 93 )
at java . awt . EventDispatchThread . run ( EventDispatchThread . java : 82 )
Image image1 = Image . getInstance ( bos . toByteArray ());
image1 . scaleAbsolute ( 120 , 120 );
image1 . setAbsolutePosition ( 10 , 720 );
document . add ( image1 );
} catch ( BadElementException | IOException ex ) {
System.out.println("Erro ao gerar PDF") ;;
}
Como ficou o código:
try {
BufferedImage buff = ImageIO . read ( getClass (). getClassLoader (). getResourceAsStream ( "\\imagens\\trlogo.png" ));
ByteArrayOutputStream bos = new ByteArrayOutputStream ();
ImageIO . write ( buff , "png" , bos );
Image image1 = Image . getInstance ( bos . toByteArray ());
image1 . scaleAbsolute ( 120 , 120 );
image1 . setAbsolutePosition ( 10 , 720 );
document . add ( image1 );
} catch ( BadElementException | IOException ex ) {
System . out . println ( "Erro ao gerar PDF" );;
}
rodriguesabner 18 de mar. de 2020
Cara, eu não uso o iText então é dificil pra te dar uma resposta correta.
De acordo com a fonte que vou passar, a resposta foi essa:
change this line:
ImageIO . write ( image , "jpg" , new File ( "d:/CopyOfTestImage.jpg" ));
to something like this
image = ImageIO . read ( getClass (). getResource ( "/resources/CopyOfTestImage.jpg" ));
java