2014-11-19 6 views
11

के साथ फ़्लैटेड पीडीएफ जेनरेट करें जब मैं अपने किसी भी स्रोत पीडीएफ से पीडीएफ प्रिंट करता हूं, तो फ़ाइल का आकार ड्रॉप बॉक्स को फॉर्म में प्रस्तुत करता है और हटा देता है। संक्षेप में, यह फ़ाइल flattens। यह वह व्यवहार है जिसे मैं प्राप्त करना चाहता हूं।पाइथन

एक अन्य पीडीएफ का उपयोग करके एक पीडीएफ बनाने के लिए निम्नलिखित कोड (जिसे मैं फ़्लैट करना चाहता हूं), यह टेक्स्ट बॉक्स फॉर्म भी लिखता है।

क्या मुझे टेक्स्ट बॉक्स के बिना पीडीएफ मिल सकता है, इसे फ़्लैट करें? जब मैं पीडीएफ के रूप में पीडीएफ प्रिंट करता हूं तो एडोब की तरह ही करता है।

import os 
import StringIO 
from pyPdf import PdfFileWriter, PdfFileReader 
from reportlab.pdfgen import canvas 
from reportlab.lib.pagesizes import letter 

directory = os.path.join(os.getcwd(), "source") # dir we are interested in 
fif = [f for f in os.listdir(directory) if f[-3:] == 'pdf'] # get the PDFs 
for i in fif: 
    packet = StringIO.StringIO() 
    can = canvas.Canvas(packet, pagesize=letter) 
    can.rotate(-90) 
    can.save() 

    packet.seek(0) 
    new_pdf = PdfFileReader(packet) 
    fname = os.path.join('source', i) 
    existing_pdf = PdfFileReader(file(fname, "rb")) 
    output = PdfFileWriter() 
    nump = existing_pdf.getNumPages() 
    page = existing_pdf.getPage(0) 
    for l in range(nump): 
     output.addPage(existing_pdf.getPage(l)) 
    page.mergePage(new_pdf.getPage(0)) 
    outputStream = file("out-"+i, "wb") 
    output.write(outputStream) 
    outputStream.close() 
    print fName + " written as", i 

संक्षेप: मैं एक पीडीएफ, मैं यह करने के लिए एक पाठ बॉक्स जोड़ने की है, की जानकारी करते हुए और नए जानकारी जोड़ने, और फिर

मेरे अन्य कोड इस शून्य की तरह कुछ कुछ बातें लग रहा है मैं उस पीडीएफ से एक पीडीएफ मुद्रित करता हूं। टेक्स्ट बॉक्स अब संपादन योग्य या चलने योग्य नहीं हो जाता है। मैं उस प्रक्रिया को स्वचालित करना चाहता था लेकिन मैंने जो कुछ भी कोशिश की, वह अभी भी टेक्स्ट बॉक्स को संपादन योग्य होने की अनुमति देता है।

+0

इसके लिए एक समाधान भी तलाश रहे हैं। मेरे पास वॉटरमार्किंग पायथन लिपि है, लेकिन दस्तावेज़ में पाठ को चुनने या हाइलाइट करने का प्रयास करते समय वॉटरमार्क रास्ते में आता है। अगर मैं एक फ्लैटेड वॉटरमार्क पीडीएफ उत्पन्न कर सकता हूं और फिर इसे स्रोत पीडीएफ के साथ विलय कर सकता हूं, जो इसे हल करेगा। –

+0

क्या फ़ाइल नाम कुछ विशिष्ट सम्मेलन का पालन करते हैं? यदि हां, तो अर्थपूर्ण कौन सा है? अंतरिक्ष द्वारा फ़ाइल नाम को विभाजित करने का उद्देश्य क्या है, और फिर अल्पविराम से? (अन्यथा, स्क्रिप्ट विफल हो जाती है, लेकिन मुझे यकीन नहीं है कि आप जिस समस्या का सामना कर रहे हैं उसके लिए प्रासंगिक है या नहीं) – gpoo

+0

+ मेकेंट्स मैं इस मुद्दे को पुन: उत्पन्न नहीं कर सकता। मुझे कोई बक्से नहीं मिलते हैं। क्या आप एक परिणाम पेस्ट कर सकते हैं जिसके परिणाम आपको मिलते हैं और अपेक्षित परिणाम? – gpoo

उत्तर

8

तो एक OS पैकेज को स्थापित करने के लिए एक विकल्प है, तो आप pdftk अपने अजगर आवरण pypdftk के साथ इस तरह इस्तेमाल कर सकते हैं:

import pypdftk 
pypdftk.fill_form('filled.pdf', out_file='flattened.pdf', flatten=True) 

तुम भी pdftk पैकेज है, जो Ubuntu पर की तरह किया जा सकता है स्थापित करने के लिए की आवश्यकता होगी इस:

sudo apt-get install pdftk 

pypdftk पुस्तकालय PyPI से डाउनलोड द्वारा कर सकते हैं:

pip install pypdftk 
+0

का उपयोग कर रहा हूं क्या पीडीएफटीके के बिना ऐसा करने का कोई तरीका है? मैं पूछता हूं क्योंकि मैं एक पीडीएफटीके क्लोन लिखने का प्रयास कर रहा हूं क्योंकि पीडीएफटीके सेंटोस 7 पर काम नहीं करता है। किसी भी तरह की सहायता का स्वागत किया जाएगा। –