如何将 TSV/CSV 转换为 PDF table
How to convert TSV/CSV to PDF table
是否有使用命令行工具将制表符分隔文件(或 CSV)转换为 PDF 文档的直接方法?据我所知,enscript 会将原始文本转换为 pdf,但我需要这些列在 PDF 中对齐。有什么想法吗?
更新答案
另一种选择可能是对您的文件进行两次遍历,并在第一次遍历时确定所有字段的最大宽度,然后输出为比第二次更宽的格式 - 全部使用 awk
。所以,如果你的 input.csv
看起来像这样:
r1c1,r1c2longpuppy,r1c3
r2c1dddf,r2c2,r2c3
r3c1,r3c2,r3c3iiiiiiiiiiiiiiiiiiiiiiiii
你可以这样做:
awk -F, '
FNR==NR { # first pass, determine max length of each field
for(f=1;f<=NF;f++){if(length($f)>widest[f])widest[f]=length($f)}
next;
}
{ # second pass, print each field just wider than widest
for(f=1;f<=NF;f++){
printf "%-" widest[f] "s ",$f
}
printf "\n"
}' file.csv file.csv
这给你这个:
r1c1 r1c2longpuppy r1c3
r2c1dddf r2c2 r2c3
r3c1 r3c2 r3c3iiiiiiiiiiiiiiiiiiiiiiiii
您大概可以将其传递给 enscript
。
原答案
如果你的 CSV 文件可以被修改成这样
file.csv
col1,col2,col3
----,----,----
r1c1,r1c2,r1c3
r2c1,r2c2,r2c3
r3c1,r3c2,r3c3
您可以将逗号转换为管道符号 (|
) 将其转换为 PDF
,并通过 pandoc
将其 运行 转换为 "pipe table"变成单机PDF
像这样:
tr ',' '|' < file | pandoc -s -o result.pdf
文档 here.
是否有使用命令行工具将制表符分隔文件(或 CSV)转换为 PDF 文档的直接方法?据我所知,enscript 会将原始文本转换为 pdf,但我需要这些列在 PDF 中对齐。有什么想法吗?
更新答案
另一种选择可能是对您的文件进行两次遍历,并在第一次遍历时确定所有字段的最大宽度,然后输出为比第二次更宽的格式 - 全部使用 awk
。所以,如果你的 input.csv
看起来像这样:
r1c1,r1c2longpuppy,r1c3
r2c1dddf,r2c2,r2c3
r3c1,r3c2,r3c3iiiiiiiiiiiiiiiiiiiiiiiii
你可以这样做:
awk -F, '
FNR==NR { # first pass, determine max length of each field
for(f=1;f<=NF;f++){if(length($f)>widest[f])widest[f]=length($f)}
next;
}
{ # second pass, print each field just wider than widest
for(f=1;f<=NF;f++){
printf "%-" widest[f] "s ",$f
}
printf "\n"
}' file.csv file.csv
这给你这个:
r1c1 r1c2longpuppy r1c3
r2c1dddf r2c2 r2c3
r3c1 r3c2 r3c3iiiiiiiiiiiiiiiiiiiiiiiii
您大概可以将其传递给 enscript
。
原答案
如果你的 CSV 文件可以被修改成这样
file.csv
col1,col2,col3
----,----,----
r1c1,r1c2,r1c3
r2c1,r2c2,r2c3
r3c1,r3c2,r3c3
您可以将逗号转换为管道符号 (|
) 将其转换为 PDF
,并通过 pandoc
将其 运行 转换为 "pipe table"变成单机PDF
像这样:
tr ',' '|' < file | pandoc -s -o result.pdf
文档 here.