2011-06-22 12 views
16

Mam plik dokumentów docx skonfigurowany z formatowaniem i układem, który zapisałem jako plik PDF. Chcę użyć tego pliku pdf jako szablonu do tworzenia nowych plików pdf z danymi użytkownika.Utwórz nowy plik PDF z szablonu z PHP

Widziałem FPDF, FPDI, tcPDF, domPDF, Zend PDF, http://koivi.com/fill-pdf-form-fields/ (Justin Koivisto), kilka narzędzi Konwersja jak HTML2PDF i kilka narzędzi wiersza polecenia wymienione tutaj na stackoverflow. Z wyjątkiem FPDI, żadna z nich nie oferuje przykładowego za pomocą szablonu PDF do wyszukiwania i zamiany niestandardowych znaczników rzeczywistymi danymi (zwykle z bazy danych) lub dodawania danych bez określania grup wartości takich jak x, y, stanowisko, czcionka, formatowanie czcionek itp.

Tworzenie pliku PDF od zera wydaje się zbyt dużą ilością pracy. Nie rozważałem jeszcze korzystania z konwertera HTML2PDF, ponieważ wyniki wydają się być bardzo różne, a następnie pojawia się problem z stylizacją. Niektóre narzędzia pozwalają na CSS, ale często z ograniczeniami, takimi jak brak wsparcia pływaka.

Czy nie ma łatwego sposobu używania szablonu, jak w przypadku Excela z PHPExcel?

Moja potrzeba:

  • bezpłatny
  • obciążenia i użyć szablonu
  • wyszukiwania i zamiany znaczniki niestandardowe
  • Dodawanie danych (tekst, obraz, czcionki, formatowanie itp)
  • Niestandardowy nagłówek i stopka
  • Muszą pracować z hostem udostępnionym.
  • Umożliwia pobieranie, zapisz/zapisz na serwerze i dołącz do wiadomości e-mail (najlepiej bez wcześniejszego zapisania) końcowego wygenerowanego pliku PDF
+0

będzie świetnie, jeśli utworzysz takie narzędzie =) – k102

+0

Faceci z actualreports.com stworzyli coś takiego, ale pobierają opłaty za swoje usługi. – Tanel

Odpowiedz

6

użyj TCPDF możesz utworzyć szablon PDF używając tagów HTML zasady, które są szybkie w tworzeniu, łatwe w użyciu, łatwa integracja Wykorzystałem go do generowania szczegółowych faktur kancelarii prawnej (wiele stron o różnym formacie), koperty produkcyjnej warsztatu biżuterii (w tym zdjęcia), notatek giełdowych i faktur.

TCPD examples

1

Problem z próby użycia PDF jako "szablon" jest to, że PDF jest przygotowana format dokumentu. Na przykład. jest to ustalony układ i nie powinieneś zbytnio mieszać z układem.

Byłoby znacznie prostsze, jeśli chcesz zrobić więcej z tym, aby użyć czegoś takiego jak XSL-FO do generowania dokumentów z "szablonu" XML. Wszystko, co musisz zrobić, to wygenerować kod XML z odpowiednimi polami, a moduł renderujący XSL-FO może następnie utworzyć plik PDF.

Najlepszy (tylko?) Darmowy renderer XSL-FO to Apache FOP.

12

Naprawdę polecam MPDF:

  1. jest ona oparta na FPDF i HTML2FPDF, dzięki czemu można korzystać z niektórych ich funkcji lub dodać inne
  2. ma mnóstwo ciekawych funkcji (tworzenie każdy rodzaj kodów kreskowych, obsługa locale, znaki wodne i wiele innych)
  3. ma wyjątkowo dobrze wykonaną dokumentację
  4. ha s forum społeczności
  5. ma przykłady!
  6. Posiada łatwy krzywej uczenia

Jedyną złą rzeczą jest to, że jest trochę wagi ciężkiej, ale można usunąć rzeczy, których nie potrzebują.

+2

Wydaje się, że witryna MPDF została przeniesiona tutaj: https://mpdf.github.io/ –

4

spróbować FPDI ją wspierać edycji istniejący szablon i dokonywania zmian w tym pliku szablonu

użycie jest dość stratight naprzód:

<?php 
require_once('fpdf.php'); 
require_once('fpdi.php'); 

$pdf = new FPDI(); 

$pagecount = $pdf->setSourceFile('TestDoc.pdf'); 
$tplidx = $pdf->importPage(1, '/MediaBox'); 

$pdf->addPage(); 
$pdf->useTemplate($tplidx, 10, 10, 90); 

$pdf->Output('newpdf.pdf', 'D'); 

odnoszą się także do poniższych linków: Is there a solution for pdf template in PHP?

Writing/Drawing over a PDF template document in PHP

0

Oto przykład tworzenia wielu stron z jednym szablonem PDF i zawartością w formacie HTML. Na podstawie biblioteki MPDF.

$mpdf = new mPDF('utf-8', $format_size, 0, '', $margin_left, $margin_right, $margin_top, $margin_bottom, 0, 0, $orientation); 

if ($bg_template) { 
    // is a PDF template file 
    $mpdf->SetImportUse(); 
    $pagecount = $mpdf->SetSourceFile($bg_template); 
    $tplIdx = $mpdf->ImportPage($pagecount); 
} 

foreach ($html as $one_letter_text) { 
    $mpdf->addPage(); 

    if ($bg_template) { 
     $mpdf->useTemplate($tplIdx, 0, 0); 
    } 

    $mpdf->WriteHTML($one_letter_text); 
} 
$title = 'my-letter.pdf'; 

$pdf_path = $this->created_pdf_upload_dir.'/'.$title; 
$mpdf->Output($pdf_path, 'F'); 
1

Można pominąć cały ból definiowania szablonu nad istniejącego pliku PDF z https://github.com/applicius/dhek/releases. Tworzy obszar mapowania JSON nad stroną/współrzędnymi PDF, dzięki czemu możesz wypełnić go preferowanym interfejsem PDF.

1

Zamiast robić to za pomocą PHP, można użyć funkcji Word lub OpenOffice Mail Merge, aby utworzyć szablon i zaimportować dane do tagów. Następnie możesz "drukować", ale eksportować jako plik PDF zamiast faktycznie drukować. To może być szybsze rozwiązanie, o ile nie trzeba regularnie aktualizować szablonu. Zrobiłem to dla około 150 produktów i zajęło to mniej niż 30 minut, w tym stworzenie szablonu i przesłanie plików pdf. Po prostu myśl, że to pomoże komuś innemu!