Sử dụng chuyển đổi để lấy một trang cụ thể từ một tệp PDF?


21

Tôi biết tôi đã làm điều này trước đây, vì vậy tôi chắc chắn rằng nó có thể, tôi chỉ quên cách làm. Có một cách để chuyển đổi để lấy một trang cụ thể của PDF và tôi muốn giữ định dạng của trang đó dưới dạng PDF.

Câu trả lời:


24

ImageMagick là một công cụ cho hình ảnh bitmap, mà hầu hết các tệp PDF không có. Nếu bạn sử dụng nó, nó sẽ rasterize dữ liệu, điều này thường không mong muốn.

Pdftk có thể trích xuất một hoặc nhiều trang từ tệp PDF.

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

Nếu bạn có cài đặt LaTeX với PDFLaTeX, bạn có thể sử dụng các trang pdf . Có một trình bao bọc cho các trang pdf, pdfjam .

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

Một khả năng khác (quá mức cần thiết ở đây, nhưng hữu ích cho các yêu cầu phức tạp hơn một trang) là Python với thư viện 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)

Tôi đã định giới thiệu pdftklà tốt. Bạn sẽ muốn sử dụng nó.
Sebastian

pdfjamhoạt động như một bùa mê và đã được cài đặt với bản phân phối LaTeX của tôi. Nó rất dễ sử dụng.
hdl

Cảm ơn rất nhiều. Trang được trích xuất lớn hơn bản pdf hoàn chỉnh, pdftkdo đó dường như không chỉ trích xuất một trang. Kết quả là tốt nếu không.
Eric Duminil

25

Bạn có thể sử dụng ký hiệu đăng ký với convert(1)"chỉ mục" thành PDF:

$ convert source.pdf[1] dest.pdf 

Giá trị chỉ mục phụ thuộc vào cách nhà xuất khẩu PDF đánh số trang. Trong các thử nghiệm trên các tệp ở đây, các số dường như dựa trên số không, vì vậy ví dụ trên đưa bạn đến trang thứ hai trong tài liệu. Thay vào đó, tôi đã thấy các ví dụ trực tuyến nơi họ hiển thị các chỉ mục chữ cái, vì rõ ràng người tạo PDF đã "đánh số" các trang trong tài liệu đó theo cách đó.

Thật không may, điều này không cho kết quả rất tốt, vì ImageMagick giả định mọi thứ đều dựa trên pixel và do đó làm mờ hình ảnh vector, chẳng hạn như kiểu chữ trong một tệp PDF thông thường.

Một công cụ tốt hơn cho công việc là Ghostscript mà bạn có thể đã cài đặt:

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

Điều này chuyển dữ liệu PDF qua không thay đổi, vì Ghostscript hiểu PDF (một dẫn xuất PostScript) đến mức sâu hơn nhiều so với ImageMagick.


2
thực ra điều đó không đúng về hình ảnh, nếu bạn đặt tham số -d mật độ thành khoảng 300-400 thì văn bản xuất ra từ pdf trong png sẽ trông ổn.
Buggedcom

2
Nó sẽ trông ổn trên màn hình, chắc chắn, nhưng nếu sau đó bạn đi in, bạn sẽ muốn đặt mật độ cao hơn nữa. Và sau đó, bạn có thể gặp rắc rối với cách RIP của máy in đối phó với các pixel khử răng cưa màu xám do ImageMagick xuất ra. Vì vậy, sau đó bạn có thể chọn đầu ra thành B & W 1 bit ở độ phân giải gốc của máy in, có thể là 1.200 dpi, hoặc 1.440 dpi hoặc thứ gì khác, và bạn phải biết trước để có được đầu ra sắc nét. Không, tôi sẽ đứng trước tuyên bố của mình: tốt nhất là giữ dữ liệu PDF ở dạng vector càng lâu càng tốt.
Warren Young

@buggedcom Tôi đã tìm thấy -density 300là điểm ngọt ngào. Bất cứ điều gì lớn hơn và bạn đang tạo các tệp tạm thời khổng lồ - mà có lẽ bạn sẽ thay đổi kích thước xuống hình thu nhỏ
Mike Causer 16/12/13

2
Bạn cũng có thể chọn một loạt các trang (ví dụ để tạo gif) như vậysource.pdf[3-6]
texasflood
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.