2012-06-05 15 views
8

मैं एक साधारण पीडीएफ दस्तावेज़ पर हस्ताक्षर करने के दिनचर्या का निर्माण करने, पीएचपी, openssl का उपयोग कर कोशिश कर रहा हूँ, और Zend फ्रेमवर्क (पीडीएफ redering/से निपटने के लिए) का उपयोग कर।डिजिटल एक पीडीएफ पर हस्ताक्षर करने, पीएचपी, Zend, और openssl

मुझे this मिला है, लेकिन यह बस काम नहीं करेगा, ज़ेंड किसी भी पीडीएफ को खोलने में सक्षम नहीं है, यहां तक ​​कि ज़ेंड का अपना परीक्षण पीडीएफ भी नहीं है और ज़ेंड रिपोर्ट नहीं करेगा क्यों, केवल यह 'नहीं कर सकता'।

मुझे पूरा यकीन है कि मैं कुंजीपटल/कर्ट प्रभावी ढंग से दस्तावेज के रूप में प्रभावी ढंग से तैयार करने में सक्षम हूं, लेकिन पीडीएफ में जेनरेट किए गए प्रमाण पत्र को जोड़ने के लिए एक ठोस दृष्टिकोण है क्योंकि उपरोक्त ज़ेंड एक्सटेंशन ने सुझाव दिया है कि यह एक बार किया गया है?

function DigiSignPDF ($pdf_sign_request) { 
    if (get_magic_quotes_gpc()) { 
     $new_pdf = stripslashes($pdf_sign_request['raw_pdf']); 
    } else { 
     $new_pdf = $pdf_sign_request['raw_pdf']; 
    } 
    $test_pdf = stripslashes(file_get_contents('path/Some.pdf')); 
    $test_pdf2 = ('path/Some.pdf'); 
    $pdf = Zend_Pdf::load($new_pdf2); 
    //below is the signing code, from another library, it works as long as Zend_Pdf works 
    $certificate = file_get_contents('path/certificate.p12'); 
    $certificatePassword = 'test123'; 

    if (empty($certificate)) { 
     throw new Zend_Pdf_Exception('Cannot retrieve/generate the certificate.'); 
    } 
    $pdf->attachDigitalCertificate($certificate,$certificatePassword); 
    $eSig_pdf = $pdf->render(); 
    file_put_contents('path/signed_pdf.pdf', $eSig_pdf); 
} 

संपादित बताया कोड: ऊपर केवल अगर मैं Zend_Pdf के लिए इनपुट के रूप में 'test_pdf2' का उपयोग काम करता है। यह प्रमाण को बाइनरी के रूप में मान्यता नहीं देता है, लेकिन मुझे डिस्क पर कभी भी लिखने के बिना पीडीएफ पास करने में सक्षम होना चाहिए।

+0

ठीक है, तो मैं करीब आ गया होगा। क्या हो रहा है कि PHP फ़ाइल में स्लेश, न्यूलाइन, कैरिज रिटर्न कैरेक्टर डालने पर जोर देता है, इससे कोई फर्क नहीं पड़ता कि मैं इसे अपलोड करता हूं, या इसे file_get_contents का उपयोग करके स्थानीय डिस्क से पढ़ता हूं। मुझे पता है और स्ट्रिप्सप्लेश की कोशिश की है, जादू_क्वाट्स को घोषित कर रहा है, आदि। मैं केवल इसे काम करने के लिए प्राप्त कर सकता हूं यदि मेरे पास Zend_Pdf फ़ाइल को सीधे पढ़ता है, जो मेरे लिए काम नहीं करेगा क्योंकि हम इनमें से किसी भी फाइल को नहीं लिखेंगे डिस्क, कभी। क्या PHP को यह समझाने के लिए वैसे भी है कि इसे उस डेटा से छेड़छाड़ नहीं करना चाहिए जिसे इसे संभालने के लिए कहा जाता है? – jbrain

+0

क्या हम आपका कोड देख सकते हैं जिसका उपयोग आप पीडीएफ को संभालने के लिए कर रहे हैं? इसे अपने प्रश्न में संपादित करें। – halfer

+0

इसे हल किया गया, क्योंकि मैं सामग्री को Zend_Pdf को स्ट्रिंग के रूप में पास कर रहा था, मुझे Zend_Pdf :: parse ($ new_pdf) का उपयोग करना चाहिए था, क्योंकि मैन्युअल रूप से यह संभवतः कहता है। (ओओएस) – jbrain

उत्तर

8

TCPDF पीडीएफ फाइलों की signing का समर्थन करता है। शायद आपको स्रोत कोड में कुछ उपयोगी लगता है।

+0

मैं उस पुस्तकालय में आया था, दुर्भाग्य से हम किसी भी बाहरी कोड (मौजूदा ज़ेंड फ्रेमवर्क के अलावा) का उपयोग करने में सक्षम नहीं होंगे। हालांकि अच्छा सुझाव है। – jbrain

+2

@ user1437888 - क्या आप उस स्थिति को निर्दिष्ट करने के लिए अपना प्रश्न संपादित कर सकते हैं? यदि आप कुछ पृष्ठभूमि दे सकते हैं कि यह मामला क्यों है, तो उतना ही बेहतर - यह उत्तर देने में सहायता कर सकता है। – halfer

0

उत्तर के रूप में मेरा समाधान जोड़ना, प्रति हेलफ़र की सलाह: इसे हल करें, क्योंकि मैं सामग्री को Zend_Pdf को स्ट्रिंग के रूप में पास कर रहा था, मुझे ज़ेंड_Pdf :: parse ($ new_pdf) का उपयोग करना चाहिए था, क्योंकि यह बहुत संभवतः कहता है मैनुअल में (उफ़)

इसके अलावा, मैंने विभिन्न संस्करणों के पीडीएफ को डिजिटली हस्ताक्षर करने और टीसीपीडीएफ में स्थानांतरित करके घटक बनाने के साथ अपनी सभी समस्याओं का हल हल किया है, क्योंकि यहां कई लेख सुझाए गए हैं। टीसीपीडीएफ के साथ एक समान चेतावनी से मुलाकात की गई, हालांकि तारों का उपयोग करते समय, सुनिश्चित करें कि आप 'लिखने के HTML' के बजाय टीसीपीडीएफ की 'writeHTMLCell' का उपयोग कर रहे हैं। और PHPs के magic_quotes ', गलती सफेद जगह, एन्कोडिंग, और goblins के लिए देखो।

+0

यह [उपयोगकर्ता] (https://stackoverflow.com/users/8537628/loic-angora) पूछता है: * क्या मेरे पास "संलग्नडिजिटल प्रमाणपत्र()" फ़ंक्शन हो सकता है। मैं zendpdf के साथ डिजिटल पीडीएफ पर हस्ताक्षर करने की कोशिश करता हूं और मुझे कुछ समस्याएं हैं। * – GhostCat

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