PHP में PDF एडिटिंग? [बन्द है]


81

क्या किसी को PHP में PDF संपादन के लिए एक अच्छी विधि का पता है? अधिमानतः खुला-स्रोत / शून्य-लाइसेंस लागत विधियाँ। :)

मैं एक पीडीएफ फाइल खोलने, पीडीएफ में टेक्स्ट को बदलने और फिर पीडीएफ के संशोधित संस्करण को लिखने की तर्ज पर सोच रहा हूं?

मैंने FPDF का उपयोग करके अतीत में प्रोग्रामेटिक रूप से पीडीएफ फाइलें बनाई हैं, लेकिन यह कई बार थोड़ी सी खराब होती है।


मैंने केवल FPDF का उपयोग किया है और लगता है कि यह बहुत बढ़िया है। वास्तव में बहुत बढ़िया।
SQLMason

मैं इसके लिए एक त्वरित समाधान खोजने की कोशिश कर रहा था। मैं अपने प्रत्येक उत्पाद पृष्ठों के लिए एक ही pdf चाहता था लेकिन प्रत्येक pdf पर प्रतिस्थापित उत्पाद संख्या और उत्पाद नाम के साथ। मैंने पाया कि मेल मर्ज (वर्ड या ओपनऑफ़िस) का उपयोग करना वास्तव में ऐसा करने का सबसे आसान तरीका है। फिर मैंने सभी pdfs को निर्यात किया और उन्हें अपलोड किया। आशा है कि यह किसी की मदद करता है।
NotJay

जवाबों:


70

यदि आप 'रिक्त स्थान भरें' दृष्टिकोण से ले रहे हैं, तो आप पृष्ठ पर कहीं भी पाठ को ठीक से रख सकते हैं। इसलिए यह बहुत आसान है (यदि थोडा थकाऊ नहीं है) दस्तावेज़ में गुम पाठ जोड़ना। उदाहरण के लिए Zend फ्रेमवर्क के साथ:

<?php
require_once 'Zend/Pdf.php';

$pdf = Zend_Pdf::load('blank.pdf');
$page = $pdf->pages[0];
$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
$page->setFont($font, 12);
$page->drawText('Hello world!', 72, 720);
$pdf->save('zend.pdf');

यदि आप इनलाइन सामग्री को बदलने का प्रयास कर रहे हैं, जैसे कि "[प्लेसहोल्डर स्ट्रिंग]," तो यह और अधिक जटिल हो जाता है। हालांकि यह तकनीकी रूप से संभव है, आप पृष्ठ के लेआउट को गड़बड़ाने की संभावना रखते हैं।

एक पीडीएफ दस्तावेज़ में आदिम ड्राइंग ऑपरेशन का एक सेट शामिल है: यहाँ लाइन, यहाँ इमेज, टेक्स्ट चंक, इत्यादि। इसमें उन प्राइमिटिव्स के लेआउट इंटेंस के बारे में कोई जानकारी नहीं है।


1
यह भी खूब रही! मुझे नहीं पता था कि Zend फ्रेमवर्क मुफ्त था, मैं Zend Studio द्वारा स्वामित्व में उलझन में था।
लियाम

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


2
क्या यह अब Zend के बिना काम करता है?
विलियम एंट्रीकेन

किसी भी समाधान अगर मैं [प्लेसहोल्डर स्ट्रिंग] जैसी सामग्री को बदलना चाहता था?
9

43

