tabula와 powershell을 사용하여 PDF에서 테이블을 추출하려고 합니다. Powershell 콘솔에 직접 명령을 입력하면 예상 결과가 표시됩니다(umlaut-symbols가 포함된 utf8).
java -jar "./tabula-java/$tabulaVersion" --spreadsheet -a 114,53,180,556 "./table.pdf"
하지만 문자열 변수에 넣은 다음 파일에 쓰면 움라우트 기호가 횡설수설하게 됩니다.
$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
콘솔에서 변수를 출력해도 움라우트 기호가 제대로 표시되지 않습니다
$text = java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet -a 114,53,180,556 "./table.pdf"
Write-Output $text
문자열 변수에 저장하고(따라서 내용을 조작할 수 있음) utf8(BOM 없음) 인코딩을 유지하면서 파일에 쓸 수 있는 방법이 있습니까?
다음의 접근 방식을 사용하여https://stackoverflow.com/a/5596984/1786528나에게도 효과가 없어
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines($filepath, $text, $Utf8NoBomEncoding)
오류가 발생하지 않지만 파일이 생성되거나 줄이 추가되지 않습니다.
업데이트:
[System.IO.File]::WriteAllLines
파일을 생성합니다(BOM 없이 UTF로). 방금 상대 경로를 사용하고 [System.Environment]::CurrentDirectory = (Get-Location).Path
. 그러나 그럼에도 불구하고 움라우트 기호는 올바르지 않습니다.
추가 세부 사항
사례 1: 콘솔에서 직접 출력합니다. 예:
java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf"
사례 2: 출력은 변수에 저장된 다음 콘솔에 인쇄됩니다. 예:
$text = java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf"
Write-Output $text
사례 3:
출력은 변수에 저장되었지만 을 사용하여 -D"file.encoding=UTF-8"
콘솔에 인쇄됩니다. 예:
$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 및
[System.Console]::OutputEncoding
= OEM 미국(IBM437)
사례 4:
콘솔에서 직접 출력합니다(미리 변경하여 [System.Console]::OutputEncoding
). 예:
[System.Console]::OutputEncoding = System.Text.Encoding]::GetEncoding(1252)
java -jar "./tabula-1.0.1-jar-with-dependencies.jar" --spreadsheet "./table.pdf"
사례 5:
출력은 변수에 저장된 다음 콘솔에 인쇄됩니다(미리 변경하여 [System.Console]::OutputEncoding
). 예:
[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
이로 인해 움라우트 기호가 발생합니다.
pdf case 1 case 2 case 3 case 4 case 5
ä ä Σ ├ñ „ ä
ö ö ÷ ├╢ ” ö
ü ü ⁿ ├╝ ü