2014-10-16 7 views
6

मर्ज करने के लिए एमपीडीएफ का उपयोग कैसे करें मैं यह कहकर शुरू करूंगा कि मैं पीडीएफ जेपीडीएफ के साथ ठीक कर सकता हूं, लेकिन मेरे जीवन के लिए, मैं इसे पीडीएफ के साथ मौजूदा पीडीएफ में विलय नहीं कर सकता बस उत्पन्न हुआ।PHP - पीडीएफ

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

mPDF error: Cannot open '/downloads/test.pdf'. 

ऊपर संदेश अस्पष्ट और क्यों यह फ़ाइल नहीं खोल सकता है के रूप में स्पष्ट नहीं है ...

include_once("./pdf/mpdf/mpdf.php"); 

$output_file = $_GET['output_file']; 
$url = $_GET['input_file']; 
$technical_drawing = $_GET['tech_drawing']; 

$html = file_get_contents($url); 

$mpdf = new mPDF('utf-8','Letter','','',0,0,0,0,0,0,'P'); 
$mpdf->SetImportUse(); 

$pagecount = $mpdf->SetSourceFile($technical_drawing); 
$tplIdx = $mpdf->ImportPage($pagecount); 
$mpdf->UseTemplate($tplIdx); 

$mpdf->WriteHTML($html); 
$mpdf->Output($output_file, 'D'); 

exit; 

$ output_file फ़ाइल नाम उपयोगकर्ता को दिखाया हो जाएगा: यहाँ कोड मैं कोशिश करते हैं और पीडीएफ़ विलय करने के लिए उपयोग कर रहा हूँ है। $ url वह HTML है जिसे हम पीडीएफ पीढ़ी के दौरान फ़ाइल में लिख रहे हैं। $ techn_drawing एक पीडीएफ का एक सापेक्ष पथ है जिसे हम जेनरेट किए गए पीडीएफ के साथ जोड़ना/विलय करना चाहते हैं।

मुझे समझ में आता है कि मैं ghostscript की तरह कुछ उपयोग कर सकता हूं, लेकिन मेरे पास क्लाइंट के सर्वर पर उस प्रकार की पहुंच नहीं है।

मुझे बताएं कि किसी को एमपीडीएफ का उपयोग करके इसका समाधान मिला है या यदि मैं एसओएल हूं। और पीडीएफ विलय करने के लिए एक और पुस्तकालय खोजने की जरूरत है। मैं वास्तव में समाधान या सुझावों की तलाश में हूं, लेकिन सिर्फ एक और पुस्तकालय के लिंक नहीं। मैंने Google में या एमपीडीएफ के दस्तावेज में जो पाया है उसे समाप्त कर दिया है जो मेरे पास होने वाली त्रुटि का वर्णन करता है।

संपादित करें: http://example.com/pdf/example.pdf से '/downloads/test.pdf' में एमपीडीएफ त्रुटि परिवर्तित की गई।

EDIT_2: कोड को सापेक्ष पथ लेने के लिए तय किया गया है।

यहां अंतिम कार्य कोड है। बोनस अगर कोई जानता है कि पीडीएफ दस्तावेज़ में एचटीएमएल लिखने के आदेश को निर्दिष्ट करने के लिए, अंतिम पृष्ठ के रूप में पृष्ठ आयात करना (कस्टम पेज आकार HTML से अलग) के साथ।

include_once("./pdf/mpdf/mpdf.php"); 

    $output_file = 'test-' . $_GET['output_file']; 
    $url = $_GET['input_file']; 
    $technical_drawing = $_GET['tech_drawing']; 

    $html = file_get_contents($url); 


    if(!file_exists($technical_drawing)) { 
     $mpdf = new mPDF('utf-8','Letter','','',0,0,0,0,0,0,'L'); 
    } else { 
     $mpdf = new mPDF('utf-8','A3-L','','',0,0,0,0,0,0,'L'); 

     $mpdf->SetImportUse(); 

     $pagecount = $mpdf->SetSourceFile($technical_drawing); 
     $import_page = $mpdf->ImportPage(); 

     $mpdf->UseTemplate($import_page); 

     // Add Last page 
     $mpdf->AddPageByArray(array(
     'orientation' => 'P', 
     'ohvalue' => 1, 
     'ehvalue' => -1, 
     'ofvalue' => -1, 
     'efvalue' => -1, 
     'newformat' => 'Letter' 
    )); 
    } 

    $mpdf->WriteHTML($html); 
    $mpdf->Output($output_file, 'D'); 

    exit; 
+0

कहाँ यूआरएल 'http : // example.com/पीडीएफ/example.pdf' से आता है? – zerkms

+0

आपको स्थानीय फ़ाइल पथ नहीं देना चाहिए यूआरएल –

+0

@zerkms - क्षमा करें, स्पष्टीकरण के लिए, यह example.com नहीं है। मेरा यूआरएल स्थानीय पथ पर सेट है जैसे '/downloads/test.pdf'। – cvanorman

उत्तर

3

मैं इस तरह pdfs मर्ज - {सभी फ़ाइलों में सभी पृष्ठों}:

इस $ = क्लास कि mPDF वर्ग फैली ...

function mergePDFFiles(Array $filenames, $outFile) 
{ 
    if ($filenames) { 

     $filesTotal = sizeof($filenames); 
     $fileNumber = 1; 

     $this->SetImportUse(); 

     if (!file_exists($outFile)) { 
      $handle = fopen($outFile, 'w'); 
      fclose($handle); 
     } 

     foreach ($filenames as $fileName) { 
      if (file_exists($fileName)) { 
       $pagesInFile = $this->SetSourceFile($fileName); 
       for ($i = 1; $i <= $pagesInFile; $i++) { 
        $tplId = $this->ImportPage($i); 
        $this->UseTemplate($tplId); 
        if (($fileNumber < $filesTotal) || ($i != $pagesInFile)) { 
         $this->WriteHTML('<pagebreak />'); 
        } 
       } 
      } 
      $fileNumber++; 
     } 

     $this->Output($outFile); 

    } 

} 
+0

यह मुझे एक खाली पीडीएफ देता है, क्या आपको टेम्पलेट को एक पृष्ठ के रूप में जोड़ने की आवश्यकता नहीं है? –

0
function mergePDFFiles(Array $filenames, $outFile) { 
    $mpdf = new mPDF(); 
    if ($filenames) { 
     // print_r($filenames); die; 
     $filesTotal = sizeof($filenames); 
     $fileNumber = 1; 
     $mpdf->SetImportUse(); 
     if (!file_exists($outFile)) { 
      $handle = fopen($outFile, 'w'); 
      fclose($handle); 
     } 
     foreach ($filenames as $fileName) { 
      if (file_exists($fileName)) { 
       $pagesInFile = $mpdf->SetSourceFile($fileName); 
       //print_r($fileName); die; 
       for ($i = 1; $i <= $pagesInFile; $i++) { 
        $tplId = $mpdf->ImportPage($i); 
        $mpdf->UseTemplate($tplId); 
        if (($fileNumber < $filesTotal) || ($i != $pagesInFile)) { 
         $mpdf->WriteHTML('<pagebreak />'); 
        } 
       } 
      } 
      $fileNumber++; 
     } 
     $mpdf->Output($outFile, 'D'); 
    } 
} 
+2

कृपया बताएं कि आपका कोड उपयोगकर्ता क्वेरी को कैसे हल करता है –