我正在進行一個個人專案,這是一個簡單的表格,需要填寫許多輸入。
最后一步是確認資料,一旦完成,我想生成表單答案的 PDF 并將其發送到我之前要求的電子郵件(在表單中)。
我試過Puppeteer,它會生成表單模板的PDF,但變數沒有填充。
我想做類似“當點擊回顧頁面上的確認按鈕時,然后使用頁面上的資料生成 PDF”。
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto("http://localhost:8888/Medical Form/recup_donnees.php", {
waitUntil: "networkidle2",
});
let button = await page.evaluate(() => {
document.querySelector("#test");
});
await page.waitForSelector("button");
await page.click("button");
await page.pdf({ path: "bordeeeeeeeel.pdf", format: "a4" });
await browser.close();
})();
這是我的代碼,即使我知道它絕對是錯誤的(因為它加載了一個空頁面),我無法弄清楚如何使它作業,也許我在 Puppeteer 上走錯了路,我應該采取一些措施否則可以解決問題。
抱歉這個菜鳥問題,但我實際上是菜鳥......
并提前感謝您!
uj5u.com熱心網友回復:
PDF因此,如果您希望其他用戶填寫表單,然后將他們的輸入創建在PDF. 看來您正在發布到.php檔案,因此如果您有能力使用,PHP那么對于這種情況,我不建議puppeteer使用。
我確信有一個puppeteer很棒的場景或方式,但您必須獲得資料puppeteer才能在表單上輸入和提交。
另一種選擇是表單/資料已經提交,您可以在網站上看到它,然后您將指示puppeteer用資料填寫表單欄位,然后截取頁面并另存為.pdf.
如果您喜歡使用服務器端語言PHP來處理這個問題,不妨看看這個使用.mPDFPHP
uj5u.com熱心網友回復:
感謝 Treckstar,我選擇了 MPDF,希望對我想要的東西更有效。但是,作為一個大菜鳥,我在很多事情上都受阻。
這是“我的邏輯”(這可能根本不合邏輯啊)
1. 用戶填寫 HTML 表單
2.他提交的所有資訊都收集在一個PHP檔案中,該檔案就像一個“資料確認頁面”,這里是頁面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Récapitulatif</title>
<link rel="stylesheet" href="./donnees.css" />
</head>
<body>
<div class="container">
<form action="mypdfgenerator.php" method="post">
<h1>Informations générales</h1>
<ul id="infos">
<li><span>Nom :</span> <?php echo $_POST['Nom']?></li>
<li><span>Prénom :</span> <?php echo $_POST['Prenom']?></li>
<li><span>Adresse :</span> <?php echo $_POST['Adresse']?></li>
<div class="cp-ville">
<li><span>Code Postal :</span> <?php echo $_POST['code-postal']?></li>
<li><span>Ville :</span><?php echo $_POST['Ville']?></li>
</div>
<div class="telephones">
<li><span>Téléphone domicile : </span><?php echo $_POST['Teldom']?></li>
<li><span>Téléphone bureau : </span><?php echo $_POST['Telbur']?></li>
<li><span>Portable : </span> <?php echo $_POST['Portable']?></li>
</div>
<div class="date-age-sexe">
<li><span>Date de naissance :</span> <?php echo $_POST['date-naissance']?></li>
<li><span>Age :</span> <?php
$dateNaissance = $_POST['date-naissance'];
$aujourdhui = date("Y-m-d");
$diff = date_diff(date_create($dateNaissance), date_create($aujourdhui));
echo $diff->format('%y').' ans';
?></li>
<li><span>Sexe :</span> <?php echo $_POST['Sexe']?></li>
</div>
<li><span>Email :</span> <?php echo $_POST['Email']?></li>
<li><span>Profession :</span> <?php echo $_POST['Profession']?></li>
<li><span>Adressé et/ou recommandé par :</span> <?php echo $_POST['Recommandation']?></li>
</ul>
</div>
<div class="container">
<h1>Raison de la visite</h1>
<ul>
<li><span>Raison de la visite :</span> <?php echo $_POST['Raison']?></li>
<li><span>Date approximative du dernier examen dentaire (ou soins dentaires) :</span> <?php echo $_POST['dernier-examen']?></li>
</ul>
</div>
<div class="container">
<h1>Questionnaire de santé</h1>
<ul id="sante">
<div class="reponses-QCM">
<li class="sante-li"><span>Etes-vous en bonne santé ? :</span> <?php echo $_POST['sante']?></li>
<li class="sante-li"><span>Troubles cardiaques :</span> <?php echo $_POST['cardiaque']?></li>
<li class="sante-li"><span>Troubles vasculaires/sanguins :</span> <?php echo $_POST['vasculaire']?></li>
<li class="sante-li"><span>Troubles rénaux :</span> <?php echo $_POST['renaux']?></li>
<li class="sante-li"><span>Troubles digestifs :</span> <?php echo $_POST['digestif']?></li>
<li class="sante-li"><span>Troubles hépatiques :</span> <?php echo $_POST['hepatique']?></li>
<li class="sante-li"><span>Troubles nerveux/épilepsie :</span> <?php echo $_POST['epilepsie']?></li>
<li class="sante-li"><span>Troubles pulmonaires / asthme :</span> <?php echo $_POST['asthme']?></li>
<li class="sante-li"><span>Troubles oculaires :</span> <?php echo $_POST['oculaire']?></li>
<li class="sante-li"><span>Diabète :</span> <?php echo $_POST['diabete']?></li>
<li class="sante-li"><span>Rhumatisme articulaire aigu :</span> <?php echo $_POST['rhumatisme']?></li>
<li class="sante-li"><span>Arthrose (préciser zone) :</span> <?php echo $_POST['arthrose']?></li>
<li class="sante-li"><span>Troubles cutanés :</span> <?php echo $_POST['cutanes']?></li>
<li class="sante-li"><span>Allergies :</span> <?php echo $_POST['allergies']?></li>
<li class="sante-li"><span>Troubles glandulaires/hormonaux :</span> <?php echo $_POST['glandulaire']?></li>
<li class="sante-li"><span>SIDA / HIV :</span> <?php echo $_POST['SIDA']?></li>
<li class="sante-li"><span>Hépatite :</span> <?php echo $_POST['hepatite']?></li>
<li class="sante-li"><span>Tuberculose :</span> <?php echo $_POST['tuberculose']?></li>
<li class="sante-li"><span>Cancer :</span> <?php echo $_POST['cancer']?></li>
<li class="sante-li"><span>Autre maladie(s) ? :</span> <?php echo $_POST['autres-maladies']?></li>
</div>
<div class="traitement-medical">
<li class="sante-li"><span>Suivez-vous un traitement médical en ce moment ? :</span> <?php echo $_POST['traitement-medical']?></li>
<li class="sante-li"><span>Si oui, pour quelle(s) raison(s) :</span> <?php echo $_POST['raisons-traitement']?></li>
</div>
<div class="medicaments">
<li class="sante-li"><span>Prenez-vous des médicaments ? :</span> <?php echo $_POST['prise-medicaments']?></li>
<li class="sante-li"><span>Si oui, lesquels :</span> <?php echo $_POST['quels-medicaments']?></li>
</div>
</ul>
</div>
<div class="container">
<h1>Renseignements complémentaires</h1>
<ul>
<div class="cigarettes">
<li><span>Etes-vous fumeur ? :</span> <?php echo $_POST['Fumeur']?></li>
<li><span>Si oui (cigarettes/jour) :</span> <?php echo $_POST['cigarettes-jour']?></li>
<li><span>Depuis (années) :</span> <?php echo $_POST['duree-fumeur']?></li>
</div>
<div class="radio">
<li><span>Avez-vous été traité par radiothérapie ? :</span> <?php echo $_POST['radiotherapie']?></li>
<li><span>Si oui, date et localisation :</span> <?php echo $_POST['date-radiotherapie']?></li>
</div>
<li><span>Avez-vous eu des saignements prolongés après une extraction chirurgicale ? :</span> <?php echo $_POST['saignements-chirurgicaux']?></li>
<li><span>Etes-vous sous traitement par biphosphonates ? (ex : Aclasta? , Actonel? , Fosamax? , Fosavance? , Bonviva? ,Optruma? ,...) :</span> <?php echo $_POST['biphosphonates']?></li>
<div class="infos-medecin">
<li><span>Nom du médecin traitant :</span> <?php echo $_POST['medecin']?></li>
<li><span>Adresse du médecin traitant :</span> <?php echo $_POST['adresse-medecin']?></li>
</div>
</ul>
</div>
<div class="validate">
<button type="submit" id="test"> Télécharger en PDF </button>
<button> <a href="./index.html"> Retourner au début </a></button>
</form>
</div>
</body>
</html>
4. 然后我想讓他點擊最后的提交按鈕,當它這樣做時,它會觸發 mypdfgenerator.php 頁面,它是這樣的:
<?php
require __DIR__ . '/vendor/autoload.php';
$mpdf = new \Mpdf\Mpdf();
$html ='<html>
<body>
<div>Nom '.$_POST['Nom'].'</div>
</body>
</html>';
$mpdf->WriteHTML($html);
$mpdf->Output();
我試圖只測驗第一個變數,但它沒有顯示在 PDF 中。(當我看到靜態文本時,DIV 元素顯示得很好)
我知道這看起來對你們來說根本不合邏輯或不正確,但目前,我完全堅持下去......
非常感謝你,我也很想幫助別人,當然當我有能力的時候我也會
祝你有美好的一天!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/487349.html
