使用 php 将 PDF 文件保存到 XML 文件

Posted

技术标签:

【中文标题】使用 php 将 PDF 文件保存到 XML 文件【英文标题】:Save PDF-file to XML-file using php 【发布时间】:2017-11-10 08:47:33 【问题描述】:

我有一个表单,您可以在其中上传图像,然后我使用 php 将其保存到服务器上的文件夹中。 我将输入到表单中的其他数据存储在 xml 文件中,也使用 php。我现在希望能够将 pdf 文件/pdf 数据存储在此 xml 文件中以供以后使用(该表单充当模板,我稍后想将整个信息存储在另一个文件中并将其显示到用户)。 我阅读了有关 Base64 编码等的信息,但我不确定这是否也适用于 PDF 文件,因为我能找到的只是如何对图像执行此操作,或者是否有更简单的方法来解决我的情况?

编辑:这是 html

<form method="post" action="profile.php" enctype="multipart/form-data">

    <input type="hidden" name="create_xml" value="true">

    <label for="name">Name: </label><br>
    <input type="text" name="name"><br>
    <label for="email">E-mail: </label><br> 
    <input type="text" name="email"><br>
    <label for="textbox">Write something: </label><br>
    <textarea name="textbox" rows="5" cols="40"></textarea><br>
    <label for="fileToUpload">Upload a PDF-file: </label>
    <input type="file" name="fileToUpload" id="file-select">
    <input type="text" name="filename" placeholder="Enter the name of your file"><br>
    <input type="submit" value="submit" name="submit">
</form>

将数据保存到xml文件的php:

if(isset($_POST['create_xml'])) 

    $xml = new DOMDocument();

    $newProfile = $xml->createElement('Profile');
    $xml->appendChild($newProfile);

    $name = $xml->createElement('Name', $name);
    $newProfile->appendChild($name);

    $email = $xml->createElement('EMail', $emailaddress);
    $newProfile->appendChild($email);

    $textbox = $xml->createElement('Text', $text);
    $newProfile->appendChild($textbox);

    $xml->formatOutput = true;
    $xml->saveXML();
    $xml->save($filename.".xml");


【问题讨论】:

只保存pdf链接(由php编码)到xml 我该怎么做呢?非常感谢您的快速回复! 显示您将表单数据添加到 xml 的代码 @AnandPandey 我刚刚在上面最初的问题中输入了它。如果您需要任何其他信息,请告诉我。 好吧,您必须将pdf上传到任何文件夹中,然后上传的链接将保存到xml。你明白吗? 【参考方案1】:

如果要在DB中插入数据时制作xml:

if($this->input->post('submit'))   
    $name = $_POST['name'];
    $email = $_POST['email'];
    $filename = $_POST['filename'];
    $year = gmdate("Y");

    if($_FILES)
        $_FILES['fileToUpload']['name'] = $files['fileToUpload']['name'];
        $_FILES['fileToUpload']['type'] = $files['fileToUpload']['type'];
        $_FILES['fileToUpload']['tmp_name'] = $files['fileToUpload']['tmp_name'];
        $_FILES['fileToUpload']['error'] = $files['fileToUpload']['error'];
        $_FILES['fileToUpload']['size'] = $files['fileToUpload']['size'];
        $ext = pathinfo($_FILES['fileToUpload']['name'], PATHINFO_EXTENSION);
        $mtime = uniqid(microtime());
        $uniqueid = substr($mtime, 2, 8);
        $pdfname = $uniqueid . '.' . $ext; // pdf file encrypt name here which need to save
        move_uploaded_file($_FILES['fileToUpload']['tmp_name'], 'uploads/' . $pdfname);
    

    //Your insert query here remember here you should add $pdfname as pdflink 


    // If successful insertion than 
    $xml = new DOMDocument();

    $newProfile = $xml->createElement('Profile');
    $xml->appendChild($newProfile);

    $name = $xml->createElement('Name', $name);
    $newProfile->appendChild($name);

    $email = $xml->createElement('EMail', $email);
    $newProfile->appendChild($email);

    $textbox = $xml->createElement('Text', $filename);
    $newProfile->appendChild($textbox);

    $pdflink = $xml->createElement('Text', $pdfname);
    $newProfile->appendChild($pdflink);

    $xml->formatOutput = true;
    $xml->saveXML();
    $xml->save($filename.".xml");
 

【讨论】:

非常感谢!我会立即尝试实现这一点 @A.S.J:我已经编辑了答案,请检查一下并告诉我。 能否解释一下这部分:$mtime = uniqid(microtime()); $uniqueid = substr($mtime, 2, 8); $pdfname = $uniqueid 。 '。' . $分机; // pdf文件加密名称这里需要保存吗? 这仅用于唯一性意味着每次提交表单时文件具有唯一名称并且您只想保存 $pdfname 哦,我明白了,谢谢!我希望这不是题外话,但我刚刚对其进行了测试,并且收到了类似于 3456253.pdf 的内容。如果我想在另一个 HTML 文件中使用它,如何将它转换回来?

以上是关于使用 php 将 PDF 文件保存到 XML 文件的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 如何在 PDF 文件中设置字段的值,然后保存?

如何将php中的文本保存为pdf文件?

通过保存对话框形式将由 php 脚本生成的文件保存到目录中

PHP:预先填写 PDF 文件的字段并将其保存为默认值

如何在php中将页面保存为pdf

使用 puppeteer 将 PDF 保存到文件