2010-11-23 22 views
5

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

विलय फ़ाइल में 2 पृष्ठ होंगे और सर्वर पर भी सहेजे नहीं जाएंगे।

चूंकि, मैं ज़ेंड फ्रेमवर्क का उपयोग कर रहा हूं, मैं इसके साथ एक समाधान पसंद करूंगा (एक ऑनलाइन नहीं ढूंढ सकता ...) और कोई सलाह?

(common solution found online but doesn't work)

संपादित करें: क्योंकि लोगों को क्लिक करने के लिए आलसी हैं। यह कोड लिंक में है क्योंकि यह गलत है और काम नहीं करता है।

I try the script below, but I get the error:

Uncaught exception 'Zend_Pdf_Exception' with message 'Page is attached to one documen, but rendered in context of another

+0

स्पष्ट "काम नहीं करता है" – Gordon

+0

@Gordon: ठीक है, पेज लिंक पर पढ़ें> _> _I स्क्रिप्ट नीचे की कोशिश, लेकिन मैं त्रुटि मिलती है: न आया हुआ अपवाद 'Zend_Pdf_Exception' संदेश के साथ 'पेज एक से जुड़ा हुआ है documen, लेकिन दूसरे_ के संदर्भ में प्रस्तुत किया गया मुझे पता है कि मैं _ कार्य नहीं करता है, लेकिन गंभीरता से, यहां, आपको बस पढ़ना होगा ... – Shikiryu

+2

स्पष्टीकरण के लिए धन्यवाद। आलसी होने में मदद के लिए पूछने वाले लोगों पर आरोप लगाने के बजाय बस अपने प्रश्नों में यथासंभव पूर्ण होने की कोशिश करें। पहले स्थान पर सभी जानकारी डालना आलसी नहीं है। साथ ही, क्या आपने उपयोगकर्ता को त्रुटि होने के बावजूद दिए गए कोड का प्रयास किया है? मैंने त्रुटि संदेश गुमराह किया और [यह विशेष त्रुटि 1.11 में तय की गई है) (http://framework.zend.com/issues/browse/ZF-449) – Gordon

उत्तर

7

ठीक है, मेरे प्रश्न में @ गॉर्डन की टिप्पणी से मार्गदर्शिका के साथ, मुझे एक समाधान मिला।

  1. आप होना चाहिए कम से कम Zend फ्रेमवर्क 1.11 (मैं 1.9 में पहली त्रुटि हुई थी,) (पाया इस सवाल का 3 टिप्पणी के लिए धन्यवाद)
  2. आप चाहिए पीडीएफ आप मर्ज करना चाहते से clone पेज बाकी, , आपका आवेदन एक त्रुटि (स्वयं व्याख्यात्मक एक) प्रिंट करेगा (this slideshare के लिए धन्यवाद जो Zend_Pdf के लिए बहुत दिलचस्प है)
  3. स्थिर पीडीएफ एक पीडीएफ < = 1.4 (मेरा 1.6 था) होना चाहिए। Zend_Pdf पीडीएफ का विश्लेषण नहीं कर सकता है जो संस्करण है> 1.4

मैंने संस्करण 1.6 से 1.4 में स्थिर फ़ाइलों को परिवर्तित करने के लिए this application का उपयोग किया।

यहाँ किसी न किसी कोड रहा है और काम है (मैं इसे अनुकूलित नहीं कर रहा है पता है, मैं इसे बाद में करूँगा, लेकिन अभी भी यह उपयोगी हो सकता है)

$pdf2show = new Zend_Pdf(); // Initializing the merged PDF 
$pdf1 = Zend_Pdf::parse($pdfContent, 1); // $pdfContent is the generated one, got the content... 
$template = clone $pdf1->pages[0]; // cloning the page (a must do) 
$page1 = new Zend_Pdf_Page($template); // Creating the first page of the merged PDF with the previous content 
$pdf2show->pages[] = $page1; // Adding this page to the final PDF 
$pdf2 = Zend_Pdf::load('urlToYourPDF.pdf'); // Loading the statif PDF 
$template2 = clone $pdf2->pages[0]; // cloning the page (a must do) 
$page2 = new Zend_Pdf_Page($template2); // Creating the second page of the merged PDF with the previous content 
$pdf2show->pages[] = $page2; // Adding this page to the final PDF 
sendToWebBrowser('title', $pdf2show->render()); 

sendToWebBrowser एक समारोह के लिए PDF सामग्री भेजने है title के साथ ब्राउज़र ... शीर्षक। $pdf2show->render() एक स्ट्रिंग के रूप में मर्ज किए गए पीडीएफ सामग्री का उत्पादन करता है।

+0

देखें, एक समाधान :) और केवल इसलिए पाया क्योंकि आपने मुझे त्रुटि संदेश बताया;) – Gordon

0

क्या आपने PDF toolkit का उपयोग करके उन्हें विलय करने का प्रयास किया है?

pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf 

123.pdf जिसके परिणामस्वरूप पीडीएफ होगा: इसके साथ

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

+0

आपके उत्तर के लिए धन्यवाद। दुर्भाग्य से, मैं इस समाधान का उपयोग नहीं कर सकता। 1- मैं सर्वर पर कुछ भी इंस्टॉल नहीं कर सकता (एक और व्यक्ति का काम और वह वास्तव में व्यस्त है और इसे 2 सप्ताह से पहले नहीं कर सकता) 2- यह सर्वर पर सहेजना नहीं होगा। – Shikiryu

3
$extractor = new Zend_Pdf_Resource_Extractor(); 
$clone_page_to_use_in_any_pdf = $extractor->clonePage($original_pdf->pages[0]); 

इस तरह मैंने इसे किया।

उम्मीद है कि यह हर किसी की मदद करेगा।

टीजे

+1

मेरी राय में, यह सबसे अच्छा समाधान है! –

1
$extractor = new Zend_Pdf_Resource_Extractor(); 

$page1 = $extractor->clonePage($pdf->pages[$templatePageIndex1]); 
$page2 = $extractor->clonePage($pdf->pages[$templatePageIndex2]); 
$page1->drawText('Some text...', $x, $y); 
$page2->drawText('Another text...', $x, $y); 

$pdf = new Zend_Pdf(); 
$pdf->pages[] = $page1; 
$pdf->pages[] = $page2; 
घोड़ों मुँह से ही

http://framework.zend.com/manual/en/zend.pdf.pages.html#zend.pdf.pages.cloning

+0

सही, लेकिन आपका उदाहरण प्रश्न का उत्तर नहीं देता है;) यह ** ** ** ** पीडीएफ '$ पीडीएफ' से पृष्ठ निकालता है। – Shikiryu

0

विलय pdfs में मेरा अनुभव:

  • Zend_Pdf धीमी गति से और बड़े संकलन के लिए कुशल नहीं है,
  • pdftk ढीला दस्तावेज़ के बुकमार्क और दुर्घटनाग्रस्त हो गया,
  • यदि दस्तावेज़ के आकार से बड़ा दस्तावेज़ विलय कर दिया है
  • पीडीएफएलआईबी वास्तव में तेज़ है और बुकमार्क्स संरक्षित है, बड़े संकलन के लिए कुशल है।
संबंधित मुद्दे