मैं कमांड लाइन पर मैक ओएस में पीडीएफ को पूरी तरह से कैसे समतल कर सकता हूं?


16

मैं मैक ओएस एक्स स्नो लेपर्ड का उपयोग करता हूं। मेरे पास फॉर्म फील्ड, एनोटेशन और उस पर डाक टिकट के साथ एक पीडीएफ है। मैं पीडीएफ (या "समतल") को फ्रीज करना चाहूंगा ताकि पीडीएफ को बदल दिया जा सके ताकि प्रपत्र फ़ील्ड को परिवर्तित न किया जा सके और एनोटेशन / स्टैम्प अब संपादन योग्य न हों। चूंकि मेरे पास वास्तव में इनमें से कई पीडीएफ हैं, इसलिए मैं इसे स्वचालित रूप से कमांड लाइन पर करना चाहता हूं।

उनकी सफलता की डिग्री के साथ कुछ चीजें जो मैंने कोशिश की / विचार किया है:

  • पूर्वावलोकन में खोलें और फ़ाइल में प्रिंट करें। यह फ़ाइल के आकार को बदले बिना पूरी तरह से सपाट पीडीएफ बनाता है। स्वचालित करने का एकमात्र तरीका ऐसा लगता है कि एक कुल्फी यूआई-आधारित AppleScript लिखना है , हालांकि, जो मैं बचने की कोशिश कर रहा हूं।
  • एक्रोबेट प्रो में खोलें और समतल करने के लिए एक जावास्क्रिप्ट फ़ंक्शन का उपयोग करें । फिर, यह सुनिश्चित नहीं करें कि कमांड लाइन पर इसे कैसे स्वचालित किया जाए।
  • विकल्प के pdftkसाथ उपयोग करें flatten। लेकिन यह केवल फ़ील्ड्स बनाता है, न कि स्टैम्प और अन्य एनोटेशन।
  • उपयोग करें cupsfilterजो कई फ़ाइल स्वरूपों से पीडीएफ बना सकते हैं। जैसे pdftkयह केवल रूप क्षेत्र को समतल कर दिया।
  • cups-pdfमैक के प्रिंटर्स में हुक करने के लिए उपयोग करें और प्रिंट के बजाय पीडीएफ फाइल को सेव करें। मैंने macports संस्करण का उपयोग किया । परिणामी फ़ाइल समतल लेकिन विशाल है। मैंने इसे 8MB फ़ाइल पर आज़माया; चपटा पीडीएफ 358MB था! शायद इसे उबंटू टिप के रूप में एक घोस्टस्क्रिप्ट कॉल के साथ जोड़ा जा सकता है : कमांड लाइन से पीडीएफ फाइल का आकार कैसे कम करें

किसी और सुझाव का स्वागत है।


1
Automator.app में कुछ अंतर्निहित पीडीएफ प्रसंस्करण विकल्प हैं। शायद उनमें से एक ऊपर दिए गए कार्यों में से एक के साथ सीधे या संयुक्त मदद कर सकता है।
कासिम डोरसेल

क्या आप एक पीडीएफ नमूना दस्तावेज़ प्रदान कर सकते हैं जिसमें ये तत्व हैं?
डैनियल बेक

मुझे ऐसा लगता है। अभी मेरे सभी सैंपल छात्र क्विज़ हैं इसलिए मुझे कुछ मज़ाक करना होगा।
मैथ्यू लिआंगंग

जवाबों:


11

प्रयोग करके pdf2psऔर ps2pdfउत्तराधिकार में। यह थोड़ा बोझिल है लेकिन इसने मुझे अपने 30MB के दस्तावेज़ को 17MB तक कम करने में मदद की। उतना नहीं जितना मुझे पसंद होता लेकिन फिर भी बेहतर होता। मुझे यह विचार एक दोस्त से मिला, जिसने एक पीडीएफ पर पासवर्ड अनुमतियों से छुटकारा पाने के लिए इस पद्धति का उपयोग किया था।

