首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PDF中获取以逗号分隔的带有颜色的页面列表?

如何在PDF中获取以逗号分隔的带有颜色的页面列表?
EN

Stack Overflow用户
提问于 2019-03-05 04:49:54
回答 1查看 92关注 0票数 0

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

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

首先)我使用

代码语言:javascript
复制
gs -o - -sDEVICE=inkcov colorpages.pdf | grep -v "^ 0.00000  0.00000  0.00000" | grep "^ " | wc 

然后我得到一个数字(带有颜色的页面总数)。

对于b)我使用

代码语言:javascript
复制
gs -o - -sDEVICE=inkcov  colorpages.pdf |tail -n +5 |sed '/^Page*/N;s/\n//' |sed -E '/Page [0-9]+ 0.00000 0.00000 0.00000 / d'

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

代码语言:javascript
复制
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

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

跟进

该命令

代码语言:javascript
复制
gs -o - -sDEVICE=inkcov colorpages.pdf |tail -n +5 |sed '/^Page*/N;s/\n//' |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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-05 05:24:40

代码语言:javascript
复制
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

如果col3,4,5需要为0才能调用一行着色,那么:(你可以试试这些条件)

代码语言:javascript
复制
awk '$3!=0 &&  $4!=0 && $5!=0{if(length(colored))colored=colored","$2;else colored=$2} END{print colored}'

更新

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

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54991314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档