Javascript 将生成的PDF保存在FTP服务器上

Javascript 将生成的PDF保存在FTP服务器上,javascript,php,jquery,ajax,html2pdf,Javascript,Php,Jquery,Ajax,Html2pdf,我通过Html2Pdf生成了一个PDF,但我不知道如何将该文件保存在FTP服务器上,而不是本地 我已经用JSPDF尝试过了,但是这个库的问题是我无法保存css元素。因此,我试图使它与html2pdf一起工作 $(“#打印机”)。在(“单击”上,函数(e){ var元素=document.getElementById('qrcode'); var worker=html2pdf().from(element).save(); var saver=html2pdf().from(element).o

我通过Html2Pdf生成了一个PDF,但我不知道如何将该文件保存在FTP服务器上,而不是本地

我已经用JSPDF尝试过了,但是这个库的问题是我无法保存css元素。因此,我试图使它与html2pdf一起工作

$(“#打印机”)。在(“单击”上,函数(e){
var元素=document.getElementById('qrcode');
var worker=html2pdf().from(element).save();
var saver=html2pdf().from(element).output();
var data=new FormData();
data.append(“数据”,saver);
var xhr=new XMLHttpRequest();
open('post','upload.php',true);//发布到php脚本以保存到服务器
发送(数据);
});
我知道可以将这些数据传递到“upload.php”文件,但我不知道如何实现


我非常感谢您的帮助。

这是为html2pdfrocket.com提供的

你可以试试下面的方法

将以下内容分配给$value,然后使用

<!DOCTYPE html>
<html>
<head>
        <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
      <title>Title</title>
      <style type='text/css'>
        body{
            width: 96%;
            margin:1% 2%;
            line-height: 2em;
            letter-spacing: 0.26mm !important;
            padding:0;
            font-family:helvetica,sans serif;
            word-wrap: break-word;
        }
         SOME CSS CODE
    </style>
</head>
<body>
SOME HTML CODE

这是给HTML2PDFROTE.com的

你可以试试下面的方法

将以下内容分配给$value,然后使用

<!DOCTYPE html>
<html>
<head>
        <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
      <title>Title</title>
      <style type='text/css'>
        body{
            width: 96%;
            margin:1% 2%;
            line-height: 2em;
            letter-spacing: 0.26mm !important;
            padding:0;
            font-family:helvetica,sans serif;
            word-wrap: break-word;
        }
         SOME CSS CODE
    </style>
</head>
<body>
SOME HTML CODE

这取决于远程FTP服务器,所以可能需要一点尝试&错误才能使连接正常工作

您的JS代码: 我还没有用Html2Pdf测试过它,但现在我假设这个保护程序包含完整生成的pdf bibary

JS将把文件内容发送到服务器上的
upload.php
文件

你的upload.php 请参阅内联注释,希望您能够清楚地了解发生了什么,总体而言,您应该遵循以下步骤:

  • 从Ajax请求中获取发布的数据
  • 将内容写入临时文件(=pdf文件)
  • 连接到ftp服务器
  • 上传那个文件
如果您的ftp服务器需要ssl,请查看
ftp\u ssl\u connect

如果在连接/登录时出现错误,php应该会发出警告,因此可能需要检查错误日志,这取决于远程FTP服务器,因此可能需要尝试一点错误以使连接正常工作

您的JS代码: 我还没有用Html2Pdf测试过它,但现在我假设这个保护程序包含完整生成的pdf bibary

JS将把文件内容发送到服务器上的
upload.php
文件

你的upload.php 请参阅内联注释,希望您能够清楚地了解发生了什么,总体而言,您应该遵循以下步骤:

  • 从Ajax请求中获取发布的数据
  • 将内容写入临时文件(=pdf文件)
  • 连接到ftp服务器
  • 上传那个文件
如果您的ftp服务器需要ssl,请查看
ftp\u ssl\u connect

如果连接/登录时出现错误,php应该会发出警告,因此可能需要检查错误日志

1)您是否能够在当前为该网页提供服务的服务器上运行php代码(包含上述代码)?@Evil_skunk yes i am1)您是否能够在当前为该网页提供服务的服务器上运行php代码(包含上述代码)@Evil\u skunk是的,我明天会试试。谢谢你的回答,尽管我真的很感激。我明天会试试。谢谢你的回答,尽管我真的很感激
var data = new FormData();
data.append("data" , saver);

var xhr = new XMLHttpRequest();
    xhr.open( 'post', 'upload.php', true ); //Post to php Script to save to server
    xhr.send(data);

});
if(isset($_POST['data'])){

    //$_POST['data'] will contain everything sent by ajax
    $pdfContent = $_POST['data'];

    //tmpFile to store the pdf - will be removed automatically
    $tmpFile = tmpfile();
    fwrite($tmpFile, $pdfContent);

    //connect and login to a ftp server
    $ftp_server = "ftp.xx.com";
    $ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");

    //probably login with user/pw
    $login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);


    //upload tmp-file - choose filename on server
    if (ftp_put($ftp_conn, "fileNameOnServer.pdf", $tmpFile, FTP_ASCII)){
      echo "Successfully uploaded file";
    }
    else {
      echo "Error uploading file";
    }

    //close connection
    ftp_close($ftp_conn);
}
?>