pdf2ps your_pdf_file.pdf your_pdf_file.ps
ps2pdf your_pdf_file.ps your_pdf_file_from_ps.pdf

उम्मीद है की वो मदद करदे!


3
घोस्टस्क्रिप्ट FTW! मैं एक पाइप का उपयोग करके इसे एक-लाइनर के पास ले गया pdf2ps file.pdf - | ps2pdf - file_flat.pdf:। फ़ाइल 300K से 500K तक चली गई जो कि बड़ी प्रतिशत वृद्धि है, लेकिन 4400% की तरह कुछ भी नहीं है जो कि उपज की cups-pdfविधि है।
मैथ्यू लिआंगंग

वास्तव में, मेरे पास बेहतर किस्मत थी pdf2ps -q -sOutputFile=- file.pdf | ps2pdf - file_flat.pdf
मैथ्यू Leingang

4
यह देखते हुए कि मैक पर आप Ghostscript स्थापित कर सकते हैं ऊपर कमांड के माध्यम से उपलब्ध बनाने के लिए homebrew साथ brew install ghostscript
निक

5

तो यह वही है जो मैं हाल ही में उपयोग कर रहा हूं। मुझे लगता है कि कार्यात्मक रूप से यह वही काम करता है pdf2ps file.pdf - | ps2pdf - file_flat.pdf, लेकिन यह मेरे लिए बेहतर काम करता है।

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -sOutputFile=<newfile> <oldfile>

Ps2pdf समाधान मेरे लिए विफल रहा। यह पीडीएफ में फोंट को स्पष्ट रूप से याद दिलाकर काम करता है।
.फिंक

इन आदेशों में से कोई भी समतल नहीं है। आप पूर्वावलोकन का उपयोग करके अंतर्निहित परतों की प्रतिलिपि बना सकते हैं और मूल सामग्री मौजूद होगी।
Alain O'Dea

1

यह सब-ऑप्शनल हो सकता है, लेकिन क्या आपने pdftk या cupfilter के साथ कप-पीडीए चेंज करने पर विचार किया है? जैसा कि आपने उल्लेख किया है, कप-पीडीएफ एक फ्लैट पीडीएफ फाइल का उत्पादन करेगा और फिर इसे स्वीकार्य आकार में लाने के लिए इसे पीडीएफटीके या कपफिल्टर के माध्यम से पारित करेगा?

वैकल्पिक रूप से एक नज़र रखना /System/Library/Printers/Libraries/convert आप कुछ ऐसा करने में सक्षम होना चाहिए

/System/Library/Printers/Libraries/convert -f input_file.pdf -o output_file.pdf -j "application/pdf"

मेरे मैक नहीं है /System/Library/Printers/Libraries/convert। मैंने कोशिश की cupsfilter। पीडीएफ से पीडीएफ में परिवर्तित करते समय फ़ाइल में कोई परिवर्तन नहीं किया गया था। पीडीएफ से पीएस और फिर पीडीएफ में परिवर्तित होने पर एनोटेशन खो गए थे।
मैथ्यू लेयांग

1

चेतावनी: gs और pdf2ps | ps2pdf पीडीएफ को समतल न करें!

Ps2pdf के बाद gs या pdf2ps का उपयोग करने से मूल रूप में मौजूद एनोटेशन के तहत सामग्री के साथ एक बहु-परत पीडीएफ प्राप्त होगा । आप इस दोष को पूर्वावलोकन में सेलेक्ट ऑल का उपयोग करके सत्यापित कर सकते हैं, फिर कॉपी कर सकते हैं, फिर टेक्स्टएडिट विंडो (रिच टेक्स्ट मोड में) में पेस्ट कर सकते हैं। आप उदाहरण के लिए रिडनेशन एनोटेशन के तहत पाठ या ग्राफिक्स देखेंगे। यह स्पष्ट रूप से है बहुत बुरा है यदि आपको कानूनी रूप से उस सामग्री की आवश्यकता है जो आउटपुट से चली गई है।

