老板让做web在线浏览,但是如果想浏览的话需要swf文件,这就涉及到要把word,pdf,转成swf格式的文件,但是部署环境的时候要放到域里面,不可以安装flashpaper.exe这个工具,该怎么办??急等!!!大哥大姐们多多帮忙啊!

解决方案 »

  1.   

    using System;
    using System.IO;
    using System.Text;
    using System.Collections;
    using System.Data;namespace cofcms.Common
    {
        /// <summary>
        /// 导出PDF
        /// </summary>
        public class PDFGenerator
        {
            static float pageWidth = 594.0f;
            static float pageDepth = 828.0f;
            static float pageMargin = 30.0f;
            static float fontSize = 20.0f;
            static float leadSize = 10.0f;
            static StreamWriter pPDF = new StreamWriter("E:\\myPDF.pdf");
            static MemoryStream mPDF = new MemoryStream();
            private void ConvertToByteAndAddtoStream(string strMsg)
            {
                Byte[] buffer = null;
                buffer = ASCIIEncoding.ASCII.GetBytes(strMsg);
                mPDF.Write(buffer, 0, buffer.Length);
                buffer = null;
            }        private string xRefFormatting(long xValue)
            {
                string strMsg = xValue.ToString();
                int iLen = strMsg.Length;
                if (iLen < 10)
                {
                    StringBuilder s = new StringBuilder();
                    int i = 10 - iLen;
                    s.Append('0', i);
                    strMsg = s.ToString() + strMsg;
                }
                return strMsg;
            }        public void ExportPdf(DataTable dt)
            {
                ArrayList xRefs = new ArrayList();
                //Byte[] buffer=null; 
                float yPos = 0f;
                long streamStart = 0;
                long streamEnd = 0;
                long streamLen = 0;
                string strPDFMessage = null;
                //PDF文档头信息 
                strPDFMessage = "%PDF-1.1\n";
                ConvertToByteAndAddtoStream(strPDFMessage);
                xRefs.Add(mPDF.Length);
                strPDFMessage = "1 0 obj\n";
                ConvertToByteAndAddtoStream(strPDFMessage);
                strPDFMessage = " < < /Length 2 0 R >>\n";
                ConvertToByteAndAddtoStream(strPDFMessage);
                strPDFMessage = "stream\n";
                ConvertToByteAndAddtoStream(strPDFMessage);
                ////////PDF文档描述 
                streamStart = mPDF.Length;
                //字体 
                strPDFMessage = "BT\n/F0 " + fontSize + " Tf\n";
                ConvertToByteAndAddtoStream(strPDFMessage);
                //PDF文档实体高度 
                yPos = pageDepth - pageMargin;
                strPDFMessage = pageMargin + " " + yPos + " Td\n";
                ConvertToByteAndAddtoStream(strPDFMessage);
                strPDFMessage = leadSize + " TL\n";
                ConvertToByteAndAddtoStream(strPDFMessage);            //实体内容 
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        strPDFMessage = "(" + dt.Rows[i][j].ToString() + ")Tj\n" + "\n";
                        ConvertToByteAndAddtoStream(strPDFMessage);
                    }
                }
                strPDFMessage = "ET\n";
                ConvertToByteAndAddtoStream(strPDFMessage);
                streamEnd = mPDF.Length;            streamLen = streamEnd - streamStart;
                strPDFMessage = "endstream\nendobj\n";
                ConvertToByteAndAddtoStream(strPDFMessage);
                //PDF文档的版本信息 
                xRefs.Add(mPDF.Length);
                strPDFMessage = "2 0 obj\n" + streamLen + "\nendobj\n";
                ConvertToByteAndAddtoStream(strPDFMessage);            xRefs.Add(mPDF.Length);
                strPDFMessage = "3 0 obj\n < </Type/Page/Parent 4 0 R/Contents 1 0 R>>\nendobj\n";
                ConvertToByteAndAddtoStream(strPDFMessage);            xRefs.Add(mPDF.Length);
                strPDFMessage = "4 0 obj\n < </Type /Pages /Count 1\n";
                ConvertToByteAndAddtoStream(strPDFMessage);
                strPDFMessage = "/Kids[\n3 0 R\n]\n";
                ConvertToByteAndAddtoStream(strPDFMessage);
                strPDFMessage = "/Resources < </ProcSet[/PDF/Text]/Font < </F0 5 0 R>> >>\n";
                ConvertToByteAndAddtoStream(strPDFMessage);
                strPDFMessage = "/MediaBox [ 0 0 " + pageWidth + " " + pageDepth + " ]\n>>\nendobj\n";
                ConvertToByteAndAddtoStream(strPDFMessage);            xRefs.Add(mPDF.Length);
                strPDFMessage = "5 0 obj\n < </Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>>\nendobj\n";
                ConvertToByteAndAddtoStream(strPDFMessage);            xRefs.Add(mPDF.Length);
                strPDFMessage = "6 0 obj\n < </Type/Catalog/Pages 4 0 R>>\nendobj\n";
                ConvertToByteAndAddtoStream(strPDFMessage);            streamStart = mPDF.Length;
                strPDFMessage = "xref\n0 7\n0000000000 65535 f \n";
                for (int i = 0; i < xRefs.Count; i++)
                {
                    strPDFMessage += xRefFormatting((long)xRefs[i]) + " 00000 n \n";
                }
                ConvertToByteAndAddtoStream(strPDFMessage);
                strPDFMessage = "trailer\n < <\n/Size " + (xRefs.Count + 1) + "\n/Root 6 0 R\n>>\n";
                ConvertToByteAndAddtoStream(strPDFMessage);            strPDFMessage = "startxref\n" + streamStart + "\n%%EOF\n";
                ConvertToByteAndAddtoStream(strPDFMessage);
                mPDF.WriteTo(pPDF.BaseStream);
                //System.Web.HttpContext.Current.Response.Write(pPDF.BaseStream); 
                mPDF.Close();
                pPDF.Close();
            }    }
    }
      

  2.   

    http://topic.csdn.net/u/20110211/00/ECB05A36-F7F0-40F8-B3B7-DC12CDAE4F64.html不用FlexPaper应该很痛苦。。
      

  3.   

    这个可以把pdf转成swf格式吗?
      

  4.   

    好像有個 activeswf.professional,查找看看
      

  5.   

    print2flash 
    服务器端要装下
      

  6.   

    有没有不用安装就能转换的方法,因为我用flashpaper安装iis上的时候只能转换doc,jpg格式的文件,xls和docx格式的都转不了,困扰啊
      

  7.   

    我遇到了和你同样的问题。。   将程序发布到iis上的时候,部分格式无法转换,而且还会出现进程无法杀死的问题。在Web环境下执行exe还是比较烦的, 不仅要安装额外的工具,  还要提供很高的访问权限。
    这是我之前的帖,但是问题没有根本解决 。
    你可以参考一下Link
      

  8.   


    activeswf.professional 是SDK
      

  9.   

    其实还有别的工具可以实现的。不止flashpaper
      

  10.   

    用到工具就会涉及到iis部署的权限问题,这个大家是怎么看的?
      

  11.   

    在apache下,我使用flashpaper,还没发现转不了的吧.
    可打印就可以转,不知道iis什么情况.
    权限确实是个大问题.iis下尤其严重.
    不过怎么得都得转换,不然实现不了.