2015-10-12 10 views
8

द्वारा जेनरेट किए गए .docx से पीडीएफ जेनरेट करें। मैं PHPWord का उपयोग कर टेम्पलेट से .docx फ़ाइलों को बना रहा हूं। यह ठीक काम करता है लेकिन अब मैं जेनरेट की गई फाइल को PDF में कनवर्ट करना चाहता हूं।PHPWord

सबसे पहले मैं PHPWord

$wordPdf = \PhpOffice\PhpWord\IOFactory::load($filename.".docx"); 

\PhpOffice\PhpWord\Settings::setPdfRendererPath(dirname(__FILE__)."/../../Office/tcpdf"); 
\PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF'); 

$pdfWriter = \PhpOffice\PhpWord\IOFactory::createWriter($wordPdf , 'PDF'); 
if (file_exists($filename.".pdf")) unlink($filename.".pdf"); 
$pdfWriter->save($filename.".pdf"); 

के साथ संयोजन में tcpdf उपयोग करने की कोशिश लेकिन जब मैं फ़ाइल को लोड करने की कोशिश PDF करने के लिए इसे परिवर्तित करने के लिए मैं निम्नलिखित अपवाद फ़ाइल

Fatal error: Uncaught exception 'BadMethodCallException' with message 'Cannot add PreserveText in Section.'

को लोड करते समय मिलता है कुछ शोध के बाद मैंने पाया कि कुछ अन्य लोगों के पास यह बग भी है (phpWord - Cannot add PreserveText in Section)

संपादित

After trying around some more I found out, that the Exception only occurs when I have some mail merge fields in my document. Once I removed them the Exception does not come up anymore, but the converted PDF files look horrible. All style information are gone and I can't use the result, so the need for an alternative stays.



मैं एक और तरीका है का उपयोग कर पीडीएफ उत्पन्न करने के लिए के बारे में सोचा है, लेकिन मैं केवल 4 तरीके मिल सकता है:

  1. OpenOffice का उपयोग करना - असंभव क्योंकि मैं सर्वर पर किसी भी सॉफ्टवेयर को स्थापित नहीं कर सकता। इसके अलावा जिस तरह से उल्लेख किया here या तो मेरी होस्टर के रूप में काम नहीं किया (Strato) जा रहा ओएस के रूप में SunOS उपयोग करता है और यह लिनक्स
  2. जरूरत phpdocx का उपयोग करना - मैं इसके लिए भुगतान करने के लिए किसी भी बजट नहीं है और डेमो पीडीएफ
  3. नहीं बना सकते
  4. PHPLiveDocx का उपयोग करना - यह काम करता है, लेकिन प्रति दिन 250 दस्तावेजों और 20 प्रति घंटे की सीमा है और मैं एक बार में arround 300 दस्तावेजों, हो सकता है यहां तक ​​कि कई बार एक दिन
  5. कन्वर्ट करने के लिए PHP-Digital-Format-Convert का उपयोग करना है - उत्पादनसे बेहतर दिखता है 23,210 और tcpdf, लेकिन अभी भी छवियों के रूप में नहीं प्रयोग करने योग्य शैलियों

वहाँ एक 5 वीं रास्ता पीडीएफ उत्पन्न करने के लिए है की याद कर रहे हैं, और सबसे (सभी नहीं!)? या जेनरेट किए गए पीडीएफ दस्तावेज़ों को अच्छा बनाने के लिए कोई समाधान है?

+2

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

+0

@Rob_M हाँ मैंने पहले से ही एक HTML टेम्पलेट बनाने के बारे में सोचा है क्योंकि एचटीएमएल को पीडीएफ में कनवर्ट करने के लिए कुछ लाइब्रेरी हैं, लेकिन मेरे पास बहुत सारे टेम्पलेट्स हैं, इसलिए यह उन्हें बनाने के लिए काफी काम होगा और जिस तरह से मैं भरूं उन्हें सामग्री के साथ, इसलिए मुझे उम्मीद है कि एक और आसान तरीका है ... – Pinguin895

+0

यह लिंक मदद कर सकता है: https://github.com/PHPOffice/PHPWord/issues/311 –

उत्तर

0

मुझे नहीं लगता कि मैं सही कर रहा हूँ .. आप HTML सामग्री के रूप में दस्तावेज़ सहेजने

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML');

के बाद से आप HTML फ़ाइल सामग्री पढ़ सकते हैं और की मदद से पीडीएफ फाइल के रूप में सामग्री लिखने एमपीडीएफ या टीसीपीडीएफ या एफपीडीएफ।

0

मैं Gears/pdf इस्तेमाल किया पीडीएफ के लिए docx phpword द्वारा उत्पन्न फ़ाइल को रूपांतरित करने:

$success = Gears\Pdf::convert(
      'file_path/file_name.docx', 
      'file_path/file_name.pdf');