using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Office.Core;
using Word = Microsoft.Office.Interop.Word;
using System.IO;
using System.Data.SqlClient;
using System.Data;
using System.Drawing;
using Microsoft.Office.Interop.Word;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace PartyOrganization
{
public partial class Sign2 : System.Web.UI.Page
{
MsgBox msg = new MsgBox();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["i"] = 0;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
BLL.ManageSys.FileOperate file = new BLL.ManageSys.FileOperate();
if (File1.HasFile)
{
//获取文件全路径
string fullFileName = this.File1.PostedFile.FileName;
//获取文件名
string fileName = fullFileName.Substring(fullFileName.LastIndexOf("\\") + 1);
this.File1.PostedFile.SaveAs(Server.MapPath("UpFileIMage") + "\\" + fileName);
string FileName = Server.MapPath("UpFileIMage").ToString().Trim() + "\\" + fileName;
msg.AjaxResponeSrcipt(this.UpdatePanel1, this.GetType(), "上传成功!");
FileInfo TpFile = new FileInfo(FileName);
byte[] ImageBuffer = new byte[TpFile.Length];
FileStream stream = TpFile.OpenRead();//创建只读的FileStream对象
stream.Read(ImageBuffer, 0, ImageBuffer.Length);
stream.Close();
string strCon = "server=(local);database=PartyOrganization;integrated security=sspi";
SqlConnection conn = new SqlConnection(strCon);
conn.Open();
string strCom = "insert into book(bookName,bookImg,imageUrl) values(@bookName,@bookImage,@imageUrl)";
SqlCommand com = new SqlCommand(strCom, conn);
com.Parameters.Add("@bookName", SqlDbType.VarChar, 50).Value = "测试";
com.Parameters.Add("@bookImage", SqlDbType.Image).Value = ImageBuffer;
com.Parameters.Add("@imageUrl", SqlDbType.VarChar, 100).Value = FileName;
com.ExecuteNonQuery();
}
else
{
msg.AjaxResponeSrcipt(this.UpdatePanel1, this.GetType(), "上传失败!");
}
}
protected void Button2_Click(object sender, EventArgs e)
{
byte[] imagebytes = null;
//打开数据库
SqlConnection con = new SqlConnection("server=(local);database=PartyOrganization;integrated security=sspi");
con.Open();
SqlCommand com = new SqlCommand("select * from book", con);
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet ds = new DataSet();
da.Fill(ds);
foreach (DataRow row in ds.Tables[0].Rows)
{
imagebytes = (byte[])row["bookImg"];
}
com.Clone();
con.Close();
//以上 换成三层取得图片即可
MemoryStream ms = new MemoryStream(imagebytes);
Bitmap bmpt = new Bitmap(ms);
bmpt.Save("c:\\111.jpg");
bmpt.Dispose();
//word.Selection.Text = ViewState["i"].ToString();
//int s = int.Parse(ViewState["i"].ToString()); s++;
//ViewState["i"] = s;
//WordSign("c:\\111.jpg", @"c:\b.doc", s);
WordConvertToPdf("c:\\b2.doc", "c:\\new.pdf");
//AddWaterMark();
//System.IO.File.Delete("c:\\111.jpg"); //删掉临时签名图片
}
/// <summary>
/// word 签字
/// </summary>
/// <param name="SignImagePath">签字图片路径</param>
/// <param name="WordPath">word文档路径</param>
protected void WordSign(string SignImagePath,string WordPath,int s)
{
object Nothing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.ApplicationClass word = new Word.ApplicationClass();
word.Visible = true;
Word.Document doc = null;
try
{
doc = word.Documents.Open(WordPath); //你的附件word的位置
//插入图片
string FileName = SignImagePath;//自己在服务器设置一个零时文件夹,取出签字图片放在此
//移动光标到文档末尾
object count = doc.Paragraphs.Count;
object WdLine = Microsoft.Office.Interop.Word.WdUnits.wdParagraph;
word.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移动焦点
if (s == 1)
{
word.Selection.TypeParagraph();//插入段落 自己控制 如果是第一个签字的人就让插入段落。
}
word.Selection.InsertAfter("\x20\x20");//图片间隔两个空格
object LinkToFile = false;
object SaveWithDocument = true;
object Anchor = word.Application.Selection.Range;
InlineShape InlineShapesNew = word.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor);
//签名图片大小设置
InlineShapesNew.Width = 30f;
InlineShapesNew.Height = 40f;
doc.SaveAs(WordPath, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);
doc.Close(ref Nothing, ref Nothing, ref Nothing);
word.Application.Quit(ref Nothing, ref Nothing, ref Nothing);
}
catch
{
//打开失败
}
}
/// <summary>
/// word转pdf
/// </summary>
/// <param name="WordPath">word文档路径</param>
/// <param name="PdfPath">生成的pdf保存路径</param>
protected void WordConvertToPdf(string WordPath,string PdfPath)
{
Microsoft.Office.Interop.Word.ApplicationClass oWord = new Word.ApplicationClass();
Type wordType = oWord.GetType();
Microsoft.Office.Interop.Word.Documents docs = oWord.Documents;
Type docsType = docs.GetType();
object objDocName = WordPath;
Microsoft.Office.Interop.Word.Document doc = (Microsoft.Office.Interop.Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { objDocName, true, true });
//打印输出到指定文件
Type docType = doc.GetType();
object printFileName = @"c:\tmp\test.ps";//改成自己项目的目录 防止覆盖
docType.InvokeMember("PrintOut", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { false, false, Microsoft.Office.Interop.Word.WdPrintOutRange.wdPrintAllDocument, printFileName });
wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, oWord, null);
string o1 = "c:\\tmp\\test.ps";
string o2 = PdfPath;
string o3 = "";
//引用将PS转换成PDF的对象
try
{
ACRODISTXLib.PdfDistillerClass pdf = new ACRODISTXLib.PdfDistillerClass();
pdf.FileToPDF(o1, o2, o3);
}
catch { }
System.IO.File.Delete("c:\\tmp\\test.ps"); //删掉临时文件
//为防止本方法调用多次时发生错误,必须停止acrodist.exe进程
foreach (System.Diagnostics.Process proc in System.Diagnostics.Process.GetProcesses())
{
int begpos;
int endpos;
string sProcName = proc.ToString();
begpos = sProcName.IndexOf("(") + 1;
endpos = sProcName.IndexOf(")");
sProcName = sProcName.Substring(begpos, endpos - begpos);
if (sProcName.ToLower().CompareTo("acrodist") == 0)
{
try
{
proc.Kill();
}
catch { }
break;
}
}
}
/// <summary>
/// 添加水印 处理过的水印图片浮在内容上方
/// </summary>
protected void AddWaterMark()
{
PdfReader reader = new PdfReader("C:/tmp/5.pdf");
FileStream stream =new FileStream("C:/tmp/New.pdf", FileMode.Create,FileAccess.ReadWrite);
PdfStamper stamp = new PdfStamper(reader, stream);
#region
int n = reader.NumberOfPages;
int i = 0;
PdfContentByte under;
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance("C:/tmp/123.png");
image.SetAbsolutePosition(200, 200); //SetAbsolutePosition()方法接受两个float类型的参数,第一个参数是X轴坐标,是从文档最左边开始算起,第二个参数是Y轴坐标,是从文档下方开始算起。A4纸的的默认参数是595像素宽,842像素高,四周的页边距都为36像素.
image.ScaleAbsolute(80, 80);//水印图片大小设置
image.Rotation=1;//旋转
image.RotationDegrees = 45;//旋转角度
//水印的位置
while (i < n)
{
i++;
under = stamp.GetOverContent(i);//位置 每页
under.AddImage(image);
}
#endregion
stamp.Close();
reader.Close();
stream.Close();
}
}
}