importar - php pdf
EdiciĆ³n de PDF en PHP? (10)
¿Alguien sabe de un buen método para editar archivos PDF en PHP? Preferiblemente métodos de costo de licencia abierta / licencia cero. :)
¿Estoy pensando en abrir un archivo PDF, reemplazar el texto en el PDF y luego escribir la versión modificada del PDF?
He creado programáticamente archivos PDF en el pasado usando FPDF, pero a veces me pareció un poco difícil de manejar.
Hay una clase de PDF gratuita y fácil de usar para crear documentos PDF. Se llama FPDF. En combinación con FPDI ( http://www.setasign.de/products/pdf-php-solutions/fpdi ), incluso es posible editar documentos PDF. El siguiente código muestra cómo usar FPDF y FPDI para completar un cupón de regalo existente con los datos del usuario.
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'');
La documentación de la extensión PDF / pdflib en PHP es escasa (algo que se ha notado en bugs.php.net). Le recomiendo que use la biblioteca Zend.
No sé si esta es una opción, pero funcionaría de manera muy similar a la biblioteca pdf de Zend, pero no es necesario que cargue un montón de código adicional (el framework zend). Simplemente extiende FPDF.
http://www.setasign.de/products/pdf-php-solutions/fpdi/
Aquí básicamente puedes hacer lo mismo. Cargue el PDF, escriba encima de él y luego guárdelo en un nuevo PDF. En FPDI básicamente insertas el PDF como una imagen para que puedas poner lo que quieras sobre él.
Pero, de nuevo, esto utiliza FPDF, así que si no quieres usar eso, entonces no funcionará.
Realmente tenía grandes esperanzas para dompdf (es una buena idea) pero el problema de posicionamiento es un factor importante en mi uso de fpdf. Aunque es tedioso ya que cada elemento tiene que establecerse; es poderoso cuando todos salen.
Puse una imagen debajo de mi espacio de trabajo en el documento para poner mi diseño encima de para encajar. Siempre ha sido suficiente incluso para las columnas (requiere un poco de cálculo de cadena php, pero nada demasiado terriblemente embriagador).
Buena suerte.
Si está tomando un enfoque de "completar el espacio en blanco", puede colocar el texto con precisión en cualquier lugar que desee en la página. Por lo tanto, es relativamente fácil (si no tedioso) agregar el texto faltante al documento. Por ejemplo, con 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'');
Si intentas reemplazar el contenido en línea, como una "[cadena de marcador de posición"], se vuelve mucho más complicado. Si bien es técnicamente posible hacerlo, es probable que estropee el diseño de la página.
Un documento PDF se compone de un conjunto de operaciones de dibujo primitivas: línea aquí, imagen aquí, fragmento de texto allí, etc. No contiene ninguna información sobre la intención de diseño de esas primitivas.
Si necesita archivos PDF realmente simples, entonces Zend o FPDF están bien. Sin embargo, les resulta difícil y frustrante trabajar con ellos. Además, debido a la forma en que funciona la API, no hay una buena manera de separar el contenido de la presentación de la lógica comercial.
Por esa razón, uso dompdf , que convierte automáticamente HTML y CSS a documentos PDF. Puede diseñar una plantilla como lo haría para una página HTML y usar la sintaxis HTML estándar. Incluso puede incluir un archivo CSS externo. La biblioteca no es perfecta y el marcado o CSS muy complejo a veces se arruina, pero no he encontrado nada más que también funcione.
Tcpdf también es un buen recurso para generar pdf en php http://www.tcpdf.org/
Usamos pdflib para crear archivos PDF desde nuestras aplicaciones de rieles. Tiene enlaces para PHP y una tonelada de otros idiomas.
Usamos la versión comercial, pero también tienen una versión de fuente abierta / gratuita que tiene algunas limitaciones.
Desafortunadamente, esto solo permite la creación de PDF.
Si desea abrir y ''editar'' archivos existentes, pdflib proporciona un producto que hace esto , pero cuesta LOT
Zend Framework puede cargar y editar archivos PDF existentes. Creo que también admite revisiones.
Lo uso para crear documentos en un proyecto, y funciona muy bien. Nunca editado uno sin embargo.
Mira el documento here
<?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);
?>