创建pdf文件


   using    System;   
   using    System.IO;   
   using    System.Text;   
   using    System.Collections;   
    
   namespace    paladin.utility  
   {  
   ///    <summary>  
   ///    ToPdf    的摘要说明。  
   ///    </summary>  
   public    class    ToPdf  
   {  
   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    MemoryStream    mPDF=    new    MemoryStream();  
   
   public    ToPdf()  
   {  
   //  
   //    TODO:    在此处添加构造函数逻辑  
   //  
   }  
   
   static    void    ConvertToByteAndAddtoStream(string    strMsg)  
   {  
   Byte[]    buffer=null;  
   buffer=ASCIIEncoding.ASCII.GetBytes(strMsg);  
   mPDF.Write(buffer,0,buffer.Length);    
   buffer=null;  
   }  
   
   static    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;  
   }  
   
   static    public    void    CreatePdf(string    filePath)  
   {  
   StreamWriter    pPDF=new    StreamWriter(filePath);  
   
   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);  
   
   //实体内容  
   strPDFMessage=    "(http://www.wenhui.org)Tj/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);  
   
   mPDF.Close();  
   pPDF.Close();  
   }  
   }  
   }  

 
 
在地震学领域,对地震波的研究至关重要,因为它能帮助我们理解地震的动力学行为以及地壳结构。本压缩包“seismic wwf_as.rar_gateism_matlab_referqwe_地震_地震波分析”提供了用于地震波分析的相关工具和资料,特别强调了将地震波转换为反应谱的过程。这一过程在地震工程学、地震预测和灾害风险评估中有着广泛的应用。 让我们详细探讨一下“地震波分析”。地震波分为体波(P波和S波)和面波(L波)。P波是纵波,速度最快,最先到达,主要传递压力变化;S波是横波,速度稍慢,引起剪切运动;L波则是沿着地表传播的波动,振幅最大,破坏性最强。通过对地震波的记录和分析,可以获取地震源的特性、地壳的密度和弹性模量等信息。 描述中提到的“将地震波转换为反应谱”,这是一个关键步骤。反应谱是衡量地面加速度、速度或位移随频率变化的函数,它反映了不同频率的地震波在特定场地条件下产生的地面运动强度。在设计抗震建筑时,工程师会参考反应谱来确定结构的设计参数,确保其在地震中具有足够的稳定性。 这个压缩包中的核心文件“wwf_as.m”很可能是一个MATLAB脚本,用于实现上述转换。MATLAB是一款强大的数值计算和数据可视化软件,常用于科学计算和工程应用。在地震分析中,MATLAB可以处理地震数据,执行滤波、时频分析、谱分析等操作,进而生成反应谱。"gateism"可能是指某种特定的MATLAB算法或者数据处理方法,而"referqwe"可能是作者自定义的变量名或代码段的缩写,具体含义需要查看源代码才能明确。 在进行地震波分析时,通常会涉及以下步骤: 1. 数据预处理:包括去除噪声、校正时延、滤波等。 2. 计算地震波参数:如峰值加速度、峰值速度、峰值位移等。 3. 谱分析:计算功率谱密度,进一步得到反应谱。 4. 结合场地条件和建筑物特性,评估地震影响。 这个压缩包提供了一个基于MATLAB的地震波分析工具,可以用来将地震波信号转化为反应谱,对地震的影响进行量化和评估,这对于地震科学研究和抗震工程设计具有很高的实用价值。通过深入学习和理解这些内容,我们可以更有效地预测和减轻地震灾害。。内容来源于网络分享,如有侵权请联系我删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值