这是我的第一篇文章。感谢您在其他帖子上的所有回答,从哪里,我已经拿起代码并试图到达这里。
我正在使用 JSPDF 通过 AJAX 调用将附件发送到 PHP 服务器 - 从这里发送一封邮件,其中包含生成的 PDF 作为附件。我看过很多帖子,他们说其他语言如丹麦语(在本例中)需要自定义字体。
但我的问题是 -> 当我使用 doc.save 保存文件时,它完全没问题。但是当我通过 AJAX 调用将数据发送到 PHP 时,附件中有特定丹麦字母的乱序字符。
HTML 正文也显示字母,但不显示 PDF 附件。
与编码有关吗?只有附加的 PDF 不显示字母(前端保存的 PDF 确实显示字母)。
我的 HTML 代码:
<!--?xml version="1.0" encoding="iso-8859-1"?-->
<!DOCTYPE html>
<html>
<head>
</head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js"></script>
<script>
function sendmail() {
var doc = new jsPDF('p', 'pt', 'a4');
var con1 = document.getElementById("dispID1");
doc.fromHTML(con1, 10, 10);
doc.save("file.pdf"); // This is to test from frontend if the PDF is saving
var pdf = doc.output();
var data = new FormData();
data.append("data", pdf);
var mailid = document.getElementById('mailadd').value;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var mailresp = this.responseText;
// alert(mailresp);
}
}
xmlhttp.open("POST", "/sendmailattach.php?q=" + mailid, true);
xmlhttp.send(data);
}
</script>
<body>
<div id="dispID1">
These are the danish characters å æ ø that needs be sent as PDF attachment
</div>
<div id="dispID2">
<input type="text" style="width:auto;" id="mailadd" size="32" name="mailadd" maxlength="32" value="Indtast email-adresse">
<br>
<input type="submit" style=" width: auto;background-color: #eb5f1f;padding: 5px 5px;border: none;border-radius: 1px;cursor: pointer;text-transform: none;" value="Send" onclick="sendmail()">
</div>
</body>
</html>
来自服务器的我的 PHP 代码
<?php
require __DIR__ . '/wp-load.php';
if(!empty($_POST['data'])){
$filepath = __DIR__ . DIRECTORY_SEPARATOR;
$filename = __DIR__ . DIRECTORY_SEPARATOR."test.pdf";
$data = $_POST['data'];
$fname = "test.pdf";
$in = fopen($filename , "a+");
$attachment = array($filename);
fwrite($in, $data.PHP_EOL);
fclose($in);
} else {
$hint= "No Data Sent";
}
// get the q parameter from URL
$q = $_REQUEST["q"];
$to = $q;
$subject = 'This email has attachment';
$body = "<html>
<body>
<p> These are the danish characters “å æ ø ” that needs be sent as PDF attachment-but appearing in email</p>
</body>
</html>";
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail( $to, $subject, $body, $headers, $attachment );
unlink($filename); // Deletion of the created file.
echo $hint;
?>
:
前端保存的PDF文件有清晰的丹麦字母:
邮件正文: 这些是需要作为 PDF 附件发送但出现在电子邮件中的丹麦字符“å æ ø”
请求您是否可以帮忙解决这个问题。