Apakah ada yang tahu metode yang baik untuk mengedit file Pdf di PHP? Sebaiknya open-source/nol-biaya lisensi metode. :)
Saya berpikir sepanjang baris dari pembukaan file PDF, mengganti teks dalam PDF dan kemudian menulis dimodifikasi versi PDF?
Aku punya pemrograman file PDF yang dibuat di masa lalu menggunakan FPDF, tapi ternyata sedikit berat di kali.
Jika anda mengambil 'mengisi kosong' pendekatan, anda dapat tepatnya posisi teks di mana saja yang anda inginkan pada halaman. Jadi itu's relatif mudah (jika tidak sedikit membosankan) untuk menambahkan teks hilang ke dokumen. Misalnya dengan Zend Framework:
<?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');
Jika anda're mencoba untuk mengganti konten inline, seperti "[placeholder string]," itu akan jauh lebih rumit. Sementara itu's secara teknis mungkin untuk dilakukan, anda're cenderung mengacaukan tata letak halaman.
Dokumen PDF ini terdiri dari satu set primitif operasi menggambar: baris berikut ini, gambar di sini, potongan teks di sana, dll. Itu tidak berisi informasi tentang tata letak maksud dari orang-orang primitif.
Ada yang gratis dan mudah untuk menggunakan PDF kelas untuk membuat dokumen PDF. It's disebut FPDF. Dalam kombinasi dengan FPDI (http://www.setasign.de/products/pdf-php-solutions/fpdi) hal ini bahkan dimungkinkan untuk mengedit dokumen PDF. Kode berikut menunjukkan bagaimana menggunakan FPDF dan FPDI untuk mengisi yang ada kupon hadiah dengan data pengguna.
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');
Jika anda perlu benar-benar sederhana Pdf, maka Zend atau FPDF baik-baik saja. Namun saya menemukan mereka sulit dan membuat frustasi untuk bekerja dengan. Juga, karena cara API bekerja, ada's tidak ada cara yang baik untuk memisahkan konten dari presentasi dari logika bisnis.
Untuk alasan itu, saya gunakan dompdf, yang secara otomatis mengkonversi HTML dan CSS ke dalam dokumen PDF. Anda dapat lay out template seperti yang anda lakukan untuk sebuah halaman HTML dan menggunakan standar sintaks HTML. Anda bahkan dapat menyertakan sebuah file CSS eksternal. Perpustakaan isn't yang sempurna dan sangat kompleks markup atau css kadang-kadang akan hancur, tapi aku belum't menemukan sesuatu yang lain yang bekerja dengan baik.
Don't tahu jika ini adalah sebuah pilihan, tapi itu akan bekerja sangat mirip dengan Zend's perpustakaan pdf, tapi anda don't perlu memuat sekumpulan kode tambahan (zend framework). Itu hanya extends FPDF.
http://www.setasign.de/products/pdf-php-solutions/fpdi/
Di sini anda dapat pada dasarnya melakukan hal yang sama. Load PDF, menulis di atasnya, dan kemudian simpan ke PDF baru. Di FPDI anda pada dasarnya menyisipkan PDF sebagai gambar sehingga anda dapat menempatkan apa pun yang anda inginkan selama ini.
Tapi sekali lagi, ini menggunakan FPDF, jadi jika anda don't ingin menggunakannya, maka tidak't bekerja.
Aku benar-benar memiliki harapan yang tinggi untuk dompdf (itu adalah ide yang keren) tapi masalah positioning adalah faktor utama dalam menggunakan fpdf. Meskipun itu membosankan karena setiap elemen harus diatur; itu lebih kuat karena semua keluar.
Aku meletakkan gambar di bawah saya kerja di dokumen untuk menempatkan saya letak di atas sesuai. Yang selalu cukup bahkan untuk kolom (membutuhkan sedikit php string perhitungan, tapi ada juga sangat memabukkan).
Good luck.
Kami menggunakan pdflib untuk membuat file PDF dari kami rel aplikasi. Memiliki binding untuk PHP, dan banyak bahasa lainnya.
Kami menggunakan commmercial versi, tetapi mereka juga memiliki free/open source version yang memiliki beberapa keterbatasan.
Sayangnya, ini hanya memungkinkan penciptaan PDF's.
Jika anda ingin membuka dan 'edit' file yang sudah ada, pdflib memberikan produk yang tidak ini ini, tapi biaya a BANYAK
<?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);
?>