PHP / HTML & mdash; редактировать PDF возможно (например, в tinyMCE)? [dубликат]

Проблема здесь, как @Florian perceptively выдумал, заключается в том, что оболочка расширяет символы glob в вашей строке поиска до подходящего имени файла перед передачей строки на grep.

Запуск ps aux | grep foo проблематичен, так как команда grep foo сама будет соответствовать foo и поэтому появится на выходе. Для этого существуют два распространенных, хотя и запутанных, обходных решения. Вы либо добавляете grep -v grep в конец трубы, либо используете grep [f]oo. Поскольку grep работает с регулярными выражениями, он будет рассматривать [f] как «любой символ в списке символов внутри скобок». Поскольку единственный символ в скобках - f, [f]oo эквивалентен foo. Однако процесс grep, отображаемый в результатах ps, будет иметь строку [f]oo и, следовательно, не найден grep.

Это становится более сложным, если, как вам кажется, у вас есть файл с именем foo в вашем текущем каталоге. Поскольку вы не указали выражение, которое вы дали grep (поскольку вы использовали [s]elenium, а не '[s]elenium' или "[s]elenium"), оболочка будет рассматривать его как , вычисленный и развернуть это соответствие имени файла. Это делает трюк [s]elenium бесполезным, поскольку то, что фактически передано в grep, это selenium, а не [s]elenium, поэтому grep будет соответствовать самому себе.

Все это, однако, происходит только потому, что вы не используете нужный инструмент для задания. Как это часто бывает, есть приложение для этого! Не используйте grep + ps. Вместо этого используйте pgrep, который предназначен для того, чтобы делать именно то, что вы хотите:

NAME
       pgrep,  pkill  -  look  up  or signal processes based on name and other
       attributes

SYNOPSIS
       pgrep [options] pattern
       pkill [options] pattern

DESCRIPTION
       pgrep looks through the  currently  running  processes  and  lists  the
       process IDs which match the selection criteria to stdout.  All the cri‐
       teria have to match.  For example,

         $ pgrep -u root sshd

Итак, в вашем случае вы можете просто сделать

pgrep selenium

Или, поскольку вы 'запустив его через java, используйте -f, который просматривает всю командную строку:

pgrep -f selenium

69
задан 11 August 2008 в 02:58

9 ответов

[F1]
0
ответ дан 15 August 2018 в 15:50

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

2
ответ дан 15 August 2018 в 15:50
  • 1
    Для всех, кто хочет легко добавить верхний и нижний колонтитулы, TCPDF имеет очень простой и эффективный пример: tcpdf.org/examples/example_003 – Alen Šimunic 1 July 2018 в 11:43

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

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

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

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

0
ответ дан 15 August 2018 в 15:50

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

2
ответ дан 15 August 2018 в 15:50

Для создания 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');
35
ответ дан 15 August 2018 в 15:50
  • 1
    Отличная библиотека - именно то, что я был после, спасибо за рекомендацию – james-geldart 26 January 2012 в 21:53
  • 2
    Это хорошо, но в некоторых pdf это дает эту ошибку "FPDF error: This document (testcopy.pdf) probably uses a compression technique which is not supported by the free parser shipped with FPDI." Любое решение для этого? – user 29 August 2012 в 10:19
  • 3
    Вам необходимо преобразовать ваш pdf-файл в более раннюю версию (pdf 1.4) или использовать коммерческую версию fpdi. Мы предлагаем замену парсера как отдельный коммерческий аддон, который позволяет FPDI обрабатывать документы, которые используют эти функции сжатия. source – SwissFr 1 March 2018 в 13:10

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

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

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

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

3
ответ дан 15 August 2018 в 15:50

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

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

17
ответ дан 15 August 2018 в 15:50
  • 1
    -1 Потому что он не отвечает на вопрос. Плакат хочет редактировать существующие PDF-файлы, не создавая их с нуля. – Reimund 26 January 2012 в 17:24
  • 2
    Я пришел на эту страницу, потому что я искал редактирование PDF, но этот ответ кажется мне более полезным, потому что я могу понять, почему проще создавать с нуля в html, а не редактировать существующий PDF. – Justin Vincent 30 March 2012 в 02:44

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

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

Удачи.

1
ответ дан 15 August 2018 в 15:50

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

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

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

3
ответ дан 15 August 2018 в 15:50

Другие вопросы по тегам:

Похожие вопросы: