Frage

Kennt jemand eine gute Methode zum Bearbeiten von PDF-Dateien in PHP?Vorzugsweise open-source/zero-Lizenz-Kosten-Methoden.:)

Ich bin denken entlang der Linien von dem öffnen einer PDF-Datei ersetzen von text in der PDF-Datei und dann schreiben die geänderte version der PDF-Datei?

Ich habe programmgesteuert erstellt PDF-Dateien, die in der Vergangenheit mit FPDF, fand es aber ein wenig unhandlich mal.

War es hilfreich?

Lösung

Wenn Sie die Einnahme einer 'Lückentext' - Konzept, Sie können genau die position von text überall Sie wollen auf der Seite.So ist es relativ leicht (wenn auch nicht ein wenig mühsam) zu fügen Sie die fehlende text auf das Dokument.Zum Beispiel mit dem 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');

Wenn Sie versuchen, zu ersetzen, inline-content, wie beispielsweise die "[Platzhalter string]" es wird viel komplizierter.Während es technisch möglich ist, zu tun, die Sie wahrscheinlich zu versauen, das layout der Seite.

Ein PDF-Dokument besteht aus einer Reihe von primitiven Zeichenoperationen:Spiel, Bild, text chunk gibt, etc.Es enthält keine Informationen über die Anordnung Absicht, jene primitive.

Andere Tipps

Es ist kostenlos und einfach zu verwenden PDF-Klasse zum erstellen von PDF-Dokumenten.Es heißt FPDF.In Kombination mit FPDI (http://www.setasign.de/products/pdf-php-solutions/fpdi) ist es sogar möglich, PDF-Dokumente Bearbeiten.Der folgende code zeigt, wie Sie mit FPDF und FPDI zu füllen, einen vorhandenen Gutschein mit der Benutzer-Daten.

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

Wenn Sie brauchen wirklich einfach, PDF-Dateien, dann Zend oder FPDF ist in Ordnung.Allerdings finde ich Sie schwierig und frustrierend sein, mit zu arbeiten.Auch wegen der Art, wie die API funktioniert, es gibt keine gute Weise zu trennen, den Inhalt von der Darstellung von business-Logik.

Aus diesem Grund verwende ich dompdf, die automatisch konvertiert HTML-und CSS-PDF-Dokumente.Sie können legen Sie eine Vorlage so, als würden Sie für eine HTML-Seite und verwenden standard-HTML-syntax.Sie können sogar eine externe CSS-Datei.Die Bibliothek ist nicht perfekt und sehr komplexe markup oder css-manchmal bekommt zugerichtet, aber ich habe nicht gefunden was anderes, das so gut funktioniert.

Zend Framework zu laden und Bearbeiten Sie bestehende PDF-Dateien.Ich denke, es unterstützt Revisionen zu.

Ich erstelle Dokumente in einem Projekt, und es funktioniert großartig.Nie bearbeitet man doch.

Check out the doc hier

Weiß nicht, ob dies eine option ist, aber es würde Arbeit sehr ähnlich wie Zend pdf-Bibliothek, aber Sie brauchen nicht zu laden, ein paar extra-code (zend framework).Es ist nur extends FPDF.

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

Hier können Sie im Grunde tun die gleiche Sache.Laden Sie das PDF-schreiben über top von es, und dann speichern Sie eine neue PDF-Datei.In FPDI Sie grundsätzlich legen Sie die PDF-Datei als Bild, so dass Sie können setzen, was Sie wollen, über es.

Aber wieder, dies FPDF verwendet, so dass, wenn Sie nicht wollen, um das zu verwenden, dann wird es nicht funktionieren.

Die PDF/pdflib-extension-Dokumentation von PHP ist sehr dürftig (etwas bemerkt bugs.php.net) -, ich empfehlen Sie verwenden die Zend-Bibliothek.

Tcpdf ist auch eine gute liabrary für die Generierung von pdf in php http://www.tcpdf.org/

Ich hatte wirklich große Hoffnungen für dompdf (es ist eine Coole Idee, aber die Positionierung Thema sind ein wichtiger Faktor in meiner mit fpdf.Obwohl es mühsam, da jedes element eingestellt werden;es ist mächtiger als alle raus.

Lege ich ein Bild unter meinem Arbeitsbereich in das Dokument zu setzen mein layout auf der Oberseite zu passen.Seine immer ausreichend, auch für die Spalten (erfordert ein klein wenig php string Berechnung, aber nichts zu schrecklich unbesonnen).

Viel Glück.

Wir verwenden pdflib zum erstellen von PDF-Dateien von unserer rails-apps.Es hat bindings für PHP und eine Tonne von anderen Sprachen.

Wir verwenden die Werbefilm-version, aber Sie haben auch eine freie/open-source-version das hat einige Einschränkungen.

Leider ist dies nur erlaubt das erstellen von PDF-Dateien.

Wenn Sie möchten, zu öffnen und zu "Bearbeiten", um vorhandene Dateien, pdflib bieten ein Produkt, das dies tut dieser,, aber die Kosten ein MENGE

<?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);
?>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top