如何将TSV / CSV转换为PDF表格

时间:2015-09-04 17:20:38

标签: bash pdf command-line converter tsv

是否有使用命令行工具将制表符分隔文件(或CSV)转换为PDF文档的简单方法?据我所知,enscript将原始文本写为pdf,但我需要列在PDF中排列。任何想法?

1 个答案:

答案 0 :(得分:4)

更新了答案

另一种选择可能是对文件进行两次传递,并确定第一次传递的所有字段的最大宽度,然后输出为比第二次传递更宽的格式 - 全部使用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 >像这样独立PDF

tr ',' '|' < file | pandoc -s -o result.pdf

文档here