2014-05-03 27 views
7

Sử dụng Symfony2.3.4Tạo PDF với CSS và hình ảnh

tôi là tạo ra tài liệu PDF với bó này: SpraedPDFGeneratorBundle và đây là lớp php chính của nó (tôi nghĩ): PDFGenerator.php

tôi quản lý để tạo ra chúng tốt nhưng tôi không biết cách thiết lập tham số fontPath để tạo một tệp PDF được sửa đổi css với một số hình ảnh trong đó. đây:

///XController.php 
$pdfGenerator = $this->get('spraed.pdf.generator'); 
$pdf = $pdfGenerator->generatePDF($postData/* , 
'UTF-8', array(<SOME_PATH_I_GUESS>) */); 

các param đầu tiên là các dữ liệu html để được kết xuất ra PDF, điều thứ hai tôi kinda đoán nó nhưng tôi không chắc chắn và thứ ba là FontPath.

Điều hình ảnh cũng là một cái gì đó tôi sẽ đánh giá cao lời khuyên về ...

Có ai từng làm việc với bó này hoặc một số như nó; nếu có, bạn có thể giúp tôi không?

Trả lời

5

Được rồi tôi đã tìm thấy câu trả lời.

Bạn đang hỏi hai điều: cách thêm hình ảnhcách thêm phông chữ mới.

Thêm hình ảnh

Điều này khá đơn giản. Giả sử bạn đang sử dụng cành, bạn sẽ cần phải làm như sau:

<img src="{{ app.request.scheme ~'://' ~ app.request.httpHost ~ asset("img/MyImage.png") }}" /> 

Tất nhiên bạn cũng có thể thực hiện điều này một macro để bạn không lặp lại chính mình khắp nơi, như thế này.

{% macro image(uri) %} 
{{ app.request.scheme ~'://' ~ app.request.httpHost ~ asset(uri) }} 
{% endmacro %} 

Và bạn sử dụng nó như thế này

{% import '::imgurimacro.html.twig' as img %} 
... 
<img src="{{ img.image('img/MyImage.png') }}" /> 

Và nó cũng làm việc.

Thêm phông chữ

Cái này phức tạp hơn một chút. Trước tiên, hãy đảm bảo bạn có phiên bản Trình tạo PDF có phiên bản Spraed mới nhất. Trong composer.json:

"spraed/pdf-generator-bundle": "dev-master" 

Bất cứ khi nào bạn phải thêm các phông chữ sang PDF mới của bạn, làm như sau:

$pdf = $pdfGenerator->generatePDF($postData , 'UTF-8', array('C:\Windows\Fonts\Font1.ttf', 'C:\Windows\Fonts\Font2.ttf')); 

Tiếp theo, tạo một thư mục fonts (hoặc bất kỳ tên của sự lựa chọn của bạn) trong web thư mục (hoặc bất cứ nơi nào bạn đang đặt tài sản của bạn) và thêm các tập tin .ttf ở đó.

Trong file Twig của bạn, thêm dòng sau như một phong cách CSS: "Hello World!"

@font-face { 
    font-family: "MyFontFamily"; 
    src: {{ app.request.scheme ~'://' ~ app.request.httpHost ~ asset('fonts/Font1.ttf') }}; 
} 

Bây giờ bất cứ khi nào bạn viết

<p style="font-family: MyFontFamily">Hello World!</p> 

Nó nên in sử dụng phông chữ đã đăng ký trong pdf.

Các vấn đề liên quan