เครื่องมือบรรทัดคำสั่งเพื่อครอบตัดไฟล์ PDF


101

ฉันกำลังมองหาเครื่องมือบรรทัดคำสั่งโอเพนซอร์ซเพื่อตัดไฟล์ PDF เหมือนที่เราทำได้ใน Adobe Acrobat Pro ฉันได้ลอง PdfTk, ImageMagick, PyPDF และ GhostScript แล้วทั้งหมดนี้ยังไม่ประสบความสำเร็จ


คุณช่วยอธิบายการครอบตัดชนิดใดที่คุณสามารถทำได้กับ Adobe Acrobat pro เพราะฉันไม่มีและไม่สามารถบอกได้ว่าคุณกำลังมองหาอะไร
xubuntix

ใน Adobe Acrobat Pro เราสามารถใช้การควบคุมระยะขอบเพื่อครอบตัด PDF เราสามารถให้ค่าสำหรับด้านบนด้านล่างขวาและซ้ายเพื่อครอบตัด
Rakesh

คำตอบ:


124

ผมขอแนะนำให้คุณดูที่PDFcrop

หากคุณต้องการครอบตัด pdf ที่มีระยะขอบซ้ายบนขวาและล่างที่ 5, 10, 20 และ 30 pt (คะแนน) จากนั้นเรียกใช้

pdfcrop --margins '5 10 20 30' input.pdf output.pdf

ในอาคารผู้โดยสาร หากต้องการครอบตัดบางสิ่งออกไปให้ใช้ค่าลบในอาร์กิวเมนต์สำหรับครอบตัด ตัวอย่างเช่น,

pdfcrop --margins '-50 -50 -50 -50' input.pdf output.pdf

ครอบตัด 50 pts จากซ้าย, บน, ขวา, ล่าง (ตามลำดับนี้)

หากคุณเรียกใช้คำสั่งเท่านั้นคำสั่งpdfcrop inputจะส่งไฟล์ชื่อinput-crop.pdfโดยไม่มีระยะขอบ ฉันพบว่ามันมีประโยชน์มากเมื่อรวมภาพประกอบ pdf ในเอกสาร

การครอบตัดหลายไฟล์

น่าเสียดายที่ pdfcrop ไม่สามารถครอบตัดไฟล์หลายไฟล์ในเวลาเดียวกัน อย่างไรก็ตามมันง่ายที่จะเขียนสคริปต์ที่จะครอบตัดไฟล์ PDF ทั้งหมดในโฟลเดอร์ที่สคริปต์ตั้งอยู่

something.shสร้างไฟล์ใหม่ที่ว่างเปล่าและเรียกมันว่า เปิดด้วยโปรแกรมแก้ไขข้อความและใส่ต่อไปนี้:

