Làm cách nào tôi có thể chuyển đổi PDF với 2 mặt trên mỗi trang thành 1 mặt trên mỗi trang?
Làm cách nào tôi có thể chuyển đổi PDF với 2 mặt trên mỗi trang thành 1 mặt trên mỗi trang?
Câu trả lời:
OK, vấn đề đã được giải quyết với sự trợ giúp của Acrobat (phiên bản đầy đủ, không phải Reader). Nhưng phải làm gì nếu bạn không có quyền truy cập vào Acrobat? Điều này có thể được thực hiện với Ghostscript và pdftk không?
... Và để giải trí, đừng sử dụng tệp đầu vào với các trang "nhân đôi", mà là một tệp có "treble-up". Trên thực tế, tôi đã nhận được một bản PDF như vậy ngày hôm nay qua email. Đó là một tờ rơi, được gấp lại Đề án của Leporello . Kích thước tấm là khổ A4 (842pt x 595pt) và được gấp lại và bố trí như thế này:
Front side to be printed, page 1 of PDF
+--------+--------+--------+ ^
| | | | |
| 5 | 6 | 1 | |
| | | | 595 pt
| | | | |
| | | | |
| | | | |
+--------+--------+--------+ v
^ ^
fold fold
v v
+--------+--------+--------+ ^
| | | | |
| 2 | 3 | 4 | |
| | | | 595 pt
| | | | |
| | | | |
| | | | |
+--------+--------+--------+ v
Back side to be printed, page 2 of PDF
<---------- 842 pt -------->
Tôi muốn tạo 1 PDF với 6 trang, mỗi trang có kích thước khác thường là 280,67pt x 595 pt.
Trước tiên, hãy trích xuất các phần bên trái từ mỗi trang đầu vào:
gswin32c.exe ^
-o left-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [0 0]>> setpagedevice" ^
-f myflyer.pdf
Những thông số này đã làm gì?
-o ...............:
Tên tập tin đầu ra. Ngẫu nhiên cũng sử dụng -dBATCH -dNOPAUSE -dSAFER
. -sDEVICE=pdfwrite :
chúng tôi muốn PDF là định dạng đầu ra. -g................:
đặt kích thước phương tiện đầu ra bằng pixel. độ phân giải mặc định của pdfwrite là 720 dpi. Do đó nhân với 10 để có một trận đấu cho PagePackset. -c "..............:
yêu cầu Ghostscript xử lý đoạn mã PostScript đã cho ngay trước tệp đầu vào chính (cần phải tuân theo -f
). <</PageOffset ....:
thiết lập sự dịch chuyển của hình ảnh trang trên phương tiện. (Tất nhiên, đối với các trang bên trái, sự thay đổi của [0 0]
không có tác dụng thực sự.) -f ...............:
xử lý tập tin đầu vào này. Kết quả nào đã thực hiện lệnh cuối cùng?
Cái này:
Output file: left-sections.pdf, page 1
+--------+ ^
| | |
| 5 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: right-sections.pdf, page 2
+--------+ ^
| | |
| 2 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
Bây giờ chúng ta hãy làm điều tương tự cho các phần trung tâm:
gswin32c.exe ^
-o center-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [280.67 0]>> setpagedevice" ^
-f myflyer.pdf
Kết quả:
Output file: center-sections.pdf, page 1
+--------+ ^
| | |
| 6 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: center-sections.pdf, page 2
+--------+ ^
| | |
| 3 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
Cuối cùng, các phần bên phải:
gswin32c.exe ^
-o right-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [561.34 0]>> setpagedevice" ^
-f myflyer.pdf
Kết quả:
Output file: right-sections.pdf, page 1
+--------+ ^
| | |
| 1 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: right-sections.pdf, page 2
+--------+ ^
| | |
| 4 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
Bây giờ chúng tôi kết hợp các trang thành một tệp:
pdftk.exe ^
A=right-sections.pdf ^
B=center-sections.pdf ^
C=left-sections.pdf ^
cat A1 B2 C2 A2 B1 C1 ^
output single-files-input.pdf
verbose
Làm xong. Đây là kết quả mong muốn. 6 trang khác nhau, kích thước 280,67x595.
Kết quả:
+--------+ +--------+ +--------+ +--------+ +--------+ +--------+ ^
| | | | | | | | | | | | |
| 1 | | 2 | | 3 | | 4 | | 5 | | 6 | |
| | | | | | | | | | | | 595 pt
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
+--------+ +--------+ +--------+ +--------+ +--------+ +--------+ v
< 280 pt > < 280 pt > < 280 pt > < 280 pt > < 280 pt > < 280 pt >
f = open("order.dat","w")
for i in [a+1 for a in xrange(63)]: f.write("A{0} B{0} ".format(i))
f.close()
Điều này sẽ tạo ra một tập tin đặt hàng với "A1 B1 A2 B2 ... A63 B63". Sau đó, bạn có thể sao chép-dán nó vào pdftk
.
@peims, cảm ơn. Đây là phiên bản từng bước của phương pháp của bạn. Tôi đã thử nó trên một tệp mà tôi muốn chuyển đổi cho Kindle DX của mình và nó hoạt động hoàn hảo:
Tiếp theo, sử dụng pdftk.exe (từ http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ ) để xen kẽ các kết quả vào một tệp duy nhất. Sao chép "pdftk.exe", "left.pdf" và "right.pdf" sang "D: \" và thực hiện:
Lưu ý: nếu bạn sao chép các tệp vào "C: \", nó sẽ không hoạt động trong Win 7 do quyền bảo mật. Nếu bạn không có D: \, thì hãy tạo thư mục "C: \ x" để hoàn tất thao tác.
Những kết quả này thường sẽ đủ tốt. Tuy nhiên, có thêm hai bước tùy chọn để cải thiện đầu ra.
Chỉ có vấn đề tương tự. Tôi tình cờ phát hiện ra, một công cụ GUI GUI nguồn mở để phân tách và cắt xén các trang pdf:
http://sourceforge.net/projects/briss/
Nó hoạt động rất tốt đối với tôi, trên Linux, mặc dù giao diện người dùng không hoàn toàn tầm thường. Nó thậm chí còn hoạt động với pdf với một số trang có kích thước khác nhau!
Bạn có thể sao chép tài liệu, sau đó cắt các trang để chỉ các số trang chẵn hiển thị trong một tệp và chỉ các số trang lẻ trong các tệp khác. Sau đó chia các tệp thành các trang đơn và kết hợp lại để tạo một tài liệu với các mặt đơn thành một trang ...
Bạn có thể làm điều này bằng một số phương thức, ví dụ:
Tôi sử dụng tập lệnh sau để xử lý sách được quét trên Mac và Linux. Điều này có thể nhận được khá nhiều bộ nhớ.
#!/bin/bash
#
# This script processes scanned books. After scanning the books have been cropped with
# Preview. This does kind of a "soft crop" that we need to make a bit "harder".
#
# The second step is to take each page of the PDF and split this into two two pages,
# because each page of the scanned document actually contains two pages of the book.
#
#
FILE=`mktemp`.pdf
FILE2=`mktemp`.pdf
FILE3=`mktemp`.pdf
echo "Making a temporary copy of the input file."
cp $1 $FILE
#
# Start cropping
#
echo "Cropping the PDF"
# The first regex removes all boxes but CropBox. The second regex renames the CropBox as MediaBox
perl -pi.bak -e 's/\/(Media|Bleed|Art|Trim)Box[\n\l\f\s]*\[(.+?)\]//msg;' $FILE
perl -pi.bak -e 's/CropBox/MediaBox/g;' $FILE
echo "Validating the PDF"
#Run PDFTK to ensure that the file is OK
cat $FILE | pdftk - output $FILE2
#
# Done cropping, start splitting the pages
#
echo "Splitting the pages in two and changing to 200 dpi with imagemagick. Output goes to $FILE3"
convert -density 200 $FILE2 -crop 50%x0 +repage $FILE3
#
# Done spliting, copy the result in a new file
#
mv $FILE3 $1.pages.pdf
Cảm ơn đã tham khảo tuyệt vời. Tôi đã ở trong một vấn đề tương tự nhưng muốn chia sẻ những gì làm việc cho tôi.
Tôi đã có một pdf lá cải định hướng theo chiều ngang với văn bản hướng dọc chỉ ở phía bên trái. Về cơ bản, báo lá cải 2 lần thiếu bất kỳ nội dung nào ở phía bên phải của trang. Điểm bắt đầu tương tự, nhưng báo lá cải là 792 × 1224 (Chân dung), 1124 x 792 (Phong cảnh) và định nghĩa điểm cho báo lá cải 1/2 tôi cần là 612 x 792 điểm.
"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" -o left2.pdf -sDEVICE=pdfwrite -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f "RFP.pdf"
Có cho tôi nội dung tôi cần vào chân dung 8,5 x 11, dễ đọc hơn nhiều.
Điều tôi hiểu là một tệp PDF hiển thị hai trang (cạnh nhau trên một trang) cần phải được chuyển đổi thành một trang trên mỗi trang dẫn đến hai tờ tệp PDF. Nói cách khác, nếu có tổng số ba mươi trang trên 15 tờ, chúng ta cần chuyển đổi tệp PDF thành tệp PDF gồm ba mươi tờ mỗi trang hiển thị một trang. Nếu đây là sự cố, tôi đã sử dụng "công cụ trang trích xuất" Adobe acrobat XI PRO bằng cách chỉ định số trang từ 1 đến 30