该软件包最新版本(6.2.0)没有可用的许可证信息。

直接使用mpdf或dompdf库将HTML转换为PDF。

安装次数: 11,203

依赖项: 0

建议者: 0

安全性: 0

星星: 8

关注者: 2

分支: 4

公开问题: 2

类型:neos-package

6.2.0 2023-09-13 11:54 UTC

This package is auto-updated.

Last update: 2024-09-16 15:39:38 UTC


README

此软件包可以使您直接使用mpdf或dompdf库将渲染的HTML转换为PDF。为了方便地实现即时渲染,它使用了一个流视图助手。

您需要通过composer安装以下软件包之一,该软件包会检查库是否存在,并提示您安装它。

  • dompdf/dompdf(已弃用)
  • mpdf/mpdf

控制器使用 - 不要再使用viewHelper了,坚持使用专用视图!

该软件包的最近版本包含一个新视图。这个视图可以直接在控制器中使用,例如像这样

class FormulareController extends \Neos\Flow\Mvc\Controller\ActionController {
	/**
	 * @Flow\Inject
	 * @var \SBS\LaPo\Domain\Repository\StudentRepository
	 */
	protected $studentRepository;

	/**
	 * @var array
	 */
	protected $viewFormatToObjectNameMap = array(
		'pdf.html' => 'KayStrobach\Pdf\View\PdfTemplateView'
	);

此示例使用pdf.html格式,使其更容易使用您喜欢的IDE编辑模板文件。

在名为Some.Package的FLOW软件包中的示例用法

在FLOW布局中,您可以使用以下ViewHelper将生成的HTML包装起来,输出将被转换为PDF。

{namespace pdf=KayStrobach\Pdf\ViewHelpers}
<pdf:pdf enableHtml5Parser="1" disable="0" debug="1" dpi="120" renderer="mpdf">
	some html content
</pdf:pdf>

参数文档可以直接从viewHelper获取,请参阅Classes/KayStrobach/Pdf/ViewHelpers/PdfViewHelper.php

一个完整的示例可能如下所示:(取自project/Packages/Application/Some.Package/Resources/Private/Layouts/Pdf.html)

{namespace pdf=KayStrobach\Pdf\ViewHelpers}
<pdf:pdf enableHtml5Parser="1" disable="0" debug="1" dpi="120" renderer="mpdf">
	<!DOCTYPE html>
	<html  xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers">
		<head>
			<meta charset="utf-8">
			<title><f:render section="Title" /></title>
			<!-- Custom styles for this template -->
			<style type="text/css">
				table {
					border-collapse: collapse;
				}

				table.formblock td{
					border: 0.1mm solid black;
					vertical-align: top;
					padding: 1mm;
					width: 50%;
					height: 8mm;
				}
				table.formblock .halfcell {
					width: 25%;
				}
				table.formblockAbstand {
					margin-top: 5mm;
				}
				.label {
					font-size: 6pt;
				}
			</style>
			<f:base />
		</head>
		<body>
			<f:render section="Content" />
		</body>
	</html>
</pdf:pdf>

定义页眉和页脚

将此放入head

		<style>
			@page {
				header: html_Header;
				footer: html_Footer;
			}
		</style>

然后在body中放入类似的内容

		<htmlpageheader name="Header">
			<div style="text-align: right; border-bottom: 1px solid #000000; font-weight: bold; font-size: 10pt;">
				<f:render section="Title" optional="1" />
			</div>
		</htmlpageheader>

		<htmlpagefooter name="Footer">
			<f:if condition="{f:render(section:'footer', optional:true)}">
				<f:then>
					<f:render section="Title" optional="1" />
				</f:then>
				<f:else>
					<div style="text-align:center; border-top: 1px solid #000000;">
						<small>Seite {PAGENO} von {nbpg} - Ausdruck vom {DATE d.m.Y H:i}</small>
					</div>
				</f:else>
			</f:if>
		</htmlpagefooter>

渲染条码

<barcode code="{barcode}" type="C39" size="0.8" height="0.6" />