如何在 ASP.net Web 应用程序中将嵌入的 PDF 保存到解决方案内的文件夹中

Posted

技术标签:

【中文标题】如何在 ASP.net Web 应用程序中将嵌入的 PDF 保存到解决方案内的文件夹中【英文标题】:How to save an embedded PDF to a folder inside solution in ASP.net web app 【发布时间】:2017-08-10 16:58:02 【问题描述】:

我正在使用引导框架在 asp.net 中编写一个 Web 应用程序以获取样式。目的是显示 pdf,然后用户填写 pdf,单击下面的按钮后,应将其保存到解决方案内的文件夹中以供进一步处理。我能够嵌入 pdf 并使其完全可编辑,但是,我一直试图将其保存回解决方案。我已经在网上研究了答案,但我认为唯一可能有用的是 File.writeAllBytes() 方法。我只是不知道如何实现它。非常感谢任何有关如何完成此操作的帮助或建议。

这是 UI 代码:

<%@ Page Language="C#" AutoEventWireup="true" masterpagefile="~/Site.Master" 
CodeBehind="RenderPDF.aspx.cs" Inherits="DocusignTest.RenderPDF" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<div class="row">
    <div class="col-lg-4">
        <div class="jumbotron">
            <label>First Name:</label>
            <input type="text" class="form-control"/>
            <label>Last Name:</label>
            <input type="text" class="form-control"/>
            <label>Email:</label>
            <input type="email" class="form-control"/>
        </div>
    </div>
    <div class="col-lg-8">
        <!-- this is the pdf the user needs to fill out -->
        <embed id="pdf" src="e-docs/PAF.pdf" style="width: 100%; height:1000px"/>
        <div class="pager">
            <asp:Button ID="eSignButton" runat="server" CssClass="btn btn-primary" Text="Sign" OnClick="eSign_Click" Enabled="false"/>
            <input type="checkbox" id="eSignCheckbox" onclick="enableButton();"/>I have filled out this document to the best of my abilities.
        </div>
    </div>
</div>

<script lang="javascript" type="text/javascript">
    var button = WebForm_GetElementById("MainContent_eSignButton")
    var checkbox = WebForm_GetElementById("eSignCheckbox")
    function enableButton() 
        if (checkbox.checked) 
            button.disabled = false;
         else 
            button.disabled = true;
        
    
</script>

下面是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

namespace DocusignTest

    public partial class RenderPDF : System.Web.UI.Page
    

    protected void Page_Load(object sender, EventArgs e)
    

    

    protected void eSign_Click(object sender, EventArgs e)
    
        savePDF();
    

    protected void savePDF()
    
        //DO something. 
        //Maybe using File.writeAllBytes() to save the embedded PDF to folder in solution.
    

【问题讨论】:

完成的PDF文件不需要上传吗? @stuartd 上传到哪里?服务器?为什么?我需要将其保存到解决方案内的文件夹中以进一步处理它,然后我可以将其保存到服务器 “我需要将它保存到解决方案内的文件夹中” - 您想将 PDF 保存在您的代码中吗?这很令人困惑。不会是网络服务器上的文件夹吗?如我所见,您已在网页中嵌入了 PDF,并且您的用户正在浏览器中对其进行编辑。当他们点击签名按钮时,填写的PDF只存在于浏览器中,所以您不必上传它进行进一步处理吗? @stuartd 实际上 pdf 已经存在于解决方案内的文件夹中。 标记从该文件夹中获取它。现在我想做的是获取填写好的pdf并将其存储在解决方案内的不同文件夹中。如果您指定解决方案文件夹的路径,则类似于 UploadFile 控制器将执行的操作。 Check this out 好吧,对不起,我想我误解了。 【参考方案1】:

存在于客户端的内容不能“自动”上传 - 出于多种原因,这会很糟糕。

嵌入将项目下载到用户计算机上的临时文件夹,然后显示它。在您的实例中,PDF 被下载到临时文件夹,用户对其进行编辑,然后它可能(因为我真的不知道 Adob​​e 如何处理可编辑的 PDF)保存回临时文件夹。它只能返回下载到的位置。

唯一可行的方法是用户将文件实际上传回网站。


编辑

您的另一个选择是:Can a PDF fillable form post itself to an HTTPS URL? 这似乎很有希望...

【讨论】:

您是否建议添加一个用户提示以在他们完成编辑后将其上传回来?也许是提交按钮? 当然。最好的方法是给他们一个下载 PDF 并填写的链接。请他们保存,然后上传并勾选标志框。根据您的要求,您可能需要检查该 PDF 是否实际填写或是否为同一个 PDF。 查看我的编辑,您可以将提交添加到 PDF,就像在这篇文章 ***.com/questions/4631008/…【参考方案2】:

任何帮助真的很棒。不过,您可能正在做某事。如何 你会建议将文件上传回服务器文件夹吗?因为 如果我可以将它发送到服务器上的临时文件夹并从那里处理 它,我没关系。我不接受最初的想法。

我为银行做了类似的申请。它允许用户在客户端浏览器中以 PDF 格式填写贷款申请,并将其保存到数据库中。然后信贷员可以查看、修改和打印 PDF。

对于这种情况,您将需要一个组件来将 PDF 保存回服务器。我当时用的是ActivePDF。

【讨论】:

以上是关于如何在 ASP.net Web 应用程序中将嵌入的 PDF 保存到解决方案内的文件夹中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 asp.net Web 应用程序中安全地嵌入 F# 编译器

如何在asp.net web api中将图像路径转换为http url?

如何在 ASP.NET Web API 实现中将数组传递给 OData 函数?

我们可以在 asp.net c# web 应用程序中嵌入对 twitter、linkedin、facebook、buzz 的授权吗?

如何在 asp.net mvc 中将文件传递给客户端而不下载 Web 服务器上的文件?

ASP.NET 4.5 在 ASP.NET Core 2.0 应用程序下的 Azure Web App 中将 502.5 作为虚拟应用程序抛出