我曾经提交 PDF 内表单时, 使用的是 XDP 提交
收到的内容如:
<?xml version="1.0" encoding="UTF-8"?>
<?xfa generator="XFA2_0" APIVersion="2.2.4333.0"?>
<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/">
<xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"
><xfa:data
><unform
><mkNull
>Marksoft.NET</mkNull
></unform
></xfa:data
></xfa:datasets
>
<pdf href="http://localhost/Work/VOA/Form/_632579695031521104_FF__107.pdf" xmlns="http://ns.adobe.com/xdp/pdf/"
/>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve"
><annots
/></xfdf
></xdp:xdp>然后在显示该PDF时,对其关键字转换
以下是源文件代码, 书下得不怎么规范,见谅.WritePDF.aspx<%@ Page language="c#" Codebehind="WritePDF.aspx.cs" AutoEventWireup="false" Inherits="VOA.Form.WritePDF" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title runat="server" id="pageTitle">WritePDF</title>
<style>
BODY { MARGIN: 0px }
</style>
</HEAD>
<body leftmargin="0" topmargin="0" scroll="no">
<form id="frmWritePdf" method="post" runat="server">
<div style=" ; LEFT:expression((document.body.clientWidth-this.clientWidth)/2); POSITION:absolute; TOP:22px"><input type="button" value="Close" id="btnClose" name="btnClose" runat="server"></div>
<asp:Label ID="lblPdfHtml" Runat="server"></asp:Label>
</form>
</body>
</HTML>

