Files
oleibman e742bf2294 Attempt To Honor Fit to 1-Page Height for Html/Pdf (#3279)
* Attempt To Honor Fit to 1-Page Height for Html/Pdf

Fix #3266. Each sheet in a spreadsheet can specify that it be set to fit width or height to a fixed number of pages. Mpdf and most browsers already handle the common case of fit to 1 page wide; I am unable to find a solution for Dompdf or Tcpdf. Code is added for the common case of fit to 1 page high when possible; this will usually work in Mpdf, Dompdf, and most browsers. I am not able to come up with a way to handle fit to more than 1 page wide or high.

* Synchronizer

Remove one unused assignment in test.
2023-01-11 12:02:21 -08:00

36 lines
1.4 KiB
PHP

<?php
namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Html as Writer;
use PHPUnit\Framework\TestCase;
class FixHeightTest extends TestCase
{
public function testFixHeight(): void
{
$spreadsheet = new Spreadsheet();
//$sheet0 = $spreadsheet->getActiveSheet();
$sheet1 = $spreadsheet->createSheet();
$sheet2 = $spreadsheet->createSheet();
$sheet3 = $spreadsheet->createSheet();
$sheet1->getPageSetup()->setFitToHeight(1);
$sheet2->getPageSetup()->setFitToHeight(2);
$sheet3->getPageSetup()->setFitToPage(true);
$writer = new Writer($spreadsheet);
$writer->writeAllSheets();
$header = $writer->generateHTMLHeader(true);
self::assertStringContainsString('table.sheet0', $header);
self::assertStringContainsString('table.sheet1', $header);
self::assertStringContainsString('table.sheet2', $header);
self::assertStringContainsString('table.sheet3', $header);
$count = substr_count($header, 'break-inside');
self::assertSame(4, $count); // 2 for sheet1, 2 for sheet3
self::assertStringContainsString('table.sheet1 { page-break-inside:avoid; break-inside:avoid }', $header);
self::assertStringContainsString('table.sheet3 { page-break-inside:avoid; break-inside:avoid }', $header);
$spreadsheet->disconnectWorkSheets();
}
}