【问题标题】:How to convert TSV/CSV to PDF table [closed]如何将 TSV/CSV 转换为 PDF 表 [关闭]
【发布时间】:2015-09-04 17:20:37
【问题描述】:

是否有一种直接的方法可以使用命令行工具将制表符分隔文件(或 CSV)转换为 PDF 文档?据我所知,enscript 会将原始文本转换为 pdf,但我需要在 PDF 中排列列。有什么想法吗?

【问题讨论】:

    标签: bash pdf command-line converter tsv


    【解决方案1】:

    更新答案

    另一种选择可能是对您的文件进行两次遍历,并在第一次遍历中确定所有字段的最大宽度,然后输出为比第二次更宽的格式 - 全部使用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 文件可以修改成这样

    文件.csv

    col1,col2,col3
    ----,----,----
    r1c1,r1c2,r1c3
    r2c1,r2c2,r2c3
    r3c1,r3c2,r3c3
    

    您可以通过将逗号转换为管道符号 (|) 并将其通过 pandoc 运行以将 “管道表” 转换为独立的,从而将其转换为 PDF PDF 像这样:

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

    文档here

    【讨论】:

    • 使用 Libre Office:soffice --headless --convert-to pdf:calc_pdf_Export input.csv
    猜你喜欢
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 2014-03-05
    • 2019-05-30
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 2014-07-08
    相关资源
    最近更新 更多