質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Q&A

1回答

470閲覧

PDFファイルの変換方法をおしえてください

kou_.2022

総合スコア0

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

0グッド

0クリップ

投稿2022/04/28 06:23

当方windows11のVSC2022を使用し拡張機能もインストールしています。
tabula.pyで フォルダ内のPDFをBOM付きCSVに変換する
方法がわかりません下記にコードを記載します。どなたかご教示願います。

import os import os.path import shutil import csv import sys import glob from pathlib import Path import tabulaimport os.path import shutil import csv import sys import glob from pathlib import Path import tabula #以下ユーザー定義関数 https://www.javadrive.jp/python/userfunc/index1.html#section1 def is_empty(dir_path: str) -> bool: return len(os.listdir(dir_path)) == 0 path_p = 'D:\\150_その他\\改\\変換済' path_csvu8 = 'D:\\105_Python\\01_PDFtoCSV\\CSV_file\\01_utf_8_files' path_csvsj = 'D:\\105_Python\\01_PDFtoCSV\\CSV_file\\02_Shift-JIS_files' # 拡張子 e_p = 'pdf' e_c = 'csv' if is_empty(path_csvu8): print('CSV-U8 サブフォルダ無し') os.rmdir(path_csvu8) else: print('CSV-U8 サブフォルダ有り') shutil.rmtree(path_csvu8) os.makedirs(path_csvu8) if is_empty(path_p): print('PDF サブフォルダ無し') else: print('PDF サブフォルダ有り') for fd_path, sb_folder, sb_file in os.walk(path_p): for fol in sb_folder: os.makedirs(path_csvu8 + '\\' + fol) if is_empty(path_csvsj): print('CSV-JIS サブフォルダ無し') shutil.rmtree(path_csvsj) else: print('CSV-JIS サブフォルダ有り') shutil.rmtree(path_csvsj) os.makedirs(path_csvsj) if os.path.isfile(path_p): print('ファイルのみが有る') for fil in glob.glob(path_p + '\\*.pdf'): print(fil) #tabula.convert_into(path_p + '\\' + fil, path_csvu8 + '\\' + fol + '\\' + fil + '.csv', stream=True , output_format='csv', pages='all',java_options="-Dfile.encoding=utf-8") elif os.path.exists(path_p): print('ファイルまたはフォルダが有る') if glob.glob(path_p + '\\*.pdf'): print('ファイルが有る') for dir , subdir , files in os.walk(path_p): for fil in files: fil_names = fil[:-4] file_names = fil file_names_c = path_csvu8 + '\\' + fil_names +'.csv' if os.path.exists(file_names):回避する tabula.convert_into(path_p + '\\' + fil, path_csvu8 + '\\' + fil_names + '.csv', stream=True , output_format='csv', pages='all',java_options="-Dfile.encoding=utf-8") else: for dir , subdir , files in os.walk(path_p): for fol in subdir: fol_name = path_p + '\\' + fol for dir , subdir , files in os.walk(fol_name): for fil in files: fil_names = fil[:-4] file_names = fol_name + '\\' + fil file_names_c = path_csvu8 + '\\' + fol + '\\' + fil_names +'.csv' if os.path.exists(file_names): tabula.convert_into(file_names, file_names_c, stream=True , output_format='csv', pages='all',java_options="-Dfile.encoding=utf-8")

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2022/04/28 06:40

で、そのコードを実行させたらどのような結果になるんでしょうか
kou_.2022

2022/04/28 10:56

変換はできますが日本語が文字化けしてしまいます。メモ帳で(UTF-8BOM付き)にると日本語になります
y_waiwai

2022/04/28 11:03

それを質問文に書きましょうよ。
guest

回答1

0

こんにちは。PDFをCSVに変換したいなら、ここに無料で使えるJava用のライブラリーである Spire.Office for Javaをおすすめします。このツールを参照に引用したら、まずPDFファイルをExcelに変換した後、そのExcelファイルをCSVに変換すればよいです。次は具体的なコードをご覧下さい。
PDFからExcelへ

import com.spire.pdf.FileFormat; import com.spire.pdf.PdfDocument; public class ToXLS { public static void main(String[] args) { //PdfDocumentオブジェクトを作成する PdfDocument pdf = new PdfDocument(); //サンプルPDFファイルをロードする pdf.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.pdf"); //Excelとして保存する pdf.saveToFile("output/ToXLS.xlsx", FileFormat.XLSX); } }

ExcelからCSVへ

import com.spire.xls.*; import java.nio.charset.Charset; public class ExcelToCSV { public static void main(String[] args) { //ブックを作成する Workbook workbook = new Workbook(); //サンプルのExcelファイルをロードする workbook.loadFromFile("C:\\Users\\Test1\\Desktop\\sample.xlsx"); //最初のシートを入手する Worksheet sheet = workbook.getWorksheets().get(0); //ドキュメントをCSVに保存する sheet.saveToFile("output/ToCSV_out.csv", ",", Charset.forName("UTF-8")); } }

お助けになるとなによりです(笑)

投稿2022/05/11 09:53

enj0ylife

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問