解决方案 »

  1.   


    "回复内容过长!"WritePDF.aspx.cs 文件
    [code=C#]using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace VOA.Form
    {
    /// <summary>
    /// WritePDF 的摘要说明。
    /// </summary>
    public class WritePDF : System.Web.UI.Page
    {
    //|||||||||||||||||||||||
    private Check vb = new Check();
    private clsDataBase clsDataBase = new clsDataBase();
    private clsXdpData clsXdpData = new clsXdpData();
    protected DataTable dt = new DataTable();
    protected const string DBName="Transaction", DBPK = "TransactionID";
    protected string errMsg="";
    //|||||||||||||||||||||||
    protected System.Web.UI.WebControls.Label lblPdfHtml;
    protected System.Web.UI.HtmlControls.HtmlContainerControl pageTitle;string strTask = null;
    string strEvent = null;
    string strType = null;
    string strObjectHtml = "";
    bool blnBreak = false;
    const string cst_Event__Save = "WebSave";
    const string cst_Type_Http = "Http";string adm_DocumentID;
    string TransID, TaskID, ItemID, DocID;
    protected System.Web.UI.HtmlControls.HtmlInputButton btnClose;private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面TransID = clsDataBase.Check.FixNull(Session["Flow_WritePDF_TransID"], "0");
    TaskID = clsDataBase.Check.FixNull(Session["Flow_WritePDF_TaskID"], "0");
    ItemID = clsDataBase.Check.FixNull(Session["Flow_WritePDF_ItemID"], "0");
    DocID = clsDataBase.Check.FixNull(Session["Flow_WritePDF_DocID"], "0");
    adm_DocumentID = clsDataBase.Check.FixNull(Session["ADMIN_BuildXDP_DOCUMENTID"], "0");if (!IsPostBack)
    {try
    {
    //|取得任务事件 保存/显示
    strEvent = Request.QueryString["mkEvent"];//=WebSave
    }
    catch{}
    try
    {
    //|取得 保存方式 XML/XDP/HTTP/PDF
    strType = Request.QueryString["mkType"];
    }
    catch{}if (strEvent != null && strEvent.ToUpper() == cst_Event__Save.ToUpper())
    {
    //|保存提交
    this.mkEvent_Save(ref blnBreak);
    }
    else
    {
    //|显示PDF文件
    this.mkEvent_ShowPDF(DocID);
    }if (blnBreak)
    {
    //|是否请求中断
    Response.End();
    }}
    }private void WritePDF_PreRender(object sender, EventArgs e)
    {}
    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }/// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.btnClose.ServerClick += new System.EventHandler(this.btnClose_ServerClick);
    this.Load += new System.EventHandler(this.Page_Load);
    this.PreRender += new System.EventHandler(this.WritePDF_PreRender);}
    #endregion
      

  2.   


    private void mkEvent_ShowPDF(string DocumentID)
    {
    string XML_Src=null;
    string pub_PublicData=null;if (adm_DocumentID != "0" && long.Parse(adm_DocumentID) > 0)
    {
    //|Build XDP by Backend
    DocumentID = adm_DocumentID;
    }
    else
    {
    XML_Src = clsDataBase.getDBValue("SELECT * FROM [ItemUSE] WHERE ([TransactionID]='"+ TransID +"') AND ([TaskID]='"+ TaskID +"') AND ([ItemID]='"+ ItemID +"') ", "ItemData", "");
    string mks_TransNo = clsDataBase.getDBValue("SELECT * FROM [Transaction] WHERE ([TransactionID]='"+ long.Parse("0" + TransID).ToString() +"')", "TransactionNo", "N/A");
    string mks_TaskName = clsDataBase.getDBValue("SELECT * FROM [Task] WHERE ([TaskID]='"+ long.Parse("0" + TaskID).ToString() +"')", "TaskName", "N/A");
    string mks_ItemName = clsDataBase.getDBValue("SELECT * FROM [Item] WHERE ([ItemID]='"+ long.Parse("0" + ItemID).ToString() +"')", "ItemName", "N/A");pageTitle.InnerText = "Current Trans.:["+ mks_TransNo +"] / Task:["+ mks_TaskName +"] / Item:["+ mks_ItemName +"]";
    }try
    {
    DocumentID = long.Parse("0" + DocumentID).ToString();
    }
    catch
    {
    pageTitle.InnerText = "[mk.DocID] Please choose form document...";
    lblPdfHtml.Text = "<li><font color='#ff0000' face='Arial' size=1>[mk.DocID] Please choose form document...</font></li>";
    return ;
    }
    if (DocumentID != "0")
    {
    strTask = clsDataBase.getDBValue("SELECT * FROM [Document] WHERE ([DocumentID]="+ long.Parse("0" + DocumentID).ToString() +")", "FilePath", "");
    pub_PublicData = clsDataBase.getDBValue("SELECT * FROM [Document] WHERE ([DocumentID]="+ long.Parse("0" + DocumentID).ToString() +")", "EqualFields", "");
    }
    else
    {
    try
    {
    strTask = Request.QueryString["pdfURL"];
    }
    catch{}
    }if (strTask == null || strTask.Trim().Length < 1)
    {
    pageTitle.InnerText = "[ERROR: The PDF From Document is not found]";
    lblPdfHtml.Text = "<li><font color='#ff0000' face='Arial' size=1>Please choose document for transaction item...</font></li>";
    return ;
    }string strPagePath = "";
    strPagePath = Request.Url.ToString();
    strPagePath = strPagePath.Substring(0, strPagePath.LastIndexOf("/")+1);
    string PDF_Src = Server.MapPath(strTask);
    string syn_timer = "";
    string syn_check = clsDataBase.Check.GetAppSet("synchro_precision", false.ToString());
    if (clsDataBase.Check.cBool(syn_check))
    {
    syn_timer = DateTime.Now.Ticks.ToString();
    }
    string PDF_URL = clsDataBase.Check.GetRootPath(this.Page) + "SessionTemp/"+ this.Session.SessionID +"_tmp"+ syn_timer +"_"+ TransID + "_" + TaskID + "_" + ItemID + "_" + DocumentID +".xdp";
    //PDF_URL = this.Session.SessionID +"__tmp"+ syn_timer +"_"+ TransID + "_" + TaskID + "_" + ItemID + "_" + DocumentID +".fDF";
    string PDF_Out = Server.MapPath(PDF_URL);
    string LastPdfFile = clsDataBase.Check.FixNull(Session["LastPdfFile"], null);
    if (LastPdfFile != null && System.IO.File.Exists(LastPdfFile))
    {
    System.IO.File.Delete(LastPdfFile);
    }
    Session["LastPdfFile"] = PDF_Out;bool blnOK;
    bool blnLock = false;
    //blnLock = clsDataBase.Check.cBool(Application["FillPDFForm_Locked"]);
    if (!blnLock) 
    {using (clsFillPDF.FillFormCS mkpdf = new clsFillPDF.FillFormCS(this.Page))
    {
    clsFillPDF.FillFormCS.UseNew_PDFURL emUseNew = clsFillPDF.FillFormCS.UseNew_PDFURL.Auto;
    string cfg_UseNew = clsDataBase.Check.GetAppSet("XDP_UseNew_PDFURL_Enum", emUseNew.ToString());
    try
    {
    emUseNew = (clsFillPDF.FillFormCS.UseNew_PDFURL) Enum.Parse(typeof(clsFillPDF.FillFormCS.UseNew_PDFURL), cfg_UseNew, false);
    }
    catch
    {
    errMsg += "<!--// [mk.UseNew] Web.config is invalid. //-->";
    }try
    {
    string xdp_Public = clsXdpData.getXDP_AllPublicDate(TransID, TaskID, ItemID, DocID);
    if (XML_Src == null)
    {
    //|第一次加载 或 后台 [Build XDP] ...
    //|PDF Document 加载默认设置XML_Src = pub_PublicData;
    }//|XDP 格式检测
    System.Xml.XmlDocument xmlDOC;
    try
    {
    xmlDOC = mkpdf.Str_XMLDoc(XML_Src);
    if (!mkpdf.CheckXDP(xmlDOC, true))
    {
    //|对XDP格式检测未通过, 则启用最简(安全)设置pageTitle.InnerText += " {NEW} ";
    XML_Src = mkpdf.GetNewCreateXDP(strTask, xdp_Public, true);
    }
    }
    catch
    {
    //|原记录或默认设置无效, 则启用最简(安全)设置errMsg += "{MK:UCS.UTF-16}";
    XML_Src = mkpdf.GetNewCreateXDP(strTask, xdp_Public, true);
    }if (adm_DocumentID == "0" || long.Parse(adm_DocumentID) < 1)
    {
    //|非 后台 [Build XDP] 任务, 则执行["关键字"]转换操作
    //|对 公共字段["关键字"]转换...XML_Src = clsXdpData.ConvertData(XML_Src, TransID, TaskID, ItemID, DocID);
    }
    blnOK = mkpdf.XDP_Fill(strTask, XML_Src, xdp_Public, PDF_URL, emUseNew);
    strObjectHtml += mkpdf.szMsg;
    }
    catch(Exception errFill)
    {
    blnOK = false;
    strObjectHtml += "<font color='#ff0000' face='Arial' size=1><li>[mk] "+ errFill.Message +"</li></font>";strObjectHtml += mkpdf.szMsg + "\n" + errMsg;
    }
    }
    if (blnOK)
    {
    strObjectHtml += "<object classid=\"clsid:CA8A9780-280D-11CF-A24D-444553540000\" CODEBASE=\""+ strPagePath +"AX_PDFRD.CAB#version=0,0,0,0\" width=\"100%\" height=\"100%\" border=\"0\">";
    strObjectHtml += "<param NAME=\"_Version\" VALUE=\"65539\">";
    strObjectHtml += "<param NAME=\"_ExtentX\" VALUE=\"20108\">";
    strObjectHtml += "<param NAME=\"_ExtentY\" VALUE=\"10866\">";
    strObjectHtml += "<PARAM NAME=\"_cx\" VALUE=\"26035\">";
    strObjectHtml += "<PARAM NAME=\"_cy\" VALUE=\"15663\">";
    strObjectHtml += "<param NAME=\"_StockProps\" VALUE=\"0\">";
    //|strObjectHtml += "<param NAME=\"HREF\" VALUE=\""+ strTask + "\">";
    strObjectHtml += "<param NAME=\"SRC\" VALUE=\""+ (PDF_URL) +"\">";
    strObjectHtml += "</object>";
    }
    else
    {
    strObjectHtml += "<li><font color='#ff4040' face='Arial' size=1>The server is busy!</font></li>";
    }//|解锁Fill PDF Enable
    //-Application["FillPDFForm_Locked"] = false;
    }
    else
    {
    strObjectHtml += "<li><font color='#ff0000' face='Arial' size=1>The server is busy and locked!</font></li>";
    }
    lblPdfHtml.Text = strObjectHtml;//Response.Clear();
    //strObjectHtml = "<html><body leftmargin=0 topmargin=0 scroll=no>";
    //lblPdfHtml.Text = "<embed width=100% height=100% fullscreen=yes src=\""+ strTask +"\" />";
    //strObjectHtml += "</body></html>";
    //Response.Write(strObjectHtml);
    //blnBreak = true;
    }