पीडीएफ दस्तावेज़ बनाने के लिए पीडीएफ क्लास का उपयोग करने के लिए एक स्वतंत्र और आसान है। इसे FPDF कहा जाता है । FPDI ( http://www.setasign.de/products/pdf-php-solutions/fpdi ) के संयोजन में पीडीएफ दस्तावेजों को संपादित करना और भी संभव है। निम्न कोड दिखाता है कि उपयोगकर्ता डेटा के साथ मौजूदा उपहार कूपन को भरने के लिए FPDF और FPDI का उपयोग कैसे करें।

require_once('fpdf.php'); 
require_once('fpdi.php'); 
$pdf = new FPDI();

$pdf->AddPage(); 

$pdf->setSourceFile('gift_coupon.pdf'); 
// import page 1 
$tplIdx = $this->pdf->importPage(1); 
//use the imported page and place it at point 0,0; calculate width and height
//automaticallay and ajust the page size to the size of the imported page 
$this->pdf->useTemplate($tplIdx, 0, 0, 0, 0, true); 

// now write some text above the imported page 
$this->pdf->SetFont('Arial', '', '13'); 
$this->pdf->SetTextColor(0,0,0);
//set position in pdf document
$this->pdf->SetXY(20, 20);
//first parameter defines the line height
$this->pdf->Write(0, 'gift code');
//force the browser to download the output
$this->pdf->Output('gift_coupon_generated.pdf', 'D');

1
उत्कृष्ट पुस्तकालय - वास्तव में मैं क्या था, सिफारिश के लिए धन्यवाद
जेम्स-गेल्डर्ट

1
यह अच्छा है, लेकिन कुछ पीडीएफ में यह त्रुटि देता है "FPDF error: This document (testcopy.pdf) probably uses a compression technique which is not supported by the free parser shipped with FPDI."इसके लिए कोई समाधान?

आपको अपने पीडीएफ को पुराने संस्करण (पीडीएफ 1.4) में बदलने की जरूरत है या एफडीआई वाणिज्यिक संस्करण का उपयोग करना होगा। हम एक अलग वाणिज्यिक एडऑन के रूप में एक पार्सर प्रतिस्थापन की पेशकश करते हैं, जो FPDI को इन संपीड़न विशेषताओं का उपयोग करने वाले दस्तावेज़ों को संभालने में सक्षम बनाता है। source
स्विसफ्रेंड

क्या किसी अन्य वेबपेज से सेटसोर्स करना संभव है? Ex: example.com/file.pdf?
एलेक्स

19

यदि आपको वास्तव में सरल पीडीएफ की आवश्यकता है, तो Zend या FPDF ठीक है। हालाँकि मुझे उनके साथ काम करने में मुश्किल और निराशा होती है। इसके अलावा, एपीआई काम करने के तरीके के कारण, व्यावसायिक तर्क से प्रस्तुति से सामग्री को अलग करने का कोई अच्छा तरीका नहीं है।

उस कारण से, मैं dompdf का उपयोग करता हूं , जो स्वचालित रूप से HTML और CSS को पीडीएफ दस्तावेजों में परिवर्तित करता है। आप एक HTML पृष्ठ के लिए और मानक HTML सिंटैक्स का उपयोग करने के लिए एक खाका तैयार कर सकते हैं। आप एक बाहरी CSS फ़ाइल भी शामिल कर सकते हैं। लाइब्रेरी एकदम सही नहीं है और बहुत ही जटिल मार्कअप या सीएसएस कभी-कभी खराब हो जाता है, लेकिन मुझे और कुछ भी नहीं मिला जो काम करता हो।


9
-1 चूंकि यह सवाल का जवाब नहीं देता है। पोस्टर मौजूदा पीडीएफ को संपादित करना चाहता है जो उन्हें खरोंच से पैदा नहीं करता है।
रीमुंड

9
मैं इस पृष्ठ पर आया क्योंकि मैं एक पीडीएफ को संपादित करना चाह रहा था, लेकिन यह उत्तर मेरे लिए अधिक उपयोगी है क्योंकि मैं देख सकता हूं कि मौजूदा पीडीएफ को संपादित करने के बजाय html में स्क्रैच से निर्माण करना आसान क्यों हो सकता है।
जस्टिन विंसेंट

3

पता नहीं कि यह एक विकल्प है, लेकिन यह Zend के pdf लाइब्रेरी के समान होगा, लेकिन आपको अतिरिक्त कोड (zend फ्रेमवर्क) का एक गुच्छा लोड करने की आवश्यकता नहीं है। यह सिर्फ FPDF का विस्तार करता है।

http://www.setasign.de/products/pdf-php-solutions/fpdi/

यहां आप मूल रूप से एक ही काम कर सकते हैं। पीडीएफ को लोड करें, उसके ऊपर लिखें, और फिर एक नए पीडीएफ में सहेजें। एफपीडीआई में आप मूल रूप से पीडीएफ को एक छवि के रूप में सम्मिलित करते हैं, ताकि आप जो चाहें उस पर डाल सकें।

लेकिन फिर से, यह FPDF का उपयोग करता है, इसलिए यदि आप इसका उपयोग नहीं करना चाहते हैं, तो यह काम नहीं करेगा।


3

Zend फ्रेमवर्क मौजूदा पीडीएफ फाइलों को लोड और संपादित कर सकता है। मुझे लगता है कि यह संशोधन का भी समर्थन करता है।

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

यहाँ डॉक्टर की जाँच करें


2

PHP में PDF / pdflib एक्सटेंशन डॉक्यूमेंट विरल है (कुछ ऐसा जो बग्सफे.प.नेट में नोट किया गया है) - मुझे लगता है कि आप Zend लाइब्रेरी का उपयोग करते हैं।



1

मुझे वास्तव में डोमपेड (यह एक अच्छा विचार है) के लिए उच्च उम्मीदें थीं, लेकिन स्थिति मुद्दा मेरे fpdf का उपयोग करने में एक प्रमुख कारक है। यद्यपि यह थकाऊ है क्योंकि हर तत्व को सेट करना होगा; यह शक्तिशाली है क्योंकि सभी बाहर निकलते हैं।

मैंने अपने लेआउट को फिट करने के लिए अपने लेआउट में डालने के लिए दस्तावेज़ में अपने कार्यक्षेत्र के नीचे एक छवि बिछाई। यह हमेशा कॉलम के लिए भी पर्याप्त होता है (इसके लिए थोड़ी सी php स्ट्रिंग गणना की आवश्यकता होती है, लेकिन बहुत अधिक हेडली नहीं होती है)।

सौभाग्य।


0

हम अपने रेल एप्लिकेशन से पीडीएफ फाइल बनाने के लिए pdflib का उपयोग करते हैं। इसमें PHP के लिए बाइंडिंग और अन्य भाषाओं का एक टन है।

हम कमर्शियल संस्करण का उपयोग करते हैं, लेकिन उनके पास एक मुक्त / खुला स्रोत संस्करण है जिसकी कुछ सीमाएं हैं।

दुर्भाग्य से, यह केवल पीडीएफ के निर्माण की अनुमति देता है।

यदि आप मौजूदा फ़ाइलों को खोलना और उन्हें संपादित करना चाहते हैं, तो pdflib ऐसा उत्पाद प्रदान करता है जो ऐसा करता है , लेकिन एक बहुत खर्च होता है


-1
<?php

//getting new instance
$pdfFile = new_pdf();

PDF_open_file($pdfFile, " ");

//document info
pdf_set_info($pdfFile, "Auther", "Ahmed Elbshry");
pdf_set_info($pdfFile, "Creator", "Ahmed Elbshry");
pdf_set_info($pdfFile, "Title", "PDFlib");
pdf_set_info($pdfFile, "Subject", "Using PDFlib");

//starting our page and define the width and highet of the document
pdf_begin_page($pdfFile, 595, 842);

//check if Arial font is found, or exit
if($font = PDF_findfont($pdfFile, "Arial", "winansi", 1)) {
    PDF_setfont($pdfFile, $font, 12);
} else {
    echo ("Font Not Found!");
    PDF_end_page($pdfFile);
    PDF_close($pdfFile);
    PDF_delete($pdfFile);
    exit();
}

//start writing from the point 50,780
PDF_show_xy($pdfFile, "This Text In Arial Font", 50, 780);
PDF_end_page($pdfFile);
PDF_close($pdfFile);

//store the pdf document in $pdf
$pdf = PDF_get_buffer($pdfFile);
//get  the len to tell the browser about it
$pdflen = strlen($pdfFile);

//telling the browser about the pdf document
header("Content-type: application/pdf");
header("Content-length: $pdflen");
header("Content-Disposition: inline; filename=phpMade.pdf");
//output the document
print($pdf);
//delete the object
PDF_delete($pdfFile);
?>

8
आप किस पुस्तकालय का उपयोग कर रहे हैं?
ह्यूगो एस्ट्राडा

1
pdf_set_info($pdfFile, "Title", "PDFlib");
user183037

अभी भी स्पष्ट नहीं है कि यह कौन सी लाइब्रेरी है
डेनिज़ सेलेबी

मेरा मानना ​​है कि उनका मतलब इनबिल्ट php pdflib निकालना है। php.net/manual/en/pdf.examples-basic.php
Kostiantyn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.