#!/bin/bash
for FILE in ./*.pdf; do
  pdfcrop "${FILE}"
done

บันทึกและปิด แล้วคลิกขวาที่ไฟล์ไปที่Properties> การอนุญาตและตรวจสอบสนามอนุญาตให้ดำเนินการเป็นไฟล์โปรแกรม ตอนนี้ปิดกล่องโต้ตอบ เรียกใช้สคริปต์โดยดับเบิลคลิกมันและเลือกเรียกใช้ในเทอร์มิ และเวอร์ชั่นใหม่ที่ถูกตัดขอบศูนย์จากไฟล์ PDF ทั้งหมดที่มีคำต่อท้าย-cropจะถูกพิมพ์ในโฟลเดอร์ ถ้าคุณต้องการที่อัตรากำไรขั้นต้นหรือสิ่งอื่น ๆ pdfcropที่คุณสามารถของหลักสูตรเพียงแค่เปิดสคริปต์และเพิ่มข้อโต้แย้งหลัง


--bbox "<left> <bottom> <right> <top>"โปรดทราบว่าแทนการระบุอัตรากำไรเชิงลบหนึ่งยังสามารถใช้ นี้จะช่วยให้ใช้วิธีการในการกำหนดพื้นที่เพาะปลูกที่อธิบายไว้ในของฉันคำตอบด้านล่าง
bluenote10

มีความเป็นไปได้ที่จะบอกหมายเลขหน้า (ซึ่งจะต้องมีการครอบตัด) หรือไม่?
LK

ฉันกลัวว่าทั้งหมดหรือเปล่า pdfcrop --helpแสดงรายการตัวเลือกที่มี ฉันไม่เห็นสิ่งใดที่จะอนุญาตให้ระบุช่วงของหน้า
Rasmus

7
เปรียบเทียบขนาดของเอาต์พุต PDFCrop กับอินพุตดูเหมือนว่า pdfcrop จะปรับเปลี่ยนกล่องขอบเขตเท่านั้น มันไม่ได้ลบข้อมูล ดังนั้นวิธีนี้จะไม่เหมาะที่จะทำให้ pdf เล็กลงหรือซ่อนข้อมูล
init_js

เหมือนมีเสน่ห์! แม้จะมีระยะขอบของไฟล์ PDF จำเป็น!
jojo

36

ขอบคุณสำหรับ Rasmus คุณสามารถติดตั้ง pdfcrop จากแพ็คเกจ texlive-extra-utils:

sudo apt-get install texlive-extra-utils

จากนั้นครอบตัดไฟล์ PDF โดยใช้คำสั่ง pdf ครอบตัดเป็น:

pdfcrop input.pdf output.pdf

ใช้--helpเพื่อดูพารามิเตอร์ที่น่าทึ่งมากขึ้นเช่น--margins

pdfcrop --margins 5 input.pdf output.pdf

เลือกครอบตัดไฟล์ PDF ที่มี 5 bp จากแต่ละด้านของหน้าเว็บ


1
การวัดเป็นซึ่งจะแตกต่างกันเล็กน้อยจากbp ptดูtex.stackexchange.com/questions/8260/...
koppor

2
สำหรับฉัน pdfcrop นั้นขยายขนาดไฟล์จาก 300x (จาก 7MB ถึง 2GB) ฉันต้องทำgs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdfหลังจากนั้นซึ่งแก้ไขขนาดไฟล์
fiktor

17

คุณสามารถครอบตัดไฟล์ PDF เพียงแค่ใช้ Ghostscript ฉันได้เขียนสคริปต์เล็กน้อยเพื่อให้กระบวนการง่ายขึ้น (ได้รับแรงบันดาลใจจากคำตอบนี้ ):

#!/bin/bash

if [ $# -lt 5 ]
then
  echo "Usage: `basename $0` <pdf-file> <x_min> <x_max> <y_min> <y_max>"
  echo "Notes:"
  echo " - all coordinates are absolute; no calculation of width/height necessary"
  echo " - use 'gv' to determine the coordinates"
  exit 65
fi

file="$1"
xmin="$2"
xmax="$3"
ymin="$4"
ymax="$5"

base="${file%.*}"
outfile="${base}_cropped.pdf"

echo "writing to: $outfile"

gs \
  -o $outfile \
  -sDEVICE=pdfwrite \
  -c "[/CropBox [$xmin $ymin $xmax $ymax] /PAGES pdfmark" \
  -f $file

เพื่อกำหนดพิกัดสำหรับการครอบตัดฉันใช้gvซึ่งจะพิมพ์พิกัดของเคอร์เซอร์ของเมาส์โดยใช้หน่วยเดียวกับ Ghostscript ตัวอย่างเช่นที่นี่ฉันจะกำหนดพิกัดขั้นต่ำสำหรับ x / y (ค่าที่มุมบนซ้าย):

crop1

ตอนนี้พิกัดสูงสุด:

crop2

และในที่สุดผมเรียกใช้สคริปต์pdf_crop_by_coordinates.sh test.pdf 45 429 38 419การผลิตtest_cropped.pdfซึ่งมีลักษณะเหมือนว่า:

ผลลัพธ์

ฉันไม่มีความคิดในเรื่องที่ Ghostscript เปรียบเทียบว่าpdfcropในแง่ของคุณภาพและความถูกต้องอย่างไร


15

เมื่อฉันไม่สามารถทำอะไรกับ pdftk ต่อไปที่ฉันเปิดคือPDFjamซึ่งเป็น wrapper บรรทัดคำสั่งสำหรับแพ็คเกจ LaTeX pdfpages (ดังนั้นคุณต้องติดตั้งและติดตั้ง TeX distro ด้วย) สำหรับความช่วยเหลือเกี่ยวกับวิธีการใช้งานฉันแนะนำหน้าจอความช่วยเหลือปกติ:

pdfjam --help

เนื่องจาก man man นั้นกระจัดกระจายและเว็บเพจนั้นมุ่งเน้นไปที่ตัวอย่าง

ในการครอบตัด PDF คำสั่งที่คุณต้องการมีดังนี้:

pdfjam --keepinfo --trim "10mm 15mm 10mm 15mm" --clip true --suffix "cropped" input.pdf

input-cropped.pdfนี้ออกจะไฟล์ที่เรียกว่า คำสั่งของจดจ้องควรจะเหลือล่างด้านขวาบนเป็นต่อ\includegraphicsจากgraphicx

เพื่อให้ความคิดเกี่ยวกับวิธีเปรียบเทียบกับ PDFcrop ฉันได้ทำให้รูปแบบไฟล์ PDF ค่อนข้างแฟนซีเมื่อเร็ว ๆ นี้ ต้นฉบับของฉันคือ 675 kB รุ่นที่ถูกครอบตัดของฉันผ่าน PDFjam คือ 1.2 MB ในขณะที่รุ่นที่ถูกครอบตัดด้วย PDFcrop คือ 4.5 MB ในขณะที่ทั้ง PDFjam และ PDFcrop ดึงไฮเปอร์ลิงก์และบุ๊กมาร์กออกมา PDFjam พร้อม--keepinfoตัวเลือกจะรักษาคุณสมบัติของเอกสาร (เช่นชื่อเรื่องผู้แต่งหัวเรื่อง)


1
หมายเหตุ: การทำเช่นนี้ไม่ได้เป็นการลบเนื้อหาที่เป็นหน้าจอจาก PDF เพียงซ่อนไว้เท่านั้น เช่นเดียวกับที่ @init_js แสดงความคิดเห็นในคำตอบที่ได้คะแนนสูงสุด
ม.ค. Żankowski


3

สิ่งนี้อาจช่วยคุณได้
สิ่งนี้เป็นไปตาม Ubuntu และรุ่นใหม่กว่าของชีวิต นี้เป็นบรรณาธิการโทรูปแบบไฟล์ PDF คุณสามารถใช้มันครอบตัดเพิ่มบางสิ่ง ฯลฯ

ตัวอย่าง:
นี่คือก่อน อย่างนี้มาก่อน นี่คือหลัง ctrl + k ป้อนคำอธิบายรูปภาพที่นี่



2

คุณสามารถใช้สคริปต์ pypdf จากหน้านี้ แต่ในคำตอบของคำถามแลกเปลี่ยนสแต็คนี้ดูเหมือนจะมีตัวเลือกมากมายเช่นกัน


ฉันไม่สามารถรับพารามิเตอร์ด้านล่างซ้ายขวาได้ พวกเขามีจุดนิ้วเซนติเมตรหรือไม่
Rakesh

@Rakesh: ดูคำตอบของฉันสำหรับคำอธิบายของพารามิเตอร์และวิธีการตรวจสอบพวกเขาได้อย่างง่ายดาย
bluenote10

2

pdfCropMarginsโปรแกรมเป็นโปรแกรมบรรทัดคำสั่งเพื่อตัดขอบของไฟล์ PDF โดยอัตโนมัติ

โปรแกรมนี้ขึ้นอยู่กับโปรแกรม Ghostscript หรือโปรแกรม pdftoppm ที่กำลังติดตั้ง (และ locatable) บนระบบ และวิเคราะห์ภาพหน้าเว็บด้วย PIL เพื่อค้นหาช่องว่างโดยใช้เกณฑ์ 191

ติดตั้งโดยใช้

pip ติดตั้ง pdfCropMargins

เรียกใช้โดยใช้

pdf-crop-margin -v -s -u your-file.pdf

เพื่อขอความช่วยเหลือ

pdf-crop-margin -h | มากกว่า

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