Estou tentando extrair tabelas de um pdf usando tabula e powershell. Quando eu insiro o comando diretamente no console do powershell, recebo o resultado esperado exibido (em utf8 com símbolos de trema)
java -jar "./tabula-java/$tabulaVersion" --spreadsheet -a 114,53,180,556 "./table.pdf"
Mas quando eu coloco em uma variável de string e depois escrevo em um arquivo, os símbolos de umlaut se tornam sem sentido
$text = java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet -a 114,53,180,556 "./table.pdf"
Set-Content -Path "./file.txt" -Value $text
Mesmo se eu imprimir a variável no console, os símbolos de umlaut não serão exibidos corretamente
$text = java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet -a 114,53,180,556 "./table.pdf"
Write-Output $text
Existe uma maneira de armazená-lo em uma variável de string (e, portanto, ser capaz de manipular o conteúdo) e gravá-lo em um arquivo mantendo a codificação utf8 (sem BOM)?
Usar a abordagem do link também não funciona para mim
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines($filepath, $text, $Utf8NoBomEncoding)
Eu não recebo um erro, mas também nenhum arquivo é criado ou adicionado à linha.
[System.IO.File]::WriteAllLines
cria um arquivo (em UTF sem BOM), eu usei apenas um caminho relativo e não defini [System.Environment]::CurrentDirectory = (Get-Location).Path
. Mas, não obstante, os símbolos de trema não estão corretos.
caso 1: saída diretamente no console, por exemplo
java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf"
caso 2: saída armazenada na variável, depois impressa no console, por exemplo
$text = java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf"
Write-Output $text
caso 3:
saída armazenada na variável, mas com -D"file.encoding=UTF-8"
, depois impressa no console, por exemplo
$text = java -D"file.encoding=UTF-8" -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf"
Write-Output $text
$OutputEncoding
= US-ASCII e
[System.Console]::OutputEncoding
= OEM Estados Unidos (IBM437)
caso 4:
saída diretamente no console (com alteração de [System.Console]::OutputEncoding
antes), por exemplo
[System.Console]::OutputEncoding = System.Text.Encoding]::GetEncoding(1252)
java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf"
caso 5:
saída armazenada na variável, depois impressa na consola (com alteração [System.Console]::OutputEncoding
antes), e.
[System.Console]::OutputEncoding = System.Text.Encoding]::GetEncoding(1252)
$text = java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf"
Write-Output $text
Isso resultará em símbolos de umlaut
pdf case 1 case 2 case 3 case 4 case 5
ä ä Σ ├ñ „ ä
ö ö ÷ ├╢ ” ö
ü ü ⁿ ├╝ ü
Tags utf-8 powershell script