При сохранении/отправке PDF-файла по электронной почте в WordPress он продолжает сохранять/отправлять по электронной почPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 При сохранении/отправке PDF-файла по электронной почте в WordPress он продолжает сохранять/отправлять по электронной поч

Сообщение Anonymous »

Я использовал свой код из комментария https://github.com/eKoopmans/html2pdf.js/issues/181 (odedta), а также попробовал комментарий второго пользователя под его комментарием.
У меня есть сценарий, использующий пакет html2pdf. Это хорошо работает. Он создает многостраничный PDF-файл с изображениями.
Содержимое PDF-файла — это данные, которые извлекаются из категории WordPress (с помощью запроса wp), в результате чего в PDF-файл помещается 3–6 сообщений.
Например, HTML:

Код: Выделить всё


 PDF tile 
[img]https://styles.redditmedia.com/t5_2r5i1/styles/communityIcon_x4lqmqzu1hi81.jpg?width=256&s=fc15e67e2b431bbd2e93e980be3090306b78be55[/img]

 Page 2 title
Some text

 Page 3 title
Some text

У меня есть JQuery внизу страницы

Код: Выделить всё

jQuery(function($) {
window.onload = function() {
let el = document.getElementById('PDFcontent');
var title = $('.exhibitied-title').text();
let opt = {
margin: 0.2,
filename: title + '.pdf',
image: {
type: 'jpeg',
quality: 0.99
},
html2canvas: {
scale: 2,
logging: true,
dpi: 192,
letterRendering: true,
/* useCORS: true*/
},
jsPDF: {
unit: 'mm',
format: 'a4',
orientation: 'portrait'
}
};
html2pdf().set(opt).from(el).toPdf().output('datauristring').save().then(function(pdfAsString) {
title = $('.exhibitied-title').text();
filetitle = title + '.pdf';
let data = {
'action': 'send_email_with_pdf',
'fileDataURI': pdfAsString,
'filetitle': filetitle,
}
$.post(myAjax.ajaxurl, data, function(response) {
console.log(response);
});
});
}
});
.save работает отлично, PDF-файл отформатирован именно так, как я хочу.
Но когда дело доходит до сохранения или отправки PDF-файла по электронной почте, я получаю проблемы.
Электронное письмо отправляется и создается PDF-файл. Однако PDF-файл в электронном письме имеет размер 115 байт и просто говорит: «Не удалось загрузить PDF-документ». когда вы пытаетесь открыть его, а PDF-файл, сохраненный в моей папке загрузок WP, имеет размер 0 байт, а также «Не удалось загрузить PDF-документ». показывает.
Внутри моего файла function.php у меня есть

Код: Выделить всё

function send_email_with_pdf() {
$pdfdoc     = $_POST['fileDataURI'];
$b64file        = trim( str_replace( 'data:application/pdf;base64,', '', $pdfdoc ) );
$b64file        = str_replace( ' ', '+', $b64file );
$decoded_pdf    = base64_decode( $b64file );
//file_put_contents( $attachment, $decodPdf );

$upload_dir = wp_upload_dir();
$image_data = file_get_contents( $decoded_pdf );
$filename = $_POST['filetitle'];
if ( wp_mkdir_p( $upload_dir['path'] ) ) {
$file = $upload_dir['path'] . '/' . $filename;
}
else {
$file = $upload_dir['basedir'] . '/' . $filename;
}
file_put_contents( $file, $image_data );
$mail = new PHPMailer;
$mail->setFrom( '[email protected]', 'My name' );
$mail->addAddress( '[email protected]', 'your name' );
$mail->Subject  = 'Subject';

$mail->Body     = $filename;

$mail->addStringAttachment($decoded_pdf, $filename);
$mail->isHTML( false );
if( !$mail->send() ) {
$response = 'Message was not sent.';
$response .= 'Mailer error: ' .  $mail->ErrorInfo;
}
else {
$response = 'Message has been sent.';
}

wp_send_json( $response );
}
add_action( 'wp_ajax_send_email_with_pdf', 'send_email_with_pdf' );
add_action( 'wp_ajax_nopriv_send_email_with_pdf', 'send_email_with_pdf' );
Кто-нибудь может указать мне правильное направление, или кто-нибудь сталкивался с этой проблемой раньше?
Я разместил столько информации, сколько Могу, но дайте мне знать, если вам понадобится дополнительная информация.

Подробнее здесь: https://stackoverflow.com/questions/735 ... orrupt-pdf
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»