จะแยกและ / หรือลบหน้าสุดท้ายของไฟล์ PDF เป็นกลุ่มได้อย่างไร?


14

หนึ่งในผู้ค้าของเราเริ่มทำการแก้ไขภาพขนาดใหญ่โดยไม่จำเป็นไปยังหน้าสุดท้ายของ PDF ที่เราได้รับจากพวกเขา ฉันต้องการตัดออก อย่างไรก็ตามเรามีหลายร้อยรายการดังนั้นจึงเป็นสิ่งต้องห้ามที่จะเข้าไปด้วยตนเอง อะไรคือวิธีที่ดีที่สุดในการแยกแล้วลบ (ควรเลือกก่อนอื่นและฉันยังต้องยืนยันผ่านขนาดไฟล์ว่าฉันไม่ได้ลบรูปที่ไม่มีภาพ) หน้าสุดท้ายของ PDF โดยอัตโนมัติ ระบบปฏิบัติการคือ Linux

ฉันสามารถแยกมันออกมาได้โดยใช้ ghostscript พร้อมบางสิ่งบางอย่างในแนวเส้นgs -dFirstPage=5 -dLastPage=5แต่ฉันต้องการทำให้เป็นแบบอัตโนมัติฉันไม่สามารถผ่านไปได้ด้วยตนเองและค้นหาด้วยตนเองว่าจำนวนหน้าสุดท้ายคืออะไร

ความคิดใด ๆ

แก้ไข: เพื่อชี้แจงฉันเพียงต้องการแยก / ลบหน้าสุดท้าย ไม่ใช่ภาพที่อยู่ในนั้นให้เพิ่มระยะเวลาหน้าสุดท้าย


1
ดูpdftk- ฉันคิดว่ามันสามารถทำงานโดยทั่วไปสำหรับงานประเภทนี้
Daniel Andersson

ซ้ำซ้อนที่เป็นไปได้: Unix: แปลงไฟล์ PDF เป็นภาพ
ahilsend

2
ไม่ซ้ำซ้อนจากระยะไกล
แอนดรูว์

ฉันรู้สึกว่าฉันควรชี้แจง: ฉันไม่สนใจที่จะลบภาพในหน้าสุดท้าย ฉันสนใจที่จะลบหน้าสุดท้าย, ช่วงเวลา
แอนดรู

1
คำถามที่เกี่ยวข้องกับคำตอบที่แตกต่างกันหลายข้อใน Ask Ubuntu: askubuntu.com/questions/221962/…
TuringTux

คำตอบ:


2

ตามที่ @Daniel Andersson แสดงความคิดเห็นแล้วสิ่งนี้สามารถทำได้โดยง่ายpdftk:

pdftk input.pdf cat end-1 output temp.pdf
pdftk temp.pdf  cat end-2 output output.pdf
rm temp.pdf

ฉันไม่รู้ว่าสามารถทำได้ด้วยการเรียก pdftk เพียงครั้งเดียวหรือไม่ ...

แก้ไข : คุณสามารถรวมเข้ากับคำตอบและการใช้งานของ thanosk (เป็นทุบตี):

pdftk input.pdf cat 1-$((last-1)) output output.pdf

เมื่อคุณแยกหน้าสุดท้ายไปยังตัวแปร$lastแล้ว


ตัวอย่างไม่ทำงาน พบคำตอบ @Sid Steward เพื่อการทำงานที่ดีขึ้น
Reado

14

เพื่อปรับปรุงคำตอบของ @ eldering เพิ่มเติม pdftk เวอร์ชั่น 1.45 และต่อมามีวิธีการอ้างอิงหน้าในลำดับย้อนกลับโดยการเติมตัวอักษรพิมพ์เล็กและตัวอักษร r ไปยังหมายเลขหน้า หน้าสุดท้ายใน PDF คือ r1 หน้าถัดไปสุดท้ายคือ r2 เป็นต้น

ตัวอย่างเช่นการเรียก pdftk เดียว:

pdftk input.pdf cat 1-r2 output output.pdf

จะวางหน้าสุดท้ายจาก input.pdf - ข้อมูลที่ป้อนควรมีความยาวอย่างน้อยสองหน้า

หากต้องการแยกหน้าสุดท้ายของ PDF เพื่อทดสอบขนาดไฟล์ให้รัน:

pdftk input.pdf cat r1 output final_page.pdf

Pdftk พร้อมใช้งานบน Linux distros จำนวนมากมีไบนารีที่คุณสามารถติดตั้งได้ คุณควรตรวจสอบให้แน่ใจว่าเป็นรุ่น 1.45 หรือใหม่กว่า ถ้าไม่คุณสามารถสร้าง pdftk จากซอร์สโค้ด


สิ่งที่ rN เป็นสิ่งที่ฉันต้องการเพราะระบบสร้าง pdf ของฉันที่ทำจากยางพารามักจะผลิตหน้าเปล่า ๆ ไว้ที่จุดเริ่มต้นและใกล้ถึงจุดสิ้นสุดของเอกสารฉันจึงต้องลบมันออกด้วยตนเองในตอนท้าย ตอนนี้ฉันเพิ่งโทร: pdftk A = pocket20.pdf cat เอาต์พุท A3-r6 r3-end pocket_to_print.pdf ซึ่งจะลบสองหน้าแรกและหน้าสุดท้ายที่ 4 และ 5
Martin T.

1

pdfinfo จะให้ขนาดของไฟล์ pdf จริงและ pdfimages จะให้ดัชนีของรูปภาพในไฟล์ pdf ดังกล่าว ดังนั้นคุณสามารถเขียนสคริปต์ในรูปแบบ

#!/bin/bash
for i in *.pdf
do
        j=$(pdfinfo "$i" |awk '/^Pages/ { print $2}')
        pdfimages -list -p -f "$j" "$i"
done

ที่ควรกลับมาหากไฟล์ใดไฟล์หนึ่งมีภาพในหน้าสุดท้าย ถ้าเป็นเช่นนั้นคุณสามารถจัดการสิ่งที่คุณต้องทำ


0

นี่เป็นวิธีแก้ปัญหาโดยใช้ pdfjam แทน pdftk:

#!/bin/sh
fname=`basename $1`
pdfjam $1 1-$((`pdfinfo $1 | grep Pages | grep -shoPe '\d+'` - ${2:-1})) -o ${fname%.*}-trimmed.pdf

โดยที่อาร์กิวเมนต์แรกคือไฟล์ที่จะตัดและอาร์กิวเมนต์ที่สองคือจำนวนหน้าที่จะตัด (เริ่มต้นที่ 1)


0

วิธีการแก้ปัญหาซับหนึ่งจะใช้findพร้อมpdftk:

find . -name "*.pdf" -exec pdftk {} cat 1-r2 output cut/{} \;

หมายเหตุ : ไฟล์ที่ถูกครอบตัดจะถูกเก็บไว้ในตัวอย่างนี้ในไดเรกทอรีย่อยที่เรียกว่าcutเก็บชื่อไฟล์ดั้งเดิมไว้เนื่องจากpdftkไม่อนุญาตให้เขียนทับไฟล์อินพุต

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.