मैं एक पीडीएफ को प्रति पृष्ठ 2 पक्ष प्रति पृष्ठ 1 पक्ष में कैसे बदल सकता हूं?
मैं एक पीडीएफ को प्रति पृष्ठ 2 पक्ष प्रति पृष्ठ 1 पक्ष में कैसे बदल सकता हूं?
जवाबों:
ठीक है, समस्या एक्रोबैट (पूर्ण संस्करण की मदद से पहले ही हल हो गई थी, रीडर नहीं)। लेकिन अगर आपको एक्रोबेट तक पहुंच नहीं है तो क्या करें? क्या यह घोस्टस्क्रिप्ट और pdftk के साथ भी किया जा सकता है?
... और इसके मज़े के लिए, "डबल-अप" पृष्ठों के साथ इनपुट फ़ाइल का उपयोग न करें, लेकिन "ट्रेबल-अप" के साथ। दरअसल, मुझे ईमेल से आज एक ऐसी पीडीएफ मिली। यह एक फ्लायर था, लेपोरेलो की योजना में मुड़ा हुआ था । शीट का आकार 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 -------->
मैं 6 पृष्ठों के साथ 1 पीडीएफ बनाना चाहता हूं, जिनमें से प्रत्येक का असामान्य आकार 280.67pt x 595 pt है।
आइए पहले इनपुट पृष्ठों में से प्रत्येक से बाएं खंड निकालें:
gswin32c.exe ^
-o left-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [0 0]>> setpagedevice" ^
-f myflyer.pdf
इन मापदंडों ने क्या किया?
-o ...............:
नाम आउटपुट फ़ाइल। तात्कालिक रूप से भी उपयोग करता है -dBATCH -dNOPAUSE -dSAFER
।-sDEVICE=pdfwrite :
हम पीडीएफ को आउटपुट स्वरूप के रूप में चाहते हैं।-g................:
पिक्सेल में आउटपुट मीडिया आकार सेट करता है। pdfwrite का डिफ़ॉल्ट रिज़ॉल्यूशन 720 डीपीआई है। इसलिए पेजऑफसेट के लिए मैच पाने के लिए 10 से गुणा करें।-c "..............:
घोस्टस्क्रिप्ट को दिए गए पोस्टस्क्रिप्ट कोड स्निपेट को मुख्य इनपुट फ़ाइल से पहले संसाधित करने के लिए कहता है (जिसके साथ पालन करने की आवश्यकता होती है -f
)।<</PageOffset ....:
माध्यम पर पृष्ठ छवि का स्थानांतरण। (बेशक, बाएं पन्नों के लिए पारी [0 0]
का कोई वास्तविक प्रभाव नहीं है।)-f ...............:
इस इनपुट फ़ाइल को प्रोसेस करें।अंतिम आदेश किस परिणाम को प्राप्त हुआ?
यह वाला:
Output file: left-sections.pdf, page 1
+--------+ ^
| | |
| 5 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: right-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()
यह "A1 B1 A2 B2 ... A63 B63" के साथ एक फ़ाइल order.dat बनाएगा । फिर आप इसे कॉपी-पेस्ट कर सकते हैं pdftk
।
@peims, धन्यवाद। यहां आपकी विधि का चरण-दर-चरण संस्करण है। मैंने इसे एक ऐसी फ़ाइल पर आज़माया जिसे मैं अपने किंडल 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" बनाएं।
ये परिणाम सामान्य रूप से काफी अच्छे होंगे। हालाँकि, आउटपुट को बेहतर बनाने के लिए दो और वैकल्पिक चरण हैं।
बस एक ही समस्या थी। मैं briss पर टूट गया, एक खुला स्रोत जावा GUI टूल जो पीडीएफ पेजों को अलग करने और क्रॉप करने के लिए है:
http://sourceforge.net/projects/briss/
यह मेरे लिए लिनक्स पर बहुत अच्छी तरह से काम करता था, भले ही उपयोगकर्ता इंटरफ़ेस पूरी तरह से तुच्छ नहीं है। यह भी कुछ अलग आकार के पन्नों के साथ एक पीडीएफ के साथ काम किया!
आप दस्तावेज़ को डुप्लिकेट कर सकते हैं, फिर पृष्ठों को क्रॉप कर सकते हैं ताकि केवल एक पेज नंबर एक फ़ाइल में दिखाई दे और दूसरे में केवल विषम पृष्ठ संख्या दिखाई दे। फिर एक पृष्ठ में एक पक्ष के साथ एक दस्तावेज़ बनाने के लिए फ़ाइलों को एकल पृष्ठों में विभाजित करें और पुनर्संयोजन करें ...
आप कई तरीकों का उपयोग करके ऐसा कर सकते हैं, उदाहरण के लिए:
मैं मैक और लिनक्स पर स्कैन की गई पुस्तकों को संसाधित करने के लिए निम्न स्क्रिप्ट का उपयोग करता हूं। यह काफी मेमोरी इंटेंसिव प्राप्त कर सकता है।
#!/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-अप टैब्लॉइड पृष्ठ के दाईं ओर किसी भी सामग्री को गायब करता है। इसी तरह के शुरुआती बिंदु, लेकिन टैब्लॉइड 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 पोर्ट्रेट में जरूरत थी, बहुत अधिक पठनीय।
जो मैं समझता हूं कि पीडीएफ फाइल दो पृष्ठों (एक शीट पर एक तरफ) को दिखाती है, जिसे पीडीएफ फाइल की दो शीटों के परिणामस्वरूप एक पृष्ठ प्रति शीट में बदलना पड़ता है। दूसरे शब्दों में, यदि 15 शीटों पर कुल तीस पृष्ठ हैं, तो हमें पीडीएफ फाइल को तीस शीटों की पीडीएफ फाइल में बदलना होगा, जिसमें से प्रत्येक में एक पेज दिखाई दे। यदि यह समस्या मैंने 1 से 30 तक पृष्ठ संख्या निर्दिष्ट करके Adobe acrobat XI PRO "एक्सट्रेक्ट पेज टूल" का उपयोग किया है