Редактирование PDF в PHP? [закрыто]

Кто-нибудь знает хороший метод для редактирования PDF-файлов в PHP? Предпочтительно методы с открытым исходным кодом / с нулевой лицензией. :)

Я думаю о том, как открыть файл PDF, заменить текст в PDF, а затем выписать измененную версию PDF?

Раньше я программно создавал PDF-файлы с использованием FPDF, но иногда он оказывался немного громоздким.

10.08.2008 21:58:24
Я только использовал FPDF и думаю, что это круто. Как действительно круто.
SQLMason 17.10.2011 17:02:41
Я пытался найти быстрое решение этого вопроса. Я хотел один и тот же PDF-файл для каждой страницы моего продукта, но с заменой номера и названия продукта на каждый PDF-файл. Я обнаружил, что использование слияния (Word или OpenOffice) на самом деле является самым простым способом сделать это. Затем я экспортировал все PDF-файлы и загрузил их. Надеюсь, это кому-нибудь поможет.
NotJay 2.09.2015 19:09:51
10 ОТВЕТОВ
РЕШЕНИЕ

Если вы используете подход «заполнить пробел», вы можете точно расположить текст в любом месте на странице. Таким образом, относительно легко (если не немного утомительно) добавить недостающий текст в документ. Например, с 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');

Если вы пытаетесь заменить встроенный контент, такой как «[строка заполнителя]», это становится намного сложнее. Хотя это технически возможно сделать, вы, скорее всего, испортите макет страницы.

Документ PDF состоит из набора примитивных операций рисования: строка здесь, изображение здесь, фрагмент текста и т. Д. Он не содержит никакой информации о намерениях макета этих примитивов.

68
11.08.2008 00:54:22
Это здорово! Я не осознавал, что Zend Framework был бесплатным, меня смутила Zend Studio, которая является проприетарной.
Liam 7.10.2008 10:03:59
Просто предостережение для любого, кто пытается использовать это: он работает только с PDF-файлами, созданными в Acrobat версии 4 и ранее. После версии 4 Adobe начала кодировать файлы, затрудняя редактирование PDF-файлов (или импорт в другие PDF-файлы).
Darryl Hein 9.06.2009 01:26:48
PDF 1.4 Поддержка была добавлена .
Raphael Schweikert 14.04.2011 09:49:15
Теперь это работает без Zend?
William Entriken 11.04.2013 17:24:55
Любое решение, если я хотел заменить содержимое, как [строка заполнителя]?
Starx 26.08.2013 09:28:20

Мы используем pdflib для создания файлов PDF из наших приложений rails. У него есть привязки для PHP и множество других языков.

Мы используем коммерческую версию, но у них также есть бесплатная / открытая версия, которая имеет некоторые ограничения.

К сожалению, это позволяет создавать только PDF-файлы.

Если вы хотите открывать и «редактировать» существующие файлы, pdflib предоставляет продукт, который делает это , но стоит МНОГО

0
10.08.2008 22:41:00

Zend Framework может загружать и редактировать существующие файлы PDF. Я думаю, что он также поддерживает исправления.

Я использую его для создания документов в проекте, и он прекрасно работает. Никогда не редактировал хотя.

Проверьте документ здесь

3
10.08.2008 23:16:39

Документация по расширению PDF / pdflib в PHP немногочисленна (что было отмечено в bugs.php.net) - я рекомендую вам использовать библиотеку Zend.

2
21.08.2008 16:15:39

Если вам нужны действительно простые PDF-файлы, тогда Zend или FPDF подойдут . Однако мне сложно с ними работать. Кроме того, из-за того, как работает API, нет хорошего способа отделить контент от представления от бизнес-логики.

По этой причине я использую dompdf , который автоматически конвертирует HTML и CSS в документы PDF. Вы можете создать шаблон так же, как и для HTML-страницы, и использовать стандартный синтаксис HTML. Вы даже можете включить внешний файл CSS. Библиотека не идеальна и очень сложная разметка или css иногда искажается, но я не нашел ничего более подходящего.

19
7.12.2012 22:51:30
-1 Так как не отвечает на вопрос. Постер хочет редактировать существующие PDF-файлы, не создавая их с нуля.
Reimund 26.01.2012 11:24:31
Я пришел на эту страницу, потому что хотел отредактировать PDF-файл, но этот ответ кажется мне более полезным, потому что я понимаю, почему может быть проще создать html с нуля, чем редактировать существующий PDF-файл.
Justin Vincent 29.03.2012 21:44:26

Не знаю, если это вариант, но он будет работать очень похоже на библиотеку PDF Zend, но вам не нужно загружать кучу дополнительного кода (Zend Framework). Это просто расширяет FPDF.

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

Здесь вы можете сделать то же самое. Загрузите PDF, напишите поверх него и сохраните в новом PDF. В FPDI вы в основном вставляете PDF как изображение, чтобы вы могли поместить поверх него все, что захотите.

Но опять же, это использует FPDF, так что если вы не хотите использовать это, то это не будет работать.

3
9.09.2008 22:46:40

Я действительно возлагал большие надежды на dompdf (это крутая идея), но проблема с позиционированием является основным фактором при использовании fpdf. Хотя это утомительно, поскольку каждый элемент должен быть установлен; это мощно, как все выходят.

Я кладу изображение под рабочим пространством в документе, чтобы разместить макет поверх него. Его всегда было достаточно даже для столбцов (требуется немного вычисления php-строки, но ничего страшного не бывает).

Удачи.

1
18.09.2008 00:55:36
<?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);
?>
-1
21.10.2009 20:56:21
Какую библиотеку вы используете?
Hugo Estrada 26.02.2010 13:24:22
pdf_set_info($pdfFile, "Title", "PDFlib");
user183037 7.02.2011 00:35:33
до сих пор не ясно, что это за библиотека
Deniz Celebi 16.02.2018 16:03:24

Существует бесплатный и простой в использовании класс PDF для создания документов PDF. Это называется FPDF . В сочетании с FPDI ( http://www.setasign.de/products/pdf-php-solutions/fpdi ) можно даже редактировать PDF-документы. Следующий код показывает, как использовать 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');
40
1.07.2018 15:06:16
Отличная библиотека - именно то, что я хотел, спасибо за рекомендацию
james-geldart 26.01.2012 15:53:47
Это хорошо, но в некоторых PDF-файлах выдает эту ошибку. "FPDF error: This document (testcopy.pdf) probably uses a compression technique which is not supported by the free parser shipped with FPDI."Есть ли какое-то решение для этого?
user1360768 29.08.2012 05:19:31
Вам нужно конвертировать ваш pdf в старую версию (pdf 1.4) или использовать коммерческое издание fpdi. Мы предлагаем замену синтаксического анализатора в качестве отдельного коммерческого дополнения, которое позволяет FPDI обрабатывать документы, использующие эти функции сжатия. источник
SwissFr 1.03.2018 09:10:17

Tcpdf также является хорошей библиотекой для создания PDF в PHP http://www.tcpdf.org/

2
29.05.2012 12:38:35
Для всех, кто ищет, как легко добавить верхний и нижний колонтитулы, в TCPDF есть очень простой и эффективный пример: tcpdf.org/examples/example_003
Alen Šimunic 1.07.2018 08:43:33