String para PDF

Bom dia.

Estou consultando um WebService que, segundo os desenvolvedores, retorna em determinado momento o binário de um PDF que precisarei salvar em disco. O retorno é algo semelhante a JVBERi0xLjIgCiXi48/TIAoxIDAgb2JqIAo8PCAKL1R5 […] (e mais um zilhão de caracteres).

Aí vem minha dúvida: como salvo uma String com este conteúdo como um arquivo PDF? Tentei da seguinte forma (sem sucesso): [code]File pdf = new File( “C:\teste.pdf” );
FileOutputStream stream = new FileOutputStream( pdf );

stream.write( content.getBytes() );
stream.flush();
stream.close();[/code]
Porém, sempre obtenho uma mensagem (ao tentar abrir o PDF) informando que o arquivo não é válido (corrompido). Alguém poderia ajudar com qualquer ideia? Grato desde já.

assim não funciona.

tenta utilizar o itext

http://itextpdf.com

é uma biblioteca para manupulação de PDF

Obrigado pela resposta.

Não teria como fazer funcionar de forma “nativa”? A princípio, eu não poderia utilizar uma biblioteca adicional…

Se funcionasse apenas com o iText, como poderia resolver esta situação?

Talvez seja a única solução, mas não tenho a mínima ideia do que fazer…

nativamente não tem como, vc teria que utilizar uma biblioteca adicional, o itext é uma opção, há outras, ams acho que a itext é a mais facil e mais utilizada

dá uma olhada nesse link,
http://www.linhadecodigo.com.br/Artigo.aspx?id=863

Acho que ajudar.

Pra falar a verdade, ainda não entendi como isto poderia me ajudar.

De que forma vou conseguir converter uma String tal qual JVBERi0xLjIgCiXi48/TIAoxIDAgb2JqIAo8PCAKL1R5 […] (e mais um zilhão de caracteres) para um arquivo PDF? Essa String não deve ser o conteúdo do PDF, ela é o PDF.

PDF é um arquivo binário esse JVBERi0xLjIgCiXi48… não é o binário do PDF???

Sim, é o binário de um PDF que retorna como String após eu consumir um WebService.

Ainda não consegui entender como alguma biblioteca como o iText, por exemplo, poderia me ajudar a transformá-la num arquivo PDF…

Como um arquivo, que é um array de bytes, pode ser expressado como umonte de caracteres? Se fosse um array de bytes até faria muito sentido, era só salvar como PDF.

Tem como você disponibilizar o wsdl?

Isso é Base-64. Procure por conversões base-64 -> binário (veja em http://commons.apache.org/codec/ )

Exemplo de um PDF codificado em Base-64:

JVBERi0xLjQNCiW17a77DQoyIDAgb2JqDQo8PCAvTGVuZ3RoIDMgMCBSDQogICAv
VHlwZSAvWE9iamVjdA0KICAgL1N1YnR5cGUgL0Zvcm0NCiAgIC9CQm94IFsgMCAw
IDIxNiA0MDQgXQ0KPj4NCnN0cmVhbQ0KMSAwIDAgLTEgMCA0MDQgY20NCnEgMzYg
...
MjA5OSAwMDAwMCBuDQowMDAwMDIyMjI5IDAwMDAwIG4NCnRyYWlsZXINCjw8IC9T
aXplIDEwDQogICAvUm9vdCA5IDAgUg0KICAgL0luZm8gOCAwIFINCj4+DQpzdGFy
dHhyZWYNCjIyMjg2DQolJUVPRg0K

Decodificado, deve dar algo como:

0000    25 50 44 46 2D 31 2E 34  0A 25 B5 ED AE FB 0A 32   %PDF-1.4.%.Ý.¹.2
0010    20 30 20 6F 62 6A 0A 3C  3C 20 2F 4C 65 6E 67 74    0 obj.<< /Lengt
0020    68 20 33 20 30 20 52 0A  20 20 20 2F 54 79 70 65   h 3 0 R.   /Type
...
1440    92 40 FE 3D C8 F3 A3 E1  91 C8 2F 9E AB 38 86 D0   .@&#9632;=.¾..../..8..
1450    35 D0 5F CE F3 63 B1 C8  D8 E3 0F D5 30 08 F5 C0   5._.¾c...Ò..0.§.
1460    18 5A 23 62 50 6B 6A 96  3D C0 1E 47 15 E8 F5 C0   .Z#bPkj.=..G..§.

EXATAMENTE! O retorno do WebService veio codificado em Base64. O problema é que o pessoal que fez o WS não me falou nada disso… Mesmo assim, obrigado a todos pela ajuda.

Como resolveu amigo?
estou com o mesmo problema.
Não quero usar biblioteca mas preciso pegar meus bytes e salvar em um arquivo
como um pdf.