如何获取PDF格式的逗号分隔页面列表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取PDF格式的逗号分隔页面列表?相关的知识,希望对你有一定的参考价值。

考虑这个PDF'colorpages.pdf'链接here

我有两个命令可以知道a)我的PDF中有多少彩色页面b)使用哪种页面颜色。

对于a)我用

gs -o - -sDEVICE=inkcov colorpages.pdf | grep -v "^ 0.00000  0.00000  0.00000" | grep "^ " | wc 

然后我找回一个数字(有颜色的页面总数)。

对于b)我使用

gs -o - -sDEVICE=inkcov  colorpages.pdf |tail -n +5 |sed '/^Page*/N;s/
//' |sed -E '/Page [0-9]+ 0.00000 0.00000 0.00000 / d'

这给了我一个很好的颜色信息列表;例如

Page 1 0.00000  0.00000  0.00000  0.99454 CMYK OK
Page 2 0.00000  0.99228  0.00000  0.00000 CMYK OK
Page 3 0.99222  0.00000  0.00000  0.00000 CMYK OK
Page 4 0.99289  0.99289  0.99289  0.99289 CMYK OK
Page 5 0.99316  0.99316  0.00000  0.00000 CMYK OK
Page 6 0.99130  0.99130  0.99130  0.99130 CMYK OK
Page 7 0.00000  0.00000  0.00000  0.99392 CMYK OK
Page 8 0.00000  0.00000  0.00000  0.99189 CMYK OK
Page 9 0.00000  0.00000  0.00000  0.99128 CMYK OK
Page 10 0.00000  0.00000  0.98594  0.00000 CMYK OK
Page 11 0.00000  0.98908  0.98908  0.00000 CMYK OK
Page 12 0.00000  0.00000  0.00000  0.98682 CMYK OK

但我需要(另外)是使用所有页面颜色的逗号分隔列表。


跟进

命令

gs -o - -sDEVICE=inkcov colorpages.pdf |tail -n +5 |sed '/^Page*/N;s/
//' |sed -E '/Page [0-9]+ 0.00000 0.00000 0.00000 / d' | awk '$3!=0 && $4!=0 && $5!=0{if(length(colored))colored=colored","$2;else colored=$2} END{print colored}'

给我以下列表1,2,3,4,5,6,7,8,9,10,11,12。但它应该是2,3,4,5,6,10,11。

答案
awk '$3!=0{if(length(colored))colored=colored","$2;else colored=$2} END{print colored}'
2,5,7




 -->echo "$x"
Page 1 0.00000  0.00000  0.00000  0.12395 CMYK OK
Page 2 0.00016  0.00035  0.00017  0.47061 CMYK OK
Page 3 0.00000  0.00000  0.00000  0.34571 CMYK OK
Page 4 0.00000  0.00000  0.00000  0.32637 CMYK OK
Page 5 0.00016  0.00035  0.00017  0.47061 CMYK OK
Page 6 0.00000  0.00000  0.00000  0.63394 CMYK OK
Page 7 0.00016  0.00035  0.00017  0.47061 CMYK OK


echo "$x" |awk '$3!=0{if(length(colored))colored=colored","$2;else colored=$2} END{print colored}'
2,5,7

如果col 3,4,5需要0调用一行颜色然后:(你可以玩这些条件)

awk '$3!=0 &&  $4!=0 && $5!=0{if(length(colored))colored=colored","$2;else colored=$2} END{print colored}'

更新:

您可以使用OR运算符(||)来获得问题中提到的所需结果。

echo "$x" |awk '$3!=0 ||  $4!=0 || $5!=0{if(length(colored))colored=colored","$2;else colored=$2} END{print colored}'
2,3,4,5,6,10,11

以上是关于如何获取PDF格式的逗号分隔页面列表?的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL(CSV)格式文件如何转换为带逗号分隔符的TXT文件

如何获取用逗号“,”分隔的值

如何从数据库中获取逗号分隔值

jquery:获取逗号分隔列表中的前 X 个项目

如何将Excel文档转换成UTF-8格式的文本文件

从逗号分隔的字符串 [XML/XSL] 创建选择下拉列表