Vra

Is daar iemand weet van'n goeie metode vir die redigering PDFs in PHP?Verkieslik oop-bron/nul-lisensie koste metodes.:)

Ek dink langs die lyne van die opening van'n PDF-lêer, die vervanging van die teks in die PDF en dan skryf uit die aangepaste weergawe van die PDF?

Ek het programmaties geskep PDF-lêers in die verlede met behulp van FPDF, maar het gevind dat dit'n bietjie lomp by tye.

Was dit nuttig?

Oplossing

As jy is die neem van'n " vul in die leë se benadering, jy kan presies die posisie van die teks waar jy wil op die bladsy.So dit is relatief maklik (indien nie'n bietjie vervelig) te voeg die ontbrekende teks van die dokument.Byvoorbeeld met die Zend Raamwerk:

<?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');

As jy probeer om te vervang inline inhoud, soos'n "[plekhouer string]," dit raak baie meer ingewikkeld.Terwyl dit is tegnies moontlik om dit te doen, jy is geneig om te mors op die uitleg van die bladsy.

'n PDF-dokument is saamgestel uit'n stel van die primitiewe tekening bedrywighede:lyn hier, beeld hier, teksgedeelte is daar, ens.Dit bevat nie enige inligting oor die uitleg bedoeling van die primitiewes.

Ander wenke

Daar is 'n gratis en maklik om te PDF klas gebruik om PDF-dokumente te skep. Dit is bekend as FPDF . In kombinasie met FPDI ( http://www.setasign.de/products/pdf -php-oplossings / fpdi ) is dit selfs moontlik om PDF-dokumente te wysig. Die volgende kode wys hoe om FPDF en FPDI gebruik om 'n bestaande geskenk koepon in te vul met die gebruiker data.

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');

As jy werklik 'n eenvoudige PDFs, dan Stuur of FPDF is fyn. Maar ek vind dit moeilik en frustrerend om mee te werk. Ook, as gevolg van die manier waarop die API werk, is daar geen goeie manier om die inhoud van die aanbieding te skei van besigheid logika.

Om dié rede, gebruik ek dompdf , wat outomaties vat HTML en CSS om PDF-dokumente. Jy kan uit te lê 'n sjabloon net soos jy sou vir 'n HTML bladsy en gebruik standaard HTML syntax. Jy kan selfs sluit 'n eksterne CSS-lêer. Die biblioteek is nie perfek nie en baie komplekse opmaak of css soms kry verdwaalde, maar ek het nie gevind enigiets anders wat as goed werk.

Stuur Framework kan laai en bestaande PDF-lêers te wysig. Ek dink dit word ondersteun deur die hersiening te.

Ek gebruik dit om dokumente te skep in 'n projek, en dit werk baie goed. Nooit geredigeer een though.

Check uit die doc hier

Weet nie of dit is 'n opsie, maar dit sal werk baie soortgelyk aan Zend se pdf biblioteek, maar jy hoef nie 'n klomp van die ekstra-kode (die stuur framework) laai. Dit strek net FPDF.

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

Hier kan jy basies dieselfde ding doen. Laai die PDF, skryf oor die top van dit, en dan slaan 'n nuwe PDF. In FPDI basies voeg jy die PDF as 'n beeld, sodat jy kan sit wat jy wil oor dit.

Maar weereens, hierdie gebruik FPDF, so as jy nie wil hê om dit te gebruik, dan sal dit nie werk nie.

Die PDF / pdflib uitbreiding dokumentasie in PHP is yl (iets wat in bugs.php.net het opgemerk) - Ek reccommend jy die Zend biblioteek gebruik

.

Tcpdf is ook 'n goeie liabrary vir die opwekking van pdf in PHP http://www.tcpdf.org/

Ek het regtig het 'n hoë verwagtinge vir dompdf (dit is 'n koel idee), maar die plasing kwessie is 'n belangrike faktor in my gebruik van fpdf. Al is dit vervelig as elke element het om in te lê; dit is 'n kragtige as al uitkom.

Ek lê 'n beeld onder my werkplek in die dokument na my uitleg op die top van te pas sit. Sy altyd voldoende is selfs vir kolomme (vereis 'n klein bietjie van PHP string berekening, maar niks te verskriklik onstuimige).

Sterkte.

Ons gebruik pdflib om PDF-lêers te skep van ons relings programme. Dit het bindings vir PHP, en 'n ton van ander tale.

Ons gebruik die commmercial weergawe, maar hulle het ook 'n gratis / open bron weergawe wat 'n paar beperkinge het.

Ongelukkig is dit kan net die skepping van PDF's.

As jy wil oopmaak en 'edit' bestaande lêers, pdflib hoef te verskaf n produk wat hierdie hierdie doen, maar kos 'n BAIE

<?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);
?>
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top