ฉันต้องการแปลงไฟล์บางส่วนจาก jpeg เป็น pdf ฉันใช้คำสั่งดังต่อไปนี้
$ convert image1.jpg image1.pdf
แต่ฉันมี 100 ภาพ ฉันจะแปลงทั้งหมดให้เป็น pdf ที่สอดคล้องกันได้อย่างไร
ฉันเหนื่อย
$ convert image*.jpg image*.pdf
มันไม่ทำงาน
ฉันต้องการแปลงไฟล์บางส่วนจาก jpeg เป็น pdf ฉันใช้คำสั่งดังต่อไปนี้
$ convert image1.jpg image1.pdf
แต่ฉันมี 100 ภาพ ฉันจะแปลงทั้งหมดให้เป็น pdf ที่สอดคล้องกันได้อย่างไร
ฉันเหนื่อย
$ convert image*.jpg image*.pdf
มันไม่ทำงาน
คำตอบ:
ในทุบตี:
for f in *.jpg; do
convert ./"$f" ./"${f%.jpg}.pdf"
done
-ปัญหาเป็นอย่างอื่น
mogrifyพิมพ์ได้น้อยกว่ามาก ดูคำตอบของฉัน
คุณสามารถใช้mogrifyคำสั่งนี้ โดยปกติจะแก้ไขไฟล์ในสถานที่ แต่เมื่อแปลงรูปแบบจะเขียนไฟล์ใหม่ (เพียงแค่เปลี่ยนนามสกุลให้ตรงกับรูปแบบใหม่) ดังนั้น:
mogrify -format pdf -- *.jpg
(เช่นเดียวกับของ enzotib ./*.jpgสิ่งที่--ป้องกันไม่ให้ชื่อไฟล์แปลก ๆ ถูกตีความว่าเป็นสวิตช์คำสั่งส่วนใหญ่จำได้--ว่าหมายถึง "หยุดมองหาตัวเลือก ณ จุดนี้")
*.jpgและ*.pngไฟล์ไปคนเดียว*.pdf? โปรดทราบว่าพวกเขาเป็นไฟล์ที่มีหมายเลข (เช่น1.jpg 2.png 3.png 4.jpg) และคำสั่งนั้นควรได้รับการเก็บรักษา / สงวนไว้ในเอาต์พุต pdf
*.jpgเป็น*.pngขั้นตอนที่หนึ่งและดำเนินการเทียบเท่าคำตอบของคุณในขั้นตอนที่ 2 ...
ไวยากรณ์เร็วขึ้น แต่ผิดปกติ:
parallel convert '{} {.}.pdf' ::: *.jpg
ทำงานแบบขนาน (โดยใช้https://www.gnu.org/software/parallel/ ) ฉันยังไม่ได้สังเกตเห็นว่ามีหลายเธรดในconvertซึ่งจะ จำกัด การขนานที่มีประสิทธิภาพ หากนั่นเป็นข้อกังวลของคุณโปรดดูในความคิดเห็นด้านล่างสำหรับวิธีการเพื่อให้แน่ใจว่าจะไม่เกิดเธรดหลายเธรด
parallel) MAGICK_THREAD_LIMIT=1โดยการตั้งค่าตัวแปรสภาพแวดล้อม
https://gitlab.mister-muffin.de/josch/img2pdf
ในโซลูชันที่นำเสนอทั้งหมดที่เกี่ยวข้องกับ ImageMagick ข้อมูล JPEG จะถูกถอดรหัสและเข้ารหัสใหม่ทั้งหมด ซึ่งจะส่งผลในการสูญเสียรุ่นเช่นเดียวกับผลงาน "10-100" img2pdfครั้งเลวร้ายยิ่งกว่า
สามารถติดตั้งpip img2pdfได้หากคุณมีการอ้างอิง (เช่นapt-get install python python-pil python-setuptools libjpeg-devหรือyum install python python-pillow python-setuptools)
convert some.jpg -format pdf -compress jpeg generated.pdf ; pdfimages -j generated.pdf generated.pdf ; diff -sq some.jpg generated.pdf-000.jpgที่มีคำสั่งเช่น IMHO คำตอบนี้สมควรได้รับการโหวตมากขึ้น ที่จริงconvertล้มเหลวที่นี่img2pdfผ่านการทดสอบดังกล่าวและยังมีตัวเลือกมากมายในการกำหนดขนาดภาพขนาดหน้า ฯลฯ เพื่อปรับ PDF ที่สร้างขึ้นตามความต้องการของคุณ
img2pdfมีอยู่ใน Ubuntu 16.04 ที่เก็บปกติไม่จำเป็นต้องมีการดำเนินการด้วยpipตนเองและคุณจะได้รับประโยชน์จากการอัพเดท
นี่คือวิธีที่รวมคำแนะนำที่ดีที่สุดไว้ในบรรทัดคำสั่งที่เรียบง่ายมีประสิทธิภาพและแข็งแกร่ง:
find /path/to/files -iname '*.jpg' -exec mogrify -format pdf {} +
มันทำงานได้ดีกับชื่อไฟล์ที่ขึ้นต้นด้วย-หรือมีช่องว่าง หมายเหตุการใช้ของ-inameที่เป็นกรณีตายรุ่น-nameจึงจะทำงานในเพียงเป็น.JPG.jpg
สิ่งนี้ใช้findเพื่อรับรายการไฟล์แทนที่จะเป็นเชลล์โดยใช้*.jpgสัญลักษณ์แทนซึ่งอาจส่งผลให้เกิดข้อผิดพลาด 'รายการอาร์กิวเมนต์ยาวเกินไป'ในบางระบบ แม้ว่าจะเป็นจุด @enzotib ในความคิดเห็นพฤติกรรมของการใช้globbing ในสำหรับวงจะแตกต่างกว่าข้อโต้แย้งคำสั่งของ
นอกจากนี้findจะจัดการกับไดเรกทอรีย่อยในขณะที่เชลล์ globbing จะไม่เว้นเสียแต่ว่าคุณจะมีคุณสมบัติเฉพาะของเชลล์เช่น**/*jpgไวยากรณ์วนรอบแบบเรียกซ้ำใน zsh
แก้ไข:ฉันคิดว่าฉันจะเพิ่มคุณสมบัติที่มีประโยชน์อีกอย่างfindที่ฉันคิดหลังจากอ่านความคิดเห็นโดย@IlmariKaronenเกี่ยวกับการเรียกใช้คำสั่งอีกครั้งและแปลงไฟล์ที่มีการเปลี่ยนแปลงนับตั้งแต่การเรียกใช้ครั้งแรกเท่านั้น
ในการผ่านครั้งแรกคุณสามารถtouchไฟล์ประทับเวลาหลังจากการแปลงเสร็จสิ้น
find /path/to/files -iname '*.jpg' -exec mogrify -format pdf {} +; touch timestamp
จากนั้นเพิ่ม-newer timestampไปยังfindนิพจน์เพื่อทำงานกับชุดย่อยของไฟล์ที่เวลาที่แก้ไขล่าสุดนั้นใหม่กว่าไฟล์ประทับเวลา ทำการอัพเดตไฟล์เวลาต่อหลังจากเรียกใช้แต่ละครั้ง
find /path/to/files -iname '*.jpg' -newer timestamp -exec mogrify -format pdf {} +; touch timestamp
นี่เป็นวิธีที่ง่ายในการหลีกเลี่ยงการใช้ Makefile (เว้นแต่ว่าคุณกำลังใช้อยู่แล้ว) และเป็นอีกเหตุผลที่ดีว่าทำไมจึงควรใช้findทุกครั้งที่เป็นไปได้ ... มันมีความหมายที่หลากหลายและกระชับ
คุณสามารถทำได้convertโดยตรง นี้จะพบได้ที่ด้านล่างของ ImageMagicks เว็บไซต์เกี่ยวกับคำสั่งประมวลผลสาย
convert *.jpg +adjoin page-%d.pdf
convert *.jpg -adjoin output.pdfสำหรับ pdf ที่รวมกัน
ฉันใช้ makefile ต่อไปนี้เพื่อสิ่งที่คล้ายกัน:
SVG = $(wildcard origs/*.svg)
PNG = $(patsubst origs/%.svg,%.png,$(SVG))
all: $(PNG)
%.png: origs/%.svg
convert -resize "64x" $< $@
clean:
rm $(PNG)
ตอนนี้ฉันสามารถเรียกใช้makeและฉันได้รับไฟล์ png สำหรับไฟล์ svg ทุกไฟล์ที่อยู่รอบ ๆ
แก้ไข
ตามที่ขอ:
origs/foo.svgกลายเป็นfoo.png)all: $(PNG)กำหนดว่าเป้าหมาย "ทั้งหมด" ขึ้นอยู่กับ PNG ทั้งหมด%.png: origs/%.svgกำหนด, thethe ไฟล์ $ X.png ขึ้นอยู่กับ origs / $ X.svg convert ... $< $@และสามารถสร้างขึ้นโดยการเรียก
$< คือการพึ่งพาและและ $@ เป็นชื่อเป้าหมายmakeอีกครั้งจะเป็นการแปลงไฟล์เหล่านั้นกลับคืนและเฉพาะไฟล์ PDF ที่มีการเปลี่ยนแปลง
makeดูเหมือนเล็กน้อยที่ซับซ้อนมากกว่าเมื่อง่ายหนึ่งซับจะทำเคล็ดลับ
findดังนั้นคุณไม่ต้องหันไปใช้ Makefile
สคริปต์ตัวจิ๋วนั้นน่าจะหลอกได้ (ทดสอบด้วย ksh88 บน Solaris 10)
script.ksh
#!/bin/ksh
[[ $# != 1 ]] && exit 255 # test for nr of args
pdfname=$(sed -e 's/\(.*\)\.jpg/\1\.pdf/' <(echo $"1")) #replace *.jpg with *.pdf
convert "$1" $pdfname
จากนั้นคุณสามารถรันfindเพื่อรันสคริปต์:
find dir -name image\*.jpg -exec /bin/ksh script.ksh {} \;
โปรดทราบว่าทั้งสองscript.kshและfindคำสั่งที่ฉันให้คุณอาจมีไวยากรณ์ที่แตกต่างกันขึ้นอยู่กับระบบปฏิบัติการและเชลล์ที่คุณใช้
pdfname=${1%.*}.pdfpdfแทนที่นามสกุลไฟล์ที่มี วิธีการนั้นง่ายกว่ามากและใช้ได้แม้ว่าชื่อไฟล์จะมีอักขระพิเศษ ในบันทึกย่อที่เกี่ยวข้องให้เพิ่มเครื่องหมายคำพูดคู่ล้อมรอบการแทนที่ตัวแปร
ยูทิลิตี้ MacOSSIPS ภายใต้ MacOS (Sierra) ยูทิลิตี้บรรทัดคำสั่งในตัวของ Apple sipsช่วยให้สามารถเข้าถึงยูทิลิตี้ภาพแรสเตอร์ของ Apple ได้อย่างครอบคลุม นี้จะออกมารวมถึงการเปลี่ยนแปลงของการjpgpdf
ตัวอย่างเช่นจากjpgอิมเมจความละเอียดต่ำ / ขนาดเล็กที่มีอยู่'cat.jpg'(ขนาด 8401 ไบต์) บรรทัดคำสั่งต่อไปนี้จะสร้าง'cat.pdf'ขึ้นโดยไม่มีการเปลี่ยนแปลงในความละเอียดแรสเตอร์และการขยายขนาดไฟล์น้อยที่สุด:
$ sips -s format pdf cat.jpg --out 'cat.pdf' 1>/dev/null 2>&1
$ ls -l cat.*
-rw-r--r--@ 1 <user redacted> <group redacted> 8401 Jun 18 07:06 cat.jpg
-rw-r--r--+ 1 <user redacted> <group redacted> 10193 Jun 18 07:22 cat.pdf
การแปลงเป็นPSDรูปแบบภาพแรสเตอร์ของ Adobesipsสำนวนที่ คล้ายกันสร้าง*.psdไฟล์ที่เข้ากันได้กับ Adobe
$ sips -s format psd cat.jpg --out 'cat.psd' 1>/dev/null 2>&1
$ ls -l cat.jpg cat.psd
-rw-r--r--@ 1 Administration staff 8401 Jun 18 07:06 cat.jpg
-rw-r--r--+ 1 Administration staff 350252 Jun 18 07:37 cat.psd
อย่างไรก็ตามโปรดทราบว่าการขยายขนาดไฟล์ 30 เท่าที่ใช้ดูแลpsdรูปแบบAdope raster
การผลิตหนังสือ ในการผลิตหนังสือขนาดใหญ่ที่เกี่ยวข้องกับภาพหลายร้อยภาพที่จัดจำหน่ายในหลายรูปแบบสำหรับฉันสำนวนบรรทัดคำสั่งที่สะดวกสบายได้ใช้ImageMagickยูทิลิตี้เพื่อสร้างไฟล์ภาพแรสเตอร์บริสุทธิ์ในpngรูปแบบ (พร้อม meta-data ทั้งหมดและ โปรไฟล์สีถอดออก) จากนั้นใช้sipsในการเรียกคืนชุดเครื่องแบบของโปรไฟล์สีและ / หรือความคิดเห็นและการใช้งานsipsนอกจากนี้ยังมีการสร้างไฟล์ผลลัพธ์สุดท้าย (โดยทั่วไป*.png, *.psdหรือ*.pdfไฟล์)
แต่น่าเสียดายที่convertการเปลี่ยนแปลงภาพก่อนหน้านี้เพื่อให้มีการสูญเสียคุณภาพของต้นฉบับที่น้อยที่สุดที่jpgคุณต้องการใช้img2pdfฉันใช้คำสั่งนี้:
1) สิ่งนี้จะทำให้pdfไฟล์ออกมาจากjpgภาพทุกภาพโดยไม่สูญเสียความละเอียดหรือคุณภาพ:
ls -1 ./*jpg | xargs -L1 -I {} img2pdf {} -o {}.pdf
2) สิ่งนี้เพื่อเชื่อมpdfหน้าเป็นหนึ่งเดียว:
pdftk *.pdf cat output combined.pdf
3) และสุดท้ายฉันเพิ่มเลเยอร์ข้อความ OCRed ที่ไม่เปลี่ยนคุณภาพของการสแกนในไฟล์ PDF เพื่อให้สามารถค้นหาได้:
pypdfocr combined.pdf
ฉันได้รับการแก้ปัญหาด้วย imagemagick สำหรับการแปลงและขนานเพื่อเร่งกระบวนการแปลงของฉัน:
ls *.JPEG |parallel convert -density 200 -resize 496X646 -quality 100 {} ../{.}.PDF
วิธีที่ง่ายที่สุดวิธีหนึ่งในการแปลงไฟล์หลายไฟล์คือไปที่ไดเรกทอรีไฟล์ใน linux terminal และประเภท:
$ convert *.png mypdf.pdf
หากคุณใช้ไฟล์รูปภาพเพียงอย่างเดียวบางทีคุณอาจต้องการใช้Comic Book Archive (.cbr, .cbz, .cbt, .cba, .cb7)
มีความยืดหยุ่นมากกว่า PDF
Under Linux you can use software like Comix, Evince, Okular and QComicBook.
https://secure.wikimedia.org/wikipedia/en/wiki/Comic_book_archive