我想将一堆jpeg文件转换为一个pdf文件。文件采用编号格式:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
browser = webdriver.Chrome('/home/zona/chromedriver')
url = 'https://www.rottentomatoes.com/'
browser.get(url)
time.sleep(10)
try:
element = WebdriverWait(browser, 10).until(
EC.presence_of_element_located((By.XPATH,'//body//input[@name="search"]')))
element = browser.find_element_by_xpath('//body//input[@name="search"]')
element.clear()
element.send_keys("avatar")
except:
print("cound not find search box")
time.sleep(5)
browser.quit()
给出:
gls -v 2014-2015-2016_R_TR-4_all_170213*.jpeg
这是jpegs应该在pdf中显示的顺序。
'2014-2015-2016_R_TR-4_all_170213 1.jpeg'
'2014-2015-2016_R_TR-4_all_170213 2.jpeg'
'2014-2015-2016_R_TR-4_all_170213 3.jpeg'
'2014-2015-2016_R_TR-4_all_170213 4.jpeg'
'2014-2015-2016_R_TR-4_all_170213 5.jpeg'
'2014-2015-2016_R_TR-4_all_170213 6.jpeg'
'2014-2015-2016_R_TR-4_all_170213 7.jpeg'
'2014-2015-2016_R_TR-4_all_170213 8.jpeg'
'2014-2015-2016_R_TR-4_all_170213 9.jpeg'
'2014-2015-2016_R_TR-4_all_170213 10.jpeg'
给出
ls -l
...
我试过
-rw-r--r-- 1 rziege staff 662186 13 Feb 16:06 2014-2015-2016_R_TR-4_all_170213 1.jpeg
-rw-r--r-- 1 rziege staff 867422 13 Feb 16:06 2014-2015-2016_R_TR-4_all_170213 10.jpeg
-rw-r--r-- 1 rziege staff 642198 13 Feb 16:06 2014-2015-2016_R_TR-4_all_170213 2.jpeg
-rw-r--r-- 1 rziege staff 1110602 13 Feb 16:06 2014-2015-2016_R_TR-4_all_170213 3.jpeg
-rw-r--r-- 1 rziege staff 1068419 13 Feb 16:06 2014-2015-2016_R_TR-4_all_170213 4.jpeg
-rw-r--r-- 1 rziege staff 1326947 13 Feb 16:06 2014-2015-2016_R_TR-4_all_170213 5.jpeg
-rw-r--r-- 1 rziege staff 1248453 13 Feb 16:06 2014-2015-2016_R_TR-4_all_170213 6.jpeg
-rw-r--r-- 1 rziege staff 1106629 13 Feb 16:06 2014-2015-2016_R_TR-4_all_170213 7.jpeg
-rw-r--r-- 1 rziege staff 1152435 13 Feb 16:06 2014-2015-2016_R_TR-4_all_170213 8.jpeg
-rw-r--r-- 1 rziege staff 1300553 13 Feb 16:06 2014-2015-2016_R_TR-4_all_170213 9.jpeg
-rw-r--r-- 1 rziege staff 867422 13 Feb 16:06 2014-2015-2016_R_TR-4_dir_170213 10.jpeg
-rw-r--r-- 1 rziege staff 642718 13 Feb 16:06 2014-2015-2016_R_TR-4_dir_170213 2.jpeg
-rw-r--r-- 1 rziege staff 1118243 13 Feb 16:06 2014-2015-2016_R_TR-4_dir_170213 3.jpeg
-rw-r--r-- 1 rziege staff 1074675 13 Feb 16:06 2014-2015-2016_R_TR-4_dir_170213 4.jpeg
带
convert "$file"*.jpeg "$file".pdf
以错误的顺序生成pdf文件(1,10,2,3,...)。
我的替代方法
$file=2014-2015-2016_R_TR-4_all_170213
和
gls -v "$file"*.jpeg | convert "$file".pdf
也不起作用。有没有人知道我是如何让这个工作的?
答案 0 :(得分:2)
更新了答案
嗯,这个空间以及你的数字不是零填充的事实正在结合起来让你进去!我建议,如果您自己生成图像,那么您可以将它们命名为没有空格,并且填充它们的数字以便它们按顺序出现而无需特殊处理?例如。 file-0001.jpg
,file-002.jpg
等 - 通常只是在生成文件名时使用sprintf("%03d"...)
的情况。
无论如何,对于手头的情况,我认为我们需要一些笨拙的语法来做到这一点:
gls "$file*.jpg" | while read f; do
convert "$f" miff:-
done | convert miff:- Something.pdf
原始答案
尝试:
gls -v | convert @- something.pdf
答案 1 :(得分:1)
您要运行的命令基本上是
convert '2014-2015-2016_R_TR-4_all_170213 1.jpeg' '2014-2015-2016_R_TR-4_all_170213 2.jpeg' '2014-2015-2016_R_TR-4_all_170213 3.jpeg' '2014-2015-2016_R_TR-4_all_170213 4.jpeg' '2014-2015-2016_R_TR-4_all_170213 5.jpeg' '2014-2015-2016_R_TR-4_all_170213 6.jpeg' '2014-2015-2016_R_TR-4_all_170213 7.jpeg' '2014-2015-2016_R_TR-4_all_170213 8.jpeg' '2014-2015-2016_R_TR-4_all_170213 9.jpeg' '2014-2015-2016_R_TR-4_all_170213 10.jpeg' '2014-2015-2016_R_TR-4_all_170213.pdf'
而不是
convert '2014-2015-2016_R_TR-4_all_170213 1.jpeg' '2014-2015-2016_R_TR-4_all_170213 10.jpeg' '2014-2015-2016_R_TR-4_all_170213 2.jpeg' '2014-2015-2016_R_TR-4_all_170213 3.jpeg' '2014-2015-2016_R_TR-4_all_170213 4.jpeg' '2014-2015-2016_R_TR-4_all_170213 5.jpeg' '2014-2015-2016_R_TR-4_all_170213 6.jpeg' '2014-2015-2016_R_TR-4_all_170213 7.jpeg' '2014-2015-2016_R_TR-4_all_170213 8.jpeg' '2014-2015-2016_R_TR-4_all_170213 9.jpeg' '2014-2015-2016_R_TR-4_all_170213.pdf'
我不熟悉,但我假设gls -v正在生成带引号的输出
这样:
gls -v "$file"*.jpeg|tr '\n' ' ';
应输出:
'2014-2015-2016_R_TR-4_all_170213 1.jpeg' '2014-2015-2016_R_TR-4_all_170213 2.jpeg' '2014-2015-2016_R_TR-4_all_170213 3.jpeg' '2014-2015-2016_R_TR-4_all_170213 4.jpeg' '2014-2015-2016_R_TR-4_all_170213 5.jpeg' '2014-2015-2016_R_TR-4_all_170213 6.jpeg' '2014-2015-2016_R_TR-4_all_170213 7.jpeg' '2014-2015-2016_R_TR-4_all_170213 8.jpeg' '2014-2015-2016_R_TR-4_all_170213 9.jpeg' '2014-2015-2016_R_TR-4_all_170213 10.jpeg'
如果是这种情况,这应该可以正常工作:
eval 'convert '"$(gls -v "$file"*.jpeg|tr '\n' ' ')"' outfile.pdf'
但是为了确保,首先尝试并检查输出是否是有效的shell命令:
echo 'convert '"$(gls -v "$file"*.jpeg|tr '\n' ' ')"' outfile.pdf'
如果$file
中没有特殊字符的空格,这也是有效的:
echo 'convert '"$(gls -v $file*.jpeg|tr '\n' ' ')"' '$file.pdf