ใช้การแปลงเพื่อคว้าหน้าเฉพาะจากไฟล์ PDF หรือไม่


21

ฉันรู้ว่าฉันได้ทำสิ่งนี้มาก่อนดังนั้นฉันมั่นใจว่าเป็นไปได้ฉันแค่ลืมวิธีที่จะทำ มีวิธีที่จะบอกให้ผู้ใช้ Conversion จับหน้าเฉพาะของ PDF และฉันต้องการเก็บรูปแบบของหน้านั้นเป็น PDF

คำตอบ:


24

ImageMagick เป็นเครื่องมือสำหรับภาพบิตแมปซึ่ง PDF ส่วนใหญ่ไม่ใช่ หากคุณใช้มันจะทำให้ข้อมูลrasterizeซึ่งมักไม่เป็นที่ต้องการ

Pdftkสามารถแยกหนึ่งหน้าขึ้นไปจากไฟล์ PDF

pdftk A=input.pdf cat A42 A43 output pages_42_43.pdf

หากคุณมีการติดตั้งน้ำยางกับ pdflatex คุณสามารถใช้pdfpages มีเสื้อคลุมเปลือกสำหรับ pdfpages เป็น, pdfjam

pdfjam -o pages_42_43.pdf input.pdf 42,43

ความเป็นไปได้อีกอย่าง (เกินความจริงที่นี่ แต่มีประโยชน์สำหรับความต้องการที่ซับซ้อนยิ่งขึ้นที่หน้าหนึ่ง) คือ Python กับไลบรารีPyPdf

#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for i in [42, 43]:
    output.addPage(input.getPage(i))
output.write(sys.stdout)

ฉันกำลังจะแนะนำpdftkเช่นกัน คุณจะต้องการใช้มัน
เซบาสเตียน

pdfjamใช้งานได้อย่างมีเสน่ห์และติดตั้งแล้วกับการกระจาย LaTeX ของฉัน มันใช้งานง่ายมาก
hdl

ขอบคุณมาก. หน้าที่แยกแล้วนั้นมีขนาดใหญ่กว่าไฟล์ PDF ที่สมบูรณ์ด้วยpdftkดังนั้นจึงไม่สามารถแยกหน้าได้อย่างง่ายดาย ผลก็คือไม่เป็นไร
Eric Duminil

25

คุณสามารถใช้สัญกรณ์ห้อยด้วยconvert(1)เพื่อ "ดัชนี" เป็น PDF:

$ convert source.pdf[1] dest.pdf 

ค่าดัชนีขึ้นอยู่กับวิธีที่ผู้ส่งออก PDF ระบุหมายเลขหน้า ในการทดสอบไฟล์ที่นี่ตัวเลขดูเหมือนจะเป็นศูนย์ดังนั้นตัวอย่างข้างต้นจะทำให้คุณได้หน้าที่สองในเอกสาร ฉันได้เห็นตัวอย่างออนไลน์ซึ่งพวกเขาแสดงดัชนีจดหมายแทนเนื่องจากผู้สร้าง PDF เห็นว่า "หมายเลข" หน้าเอกสารในแบบนั้นแทน

น่าเสียดายที่นี่ไม่ได้ผลที่ดีนักเพราะ ImageMagick ถือว่าทุกอย่างเป็นพิกเซลและดังนั้นจึงทำให้ภาพเวกเตอร์ rasterizes เช่นการพิมพ์ในรูปแบบ PDF ทั่วไป

เครื่องมือที่ดีกว่าสำหรับงานนี้คือGhostscriptซึ่งคุณอาจติดตั้งแล้ว:

$ gs -dNOPAUSE -dBATCH -dFirstPage=2 -dLastPage=2 -sDEVICE=pdfwrite \
    -sOutputFile=dest.pdf -f src.pdf

สิ่งนี้จะส่งผ่านข้อมูล PDF ผ่านไม่เปลี่ยนแปลงเนื่องจาก Ghostscript เข้าใจ PDF (อนุพันธ์ของ PostScript) ไปสู่ระดับที่ลึกกว่าที่ ImageMagick ทำ


2
อันที่จริงมันไม่เป็นความจริงเกี่ยวกับ imagemagick ถ้าคุณตั้งค่าพารามิเตอร์ -density เป็นประมาณ 300-400 ข้อความที่เอาท์พุทจาก pdf ใน png จะดูดี
buggedcom

2
มันจะดูดีบนหน้าจอแน่นอน แต่ถ้าคุณไปพิมพ์คุณจะต้องตั้งค่าความหนาแน่นให้สูงขึ้น จากนั้นคุณอาจพบปัญหาว่า RIP ของเครื่องพิมพ์ของคุณมีเอาต์พุตพิกเซลลบรอยหยักสีเทาด้วย ImageMagick อย่างไร ดังนั้นคุณสามารถเลือกที่จะส่งออกไปยัง 1-bit B&W ที่ความละเอียดมาตรฐานของเครื่องพิมพ์ซึ่งอาจเป็น 1,200 dpi หรือ 1,440 dpi หรืออย่างอื่นและคุณต้องรู้ล่วงหน้าเพื่อให้ได้ผลลัพธ์ที่คมชัด ไม่ฉันจะสนับสนุนคำแถลงของฉัน: ดีที่สุดในการเก็บข้อมูล PDF ในรูปแบบเวกเตอร์ให้นานที่สุด
Warren Young

@buggedcom ที่ฉันได้พบ-density 300คือจุดหวาน มีอะไรที่ใหญ่กว่าและคุณกำลังสร้างไฟล์ชั่วคราวขนาดใหญ่ - ซึ่งคุณอาจจะปรับขนาดเป็นรูปขนาดย่อต่อไป
Mike Causer

2
นอกจากนี้คุณยังสามารถเลือกช่วงของหน้า (เช่นสำหรับการทำ gif) เช่นนั้นsource.pdf[3-6]
texasflood
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.