एक कार्य समाधान

ImageMagick निम्नलिखित कमांड का उपयोग करके प्रत्येक पृष्ठ के आपदाओं के साथ एक विन्यास गुणवत्ता, बहु-पृष्ठ, एकल-परत चपटा पीडीएफ का उत्पादन कर सकता है:

convert -density 150 document_original.pdf document_flat.pdf

यह आदेश प्रत्येक डीपीआई पर 150 डीपीआई में पिक्सेल-आधारित छवि बनाते हुए document_original.pdf को rasterizes, और परिणाम को document_flat.pdf के रूप में आउटपुट करता है।

छवि गुणवत्ता पर एक नोट

रस्टीजेशन के कारण , यह एक गैर स्केलेबल (ज़ूम और आप पाठ या मूल वेक्टर छवियों pixellated हो देखेंगे) पीडीएफ पैदा करता है। जब तक कि मूल में बहुत जटिल वेक्टर सामग्री जैसे कि मिलियन-पॉइंट स्कैटर प्लॉट नहीं हो, तब तक बड़ी फ़ाइलों की संभावना होगी।

घनत्व को बदलकर , आप उच्च रिज़ॉल्यूशन आउटपुट के लिए बड़े फ़ाइल आकार का व्यापार कर सकते हैं।

सभी पाठ को प्रत्येक पृष्ठ छवि में कच्चे पिक्सेल में परिवर्तित किया जाएगा। पाठ और वेक्टर आरेख सबसे अधिक पीड़ित हैं, इसलिए जब तक प्रयोग करने योग्य आउटपुट फाइल नहीं मिलती तब तक डीपीआई के साथ प्रयोग करें।


1
इस उत्तर में योगदान देने के लिए धन्यवाद। 5 साल पहले मैंने जो हल लिखा था वह मेरे लिए काम कर रहा था। लेकिन मैं अगली बार जब भी आपको ऐसा करना होगा (वास्तव में बहुत जल्द) आपका जवाब दूंगा।
मैथ्यू लेयांग

यह समझ आता है। मैं कल्पना करता हूं कि भूतों के एनोटेशन के संबंध में घोस्टस्क्रिप्ट के व्यवहार में बदलाव आया है। मैंने जोड़ने की कोशिश की- -PreserveAnnots = false और यह अभी भी काम नहीं किया। हुड के तहत पीडीएफ प्रसंस्करण के लिए घोस्टस्क्रिप्ट का उपयोग करके परिवर्तित करें। मुझे कुछ ऐसा चाहिए जो एक्रोबैट करता है: यह एनोटेशन रखता है, उनके पीछे की सामग्री को हटाता है, और अनियंत्रित वेक्टर छवियों को संरक्षित करता है। नए एक्रोबैट के साथ डॉक्यूमेंट क्लाउड का टुकड़ा वास्तव में मुझे संवेदनशील डेटा के लिए उपयोग करने से परेशान करता है।
एलेन ओ'डे

0

कमांड लाइन के लिए अप्प्लीस्क्रिप्ट शायद सबसे अच्छा / तेज तरीका है। एक बार जब यह काम करता है तो आप इसे एक एप्लिकेशन के रूप में सहेज सकते हैं और इसे चलाने के लिए अपने कमांड शेल में एक उपनाम बना सकते हैं। तत्पश्चात, आप कमांड लाइन पर अपना उपनाम लिखते हैं।


लेकिन AppleScript में पीडीएफ को समतल करने का सबसे आसान तरीका क्या है? मैं यूआई को फाइल करने के लिए मुद्रण की नकल करने के लिए स्क्रिप्ट नहीं लिखूंगा। जो कि टेढ़ा और धीमा लगता है।
मैथ्यू लिआंगंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.