ฉันจะแปลง PDF ที่มี 2 ด้านต่อหน้าเป็น 1 ด้านต่อหน้าได้อย่างไร
ฉันจะแปลง PDF ที่มี 2 ด้านต่อหน้าเป็น 1 ด้านต่อหน้าได้อย่างไร
คำตอบ:
ตกลงปัญหาได้รับการแก้ไขแล้วด้วยความช่วยเหลือของ Acrobat (เวอร์ชันเต็มไม่ใช่ Reader) แต่จะทำอย่างไรถ้าคุณไม่มีสิทธิ์เข้าถึง Acrobat สิ่งนี้สามารถทำได้ด้วย Ghostscript และ pdftk เช่นกัน?
... และเพื่อความสนุกของมันอย่าใช้ไฟล์อินพุตกับหน้า "double-up" แต่เป็นไฟล์ที่มี "treble-up" อันที่จริงฉันได้รับ PDF หนึ่งฉบับในวันนี้ทางอีเมล มันเป็นใบปลิวพับโครงการ Leporello ของ ขนาดแผ่นคือแนวนอน A4 (842pt x 595pt) และมันถูกพับและจัดวางแบบนี้:
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 -------->
ฉันต้องการสร้าง 1 PDF ที่มี 6 หน้าซึ่งแต่ละอันมีขนาดที่ผิดปกติคือ 280.67pt x 595 pt
ก่อนอื่นให้แยกส่วนด้านซ้ายออกจากหน้าป้อนข้อมูลแต่ละหน้า:
gswin32c.exe ^
-o left-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [0 0]>> setpagedevice" ^
-f myflyer.pdf
พารามิเตอร์เหล่านี้ทำอะไร
-o ...............:
ตั้งชื่อไฟล์เอาต์พุต Implicitely -dBATCH -dNOPAUSE -dSAFER
ยังใช้-sDEVICE=pdfwrite :
เราต้องการ PDF เป็นรูปแบบผลลัพธ์-g................:
กำหนดขนาดสื่อออกเป็นพิกเซล ความละเอียดเริ่มต้นของ pdfwrite คือ 720 dpi ดังนั้นคูณด้วย 10 เพื่อรับการจับคู่สำหรับ PageOffset-c "..............:
ขอให้ Ghostscript ประมวลผลข้อมูลโค้ด PostScript ที่กำหนดไว้ก่อนไฟล์อินพุตหลัก (ซึ่งต้องติดตามด้วย-f
)<</PageOffset ....:
ชุดเลื่อนภาพหน้าบนสื่อ (แน่นอนสำหรับหน้าซ้ายการเปลี่ยนแปลงโดย[0 0]
ไม่มีผลกระทบจริง)-f ...............:
ประมวลผลไฟล์อินพุตนี้คำสั่งสุดท้ายที่ได้ผลสำเร็จใด?
อันนี้:
Output file: left-sections.pdf, page 1
+--------+ ^
| | |
| 5 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: left-sections.pdf, page 2
+--------+ ^
| | |
| 2 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
ทีนี้ลองทำสิ่งที่คล้ายคลึงกันสำหรับส่วนตรงกลาง:
gswin32c.exe ^
-o center-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [280.67 0]>> setpagedevice" ^
-f myflyer.pdf
ผลลัพธ์:
Output file: center-sections.pdf, page 1
+--------+ ^
| | |
| 6 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: center-sections.pdf, page 2
+--------+ ^
| | |
| 3 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
สุดท้ายส่วนที่ถูกต้อง:
gswin32c.exe ^
-o right-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [561.34 0]>> setpagedevice" ^
-f myflyer.pdf
ผลลัพธ์:
Output file: right-sections.pdf, page 1
+--------+ ^
| | |
| 1 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: right-sections.pdf, page 2
+--------+ ^
| | |
| 4 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
ตอนนี้เรารวมหน้าเป็นไฟล์เดียว:
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
เสร็จสิ้น นี่คือผลลัพธ์ที่ต้องการ 6 หน้าแตกต่างกันขนาด 280.67x595
ผลลัพธ์:
+--------+ +--------+ +--------+ +--------+ +--------+ +--------+ ^
| | | | | | | | | | | | |
| 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()
วิธีนี้จะสร้างไฟล์order.datด้วย "A1 B1 A2 B2 ... A63 B63" pdftk
จากนั้นคุณสามารถคัดลอกวางมัน
เพิ่งมีปัญหาเดียวกัน ฉันสะดุดเมื่อ briss เครื่องมือ java GUI แบบโอเพนซอร์สสำหรับการแยกและการครอบตัดหน้า PDF:
http://sourceforge.net/projects/briss/
มันใช้งานได้ดีมากสำหรับฉันบน Linux แม้ว่าส่วนต่อประสานผู้ใช้จะไม่สำคัญเลย มันใช้งานได้กับไฟล์ PDF ที่มีหน้าขนาดต่างกันด้วย!
@peims ขอบคุณ นี่คือวิธีการรุ่นของคุณทีละขั้นตอน ฉันลองใช้ไฟล์ที่ฉันต้องการแปลงเป็น Kindle DX ของฉันและทำงานได้อย่างสมบูรณ์:
จากนั้นใช้ pdftk.exe (จากhttp://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ ) เพื่อแทรกผลลัพธ์เป็นไฟล์เดียว คัดลอก "pdftk.exe", "left.pdf" และ "right.pdf" ไปยัง "D: \" และดำเนินการ:
หมายเหตุ: หากคุณคัดลอกไฟล์ไปที่ "C: \" มันจะไม่ทำงานภายใต้ Win 7 เนื่องจากสิทธิ์ด้านความปลอดภัย หากคุณไม่มี D: \ ให้สร้างไดเรกทอรี "C: \ x" เพื่อดำเนินการให้เสร็จสิ้น
ผลลัพธ์เหล่านี้โดยปกติจะดีพอ อย่างไรก็ตามมีสองขั้นตอนเพิ่มเติมเพื่อปรับปรุงผลลัพธ์
คุณสามารถทำสำเนาเอกสารจากนั้นครอบตัดหน้าเพื่อให้หมายเลขหน้าเท่ากันแสดงในไฟล์เดียวและเฉพาะหมายเลขหน้าคี่ในอีกไฟล์หนึ่ง จากนั้นแบ่งไฟล์เป็นหน้าเดียวและรวมกันอีกครั้งเพื่อสร้างเอกสารเดียวที่มีด้านเดียวเป็นหน้า ...
คุณสามารถทำได้โดยใช้วิธีการหลายอย่างเช่น:
ฉันใช้สคริปต์ต่อไปนี้เพื่อประมวลผลหนังสือที่สแกนบน Mac และ Linux นี้สามารถรับหน่วยความจำค่อนข้างมาก
#!/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
ขอบคุณสำหรับการอ้างอิงที่ดี ฉันอยู่ในปัญหาที่คล้ายกัน แต่ต้องการแบ่งปันสิ่งที่ทำงานให้ฉัน
ฉันมีรูปแบบแท็บลอยด์ในแนวนอนที่มีรูปแบบข้อความที่เน้นแนวตั้งทางด้านซ้ายเท่านั้น แท็บลอยด์ที่สำคัญ 2-up หายไปเนื้อหาใด ๆ ทางด้านขวาของหน้า จุดเริ่มต้นที่คล้ายกัน แต่แท็บลอยด์คือ 792 × 1224 (แนวตั้ง), 1124 x 792 (แนวนอน) และนิยามจุดสำหรับแท็บลอยด์ 1/2 ที่ฉันต้องการคือ 612 x 792 จุด
"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" -o left2.pdf -sDEVICE=pdfwrite -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f "RFP.pdf"
ให้เนื้อหาที่ฉันต้องการเป็นแนวตั้งขนาด 8.5 x 11 อ่านได้มากขึ้น
สิ่งที่ฉันเข้าใจคือไฟล์ PDF ที่แสดงสองหน้า (เคียงข้างกันบนแผ่นงานหนึ่ง) จะต้องมีการแปลงเป็นหนึ่งหน้าต่อแผ่นทำให้เกิดไฟล์ PDF สองแผ่น กล่าวอีกนัยหนึ่งหากมีทั้งหมดสามสิบหน้าใน 15 แผ่นเราจำเป็นต้องแปลงไฟล์ PDF เป็นไฟล์ PDF ที่มี 30 แผ่นโดยแต่ละแผ่นแสดงหนึ่งหน้า หากปัญหานี้ฉันได้ใช้ Adobe acrobat XI PRO "เครื่องมือดึงหน้า" โดยการระบุหมายเลขหน้าจาก 1 ถึง 30
Krop (Python) และ PDFscissors (Java) ยังไม่ได้กล่าวถึงตรวจสอบพวกเขาถ้าคุณมี fe pdfnup-ped บันทึกการบรรยายที่คุณต้องการย้อนกลับเป็นงานนำเสนอที่เหมาะสม PDF ..