2009-01-19 10 views
11

के पृष्ठों को फसल करना मैं सोच रहा था कि किसी को .pdf फ़ाइलों के साथ प्रोग्रामेटिक रूप से काम करने में कोई अनुभव है या नहीं। मेरे पास एक .pdf फ़ाइल है और मुझे प्रत्येक पृष्ठ को एक निश्चित आकार में फसल करने की आवश्यकता है।एक .pdf फ़ाइल

एक त्वरित गूगल खोज के बाद मैं अजगर के लिए pyPdf पुस्तकालय पाया, लेकिन इसके साथ अपने प्रयोगों में विफल रहा है। जब मैंने पेज ऑब्जेक्ट पर फसलबॉक्स और ट्रिमबॉक्स गुणों को बदल दिया तो परिणाम मेरे द्वारा अपेक्षित नहीं थे और काफी यादृच्छिक दिखाई दिए।

क्या किसी के पास इसका कोई अनुभव है? विशेष रूप से अजगर में कोड उदाहरणों की सराहना की जाएगी।

+0

महान प्रश्न लेकिन एक छोटे से हैरान बहुत व्यापक होने के लिए यह पहले से ही बंद कर दिया नहीं किया गया है। –

उत्तर

19

pypdf मुझे इस क्षेत्र में क्या उम्मीद है। निम्न स्क्रिप्ट का उपयोग करना:

#!/usr/bin/python 
# 

from pyPdf import PdfFileWriter, PdfFileReader 

with open("in.pdf", "rb") as in_f: 
    input1 = PdfFileReader(in_f) 
    output = PdfFileWriter() 

    numPages = input1.getNumPages() 
    print "document has %s pages." % numPages 

    for i in range(numPages): 
     page = input1.getPage(i) 
     print page.mediaBox.getUpperRight_x(), page.mediaBox.getUpperRight_y() 
     page.trimBox.lowerLeft = (25, 25) 
     page.trimBox.upperRight = (225, 225) 
     page.cropBox.lowerLeft = (50, 50) 
     page.cropBox.upperRight = (200, 200) 
     output.addPage(page) 

    with open("out.pdf", "wb") as out_f: 
     output.write(out_f) 

जिसके परिणामस्वरूप दस्तावेज़ एक ट्रिम बॉक्स 200x200 अंक है और मीडिया बॉक्स के अंदर 25,25 अंक पर शुरू होता है कि नहीं है। ट्रिम बॉक्स के अंदर फसल बॉक्स 25 अंक है।

यहाँ कैसे मेरी नमूना दस्तावेज़ ऊपर कोड के साथ संसाधित करने के बाद पेशेवर कलाबाज में दिखाई देता है: जब एक्रोबैट रीडर में लोड crop pages screenshot

इस दस्तावेज़ को खाली दिखाई देगा।

+0

इस कोड का कोड वही प्रभाव है जैसा मैं प्रयोग कर रहा था; परिणामस्वरूप दस्तावेज़ के पृष्ठ निश्चित रूप से फसल किए गए थे लेकिन सभी खाली। कोई विचार क्यों हो सकता है? – johannth

+0

आपने शायद यह जांच लिया है लेकिन मुझे लगता है कि आप पीडीएफ के एक छोटे से क्षेत्र को खाली कर रहे हैं जो रिक्त है? यदि आपके पास एक्रोबैट समर्थक तक पहुंच है तो आप सभी पेज बॉक्स दिखाने के लिए फसल पेज टूल का उपयोग कर सकते हैं। मुझे किसी भी मुफ्त उपकरण के बारे में पता नहीं है जो यह कर सकता है। शायद लिनक्स के लिए evince या okular? – danio

+0

मैं वास्तव में बेवकूफ महसूस करता हूँ। मैंने एपीआई को गलत तरीके से पढ़ा और माना कि फसलबॉक्स ऊपरी स्तर, निचला राइट था। तो मैं वास्तव में पेज के एक खाली हिस्से में फसल लगा रहा था। – johannth

1

आप शायद एक नि: शुल्क समाधान के लिए देख रहे हैं, लेकिन अगर आप पैसा खर्च करने के लिए है, PDFlib एक शानदार पुस्तकालय है। यह मुझे कभी निराश नहीं किया है।

0

आप पोस्टस्क्रिप्ट फ़ाइल पर पोस्टस्क्रिप्ट (pstopdf या ps2pdf) करने के लिए और उपयोग पाठ प्रसंस्करण से पीडीएफ में बदल सकते हैं। इसके बाद आप आउटपुट को पीडीएफ में बदल सकते हैं।

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

0

एक्रोबेट Javascript API एक setPageBoxes विधि है, लेकिन एडोब किसी भी अजगर कोड नमूने प्रदान नहीं करता है। केवल सी ++, सी # और वीबी।

संबंधित मुद्दे