2015-09-04 78 views
-3

使用命令行工具将制表符分隔的文件(或CSV)转换为PDF文档有没有直接的方法?据我所知,enscript会将原始文本转换为pdf,但我需要将这些列排列在PDF中。任何意识形态?如何将TSV/CSV转换为PDF表格

回答

3

更新回答

另一种选择可能是在你的文件进行两遍,并确定在第一轮的所有字段的最大宽度,然后输出到刚刚高于更宽第二格式 - 所有使用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

+2

using Libre Office:'soffice --headless --convert-to pdf:calc_pdf_Export input.csv' – hoijui