Dompdf не отображает содержимое внутри тегов php - PullRequest
0 голосов
/ 14 февраля 2019

Dompdf отображает мою HTML-страницу, но без сохранения стиля, а также не отображает ничего, что находится внутри тега php.

Я пытаюсь отобразить текущую страницу:

enter image description here

Но при использовании dompdf я получаю следующий результат:

enter image description here

Полный предварительный просмотр формата A4, как вы видите на первом изображении, создается внутри тега php:

try {
    require "config.php";
    require "common.php";
    $id = $_GET['cvid'];
    $connection = new PDO($dsn, $username, $password, $options);
    $sql = "SELECT * FROM cvs WHERE id = :cvid";
    $statement = $connection->prepare($sql);
    $statement->bindParam(':cvid', $id, PDO::PARAM_STR);
    $statement->execute();
    $result = $statement->fetchAll();
}
catch(PDOException $error) {
echo $sql . "<br>" . $error->getMessage();
}
?>

<?php include "header.php"; ?>

<p class="hidden" id="hiddencvid"><?php echo $id ?></p>



<button id="updatecv" name="updatecv" class="cvupdater">Opdater CV</button>
<form action="createpdf.php">
<button id="makepdf" name="makepdf" class="cvupdater">Lav PDF</button>
</form>
<p class="cvupdater" style="width:500px;">Tryk på tekst for at redigere. Tryk på "Opdater CV" for at gemme ændringer.</p>

<a href="index.php">Hjem</a>

<div class="cvpreview">

<?php foreach($result as $row) { ?>


<div class="cvheader">
  <div id="img-wrapper">
    <img src="uploads/<?php echo escape($row["cvid"]) . ".png" ?>" alt="profile_picture">
  </div>
  <h1><?php echo escape($row["fullname"])?></h1>
  <div contenteditable class="cvheader-worktitle" id="worktitle"><?php $decodedworktitle = html_entity_decode($row["worktitle"]); echo $decodedworktitle?></div>
</div>

<hr>

<div class="cvbody">
    <div class="leftcolumn">
      <div class="profil columnboxleft">
        <h5>Profil</h5>
        <div contenteditable class="cvtext" id="profiledesc"><?php $decodedprofiledesc = html_entity_decode($row["profiledesc"]); echo $decodedprofiledesc?></div>
      </div>   
      <div class="workexperience columnboxleft">
        <h5>Arbejdserfaring</h5>  
        <div contenteditable class="cvtext" id="workexperience"><?php $decodedworkexperience = html_entity_decode($row["workexperience"]); echo $decodedworkexperience?></div>  
      </div>
      <div class="education columnboxleft">
        <h5>Uddannelse</h5>
        <div contenteditable class="cvtext" id="education"><?php $decodededucation = html_entity_decode($row["education"]); echo $decodededucation?></div>  
      </div>
    </div>

    <div class="rightcolumn">
      <div class="details columnboxright">
        <h5>Detaljer</h5>
        <div contenteditable class="cvtext" id="phonenumber"><?php $decodedphonenumber = html_entity_decode($row["phonenumber"]); echo $decodedphonenumber?></div>
        <div contenteditable class="cvtext" id="email"><?php $decodedemail = html_entity_decode($row["email"]); echo $decodedemail?></div>
        <div contenteditable class="cvtext" id="birthdate"><?php $decodedbirthdate = html_entity_decode($row["birthdate"]); echo $decodedbirthdate?></div>
      </div>
      <div class="skills columnboxright">
        <h5>Evner</h5>
        <div contenteditable class="cvtext" id="skills"><?php $decodedskills = html_entity_decode($row["skills"]); echo $decodedskills?></div>
      </div>
      <div class="languages columnboxright">
        <h5>Sprog</h5>
        <div contenteditable class="cvtext" id="languages"><?php $decodedlanguages = html_entity_decode($row["languages"]); echo $decodedlanguages?></div>
      </div>
    </div>
</div>

<?php } ?>
</div>

<?php include "footer.php"; ?>

И у меня есть еще один файл php для созданияpdf (createpdf.php):

require '../vendor/autoload.php';

ob_start();
include "cvmaker.php";
$html = ob_get_clean();
ob_end_clean();

use Dompdf\Dompdf;
define('DOMPDF_ENABLE_PHP', true);

$options = new \Dompdf\Options();
$options->setIsPhpEnabled(true);
$dompdf = new Dompdf($options);
$dompdf->loadHtml($html);
$dompdf->setPaper('a4', 'portrait');
$dompdf->render();
$dompdf->stream('hello.pdf');

?>

Я пробовал вмешиваться в различные варианты dompdf, но я продолжаю возвращаться с тем же результатом.Как я могу получить его для рендеринга моего встроенного PHP?

1 Ответ

0 голосов
/ 17 февраля 2019

Ваш PHP и HTML выглядят хорошо на поверхности.Похоже, вам не хватает вашего контента, потому что кнопка для создания PDF не проходит переменную $id.Вы должны, по крайней мере, изменить форму следующим образом:

<form action="createpdf.php?id=<?=$id?>">
  <button id="makepdf" name="makepdf" class="cvupdater">Lav PDF</button>
</form>

Кроме того, вы на самом деле ничего не делаете с вашей формой (то есть не передаете поля формы), чтобы вы могли простоа сделайте это ссылкой.Немного проще это сделать при использовании UI-фреймворка, такого как Bootstrap, поскольку вы можете стилизовать ссылки так, чтобы они выглядели как кнопки.

Что касается CSS, то это действительно зависит от того, как вы ссылаетесь на внешний файл (если онвнешний).Это поможет увидеть HTML-код, который вы передаете в Dompdf для устранения этой части проблемы.

...