using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using Acrobat; using DocumentTools; using DrawToolsLib; using AxAcroPDFLib; using AcroPDFLib; using iTextSharp.text.pdf; using TmatrixLibrary; namespace TmatrixCodeGenerator { public partial class Tmatrix_Form : Form { StreamReader gsr; string TMXFileName, PDFFileName, gKeyStr; TmatrixClass TMC = new TmatrixClass(); public static string gPrintFileName; string gDirectory = Application.StartupPath; string gFileName = ""; bool gbInitDone = false; //string gUserName = ""; //string gPassword = ""; enum TMATRIX_POINT_TYPE { TmatrixPointType_2x2 = 0, // 2x2 Point Type TmatrixPointType_3x3 = 1, // 3x3 Point Type }; enum TMATRIX_OBJECT_TYPE { TMATRIX_OT_ElementCode = 0, // 此类型对象的Index范围是:75497472~83886079(十六进制为:0x04800000~0x04ffffff) TMATRIX_OT_PositionCode, // 此类型对象没有Index }; public Tmatrix_Form() { InitializeComponent(); if (TMC.TmatrixInitialize() == false) { MessageBox.Show(this, "Code Generator initialize fail !", "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Error); Close(); } else { gbInitDone = true; } } private void GenerateCode() { GenerateCode_Form dialog = new GenerateCode_Form(); dialog.ShowDialog(); if (GlobalClass.gbGenPageSet == false) return; if (gbInitDone == false) { MessageBox.Show(this, "Code Generator initialize fail !", "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } int SPID = 0; try { SPID = int.Parse(SPID_textBox.Text); } catch { MessageBox.Show(this, "Please input correct format for start page ID !", "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } MessageBox.Show(this, "Generating code...........", "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Hide(); //int PointType = (int)(TMATRIX_POINT_TYPE.TmatrixPointType_3x3); //string sGenerateResult = TMC.GenerateTmatrixCode(gKeyStr, PDFFileName, SPID, PointType, GlobalClass.gbGenerateBGWithVImage, GlobalClass.gbGenerateVImage, GlobalClass.gbGenerateBGWithoutVImage, GlobalClass.gbGenerateBGWithImage); bool[] bPublishImageType = new bool[4]; bPublishImageType[0] = GlobalClass.gbGenerateBGWithVImage; bPublishImageType[1] = GlobalClass.gbGenerateVImage; bPublishImageType[2] = GlobalClass.gbGenerateBGWithoutVImage; bPublishImageType[3] = GlobalClass.gbGenerateBGWithImage; string sGenerateResult = TMC.GenerateTmatrixCode_OID4(gKeyStr, PDFFileName, SPID, GlobalClass.gPointType, bPublishImageType, GlobalClass.gPointDPI); if (sGenerateResult.Substring(0, 1) == "1") { this.Show(); MessageBox.Show(this, sGenerateResult.Substring(1, sGenerateResult.Length - 1), "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (sGenerateResult.Substring(0, 1) == "0") { gDirectory = Path.GetDirectoryName(PDFFileName); gFileName = Path.GetFileName(PDFFileName); /* gDirectory += "\\"; string WFName = gFileName.Substring(0, gFileName.Length - 4) + "_*.PDF"; string[] files = Directory.GetFiles(@gDirectory, WFName); int i; string Pfile; File_listBox.Items.Clear(); for (i = 0; i < files.Length; i++) { Pfile = Path.GetFileName(files[i]); File_listBox.Items.Add(Pfile); File_listBox.SelectedIndex = File_listBox.Items.Count - 1; } */ this.Show(); MessageBox.Show(this, sGenerateResult.Substring(1, sGenerateResult.Length - 1), "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Information); } return; } private void GenerateCode_old() { GenerateCode_Form dialog = new GenerateCode_Form(); dialog.ShowDialog(); if (GlobalClass.gbGenPageSet == false) return; if (gbInitDone == false) { MessageBox.Show(this, "Code Generator initialize fail !", "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } int SPID = 0; try { SPID = int.Parse(SPID_textBox.Text); } catch { MessageBox.Show(this, "Please input correct format for start page ID !", "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } MessageBox.Show(this, "Generating code...........", "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Hide(); int PointType = (int)(TMATRIX_POINT_TYPE.TmatrixPointType_3x3); string sGenerateResult = TMC.GenerateTmatrixCode(gKeyStr, PDFFileName, SPID, PointType, GlobalClass.gbGenerateBGWithVImage, GlobalClass.gbGenerateVImage, GlobalClass.gbGenerateBGWithoutVImage, GlobalClass.gbGenerateBGWithImage); if (sGenerateResult.Substring(0, 1) == "1") { this.Show(); MessageBox.Show(this, sGenerateResult.Substring(1, sGenerateResult.Length - 1), "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (sGenerateResult.Substring(0, 1) == "0") { gDirectory = Path.GetDirectoryName(PDFFileName); gFileName = Path.GetFileName(PDFFileName); this.Show(); MessageBox.Show(this, sGenerateResult.Substring(1, sGenerateResult.Length - 1), "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Information); } return; } private void GenerateTmatrixCode_button_Click(object sender, EventArgs e) { GenerateCode(); } private void SelectPDF_button_Click(object sender, EventArgs e) { OpenFileDialog OpenDlg = new OpenFileDialog(); OpenDlg.FileName = ""; OpenDlg.DefaultExt = "pdf"; OpenDlg.Filter = "PDF Files (*.pdf)|*.pdf"; if (OpenDlg.ShowDialog() == DialogResult.OK) { PDFFileName = OpenDlg.FileName; FName_textBox.Text = PDFFileName; } } private void Exit_button_Click(object sender, EventArgs e) { Close(); } private void SelectTmatrixKey_button_Click(object sender, EventArgs e) { OpenFileDialog OpenDlg = new OpenFileDialog(); OpenDlg.FileName = ""; OpenDlg.DefaultExt = "tmx"; OpenDlg.Filter = "TMX Files (*.tmx)|*.tmx"; if (OpenDlg.ShowDialog() == DialogResult.OK) { BID_textBox.Text = ""; PID1_textBox.Text = ""; PID2_textBox.Text = ""; Expiration_textBox.Text = ""; PDF_groupBox.Enabled = false; PDFFileName = ""; TMXFileName = OpenDlg.FileName; //MessageBox.Show(TMXFileName); gsr = new StreamReader(TMXFileName); gKeyStr = gsr.ReadLine(); gsr.Close(); string KeyCheckResult = TMC.TmatrixKeyCheck_OID4(gKeyStr); if (KeyCheckResult.Substring(0, 1) == "1") { MessageBox.Show(this, KeyCheckResult.Substring(1, KeyCheckResult.Length - 1), "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (KeyCheckResult.Substring(0, 1) == "0") { string[] s = gKeyStr.Split(';'); string[] s1 = s[0].Split(','); SID_textBox.Text = s1[0].Substring(1, 1); OID_textBox.Text = s1[1].Substring(1, 3); BID_textBox.Text = s1[2].Substring(1, 4); PID1_textBox.Text = s1[3].Substring(1, 3); PID2_textBox.Text = s1[3].Substring(5, 3); Expiration_textBox.Text = s1[4].Substring(1, s1[4].Length - 1); PDF_groupBox.Enabled = true; } } } private void Tmatrix_Form_FormClosing(object sender, FormClosingEventArgs e) { TMC.TmatrixUninitialize(); } private void GeneratePartialCode() { GenerateCode_Form dialog = new GenerateCode_Form(); dialog.ShowDialog(); if (GlobalClass.gbGenPageSet == false) return; if (gbInitDone == false) { MessageBox.Show(this, "Code Generator initialize fail !", "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } int SPID = 0; try { SPID = int.Parse(SPID_textBox.Text); } catch { MessageBox.Show(this, "Please input correct format for start page ID !", "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } MessageBox.Show(this, "Generating code...........", "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Hide(); //int PointType = (int)(TMATRIX_POINT_TYPE.TmatrixPointType_3x3); //256 is for Total Pages, 10 is for partial area in each page, this is just a sample program, area no can be expanded by yourself. UInt32[][] Tx = new UInt32[256][]; UInt32[][] Ty = new UInt32[256][]; UInt32[][] Tw = new UInt32[256][]; UInt32[][] Th = new UInt32[256][]; int i; for (i = 0; i < 256; i++) { Tx[i] = new UInt32[10]; Ty[i] = new UInt32[10]; Tw[i] = new UInt32[10]; Th[i] = new UInt32[10]; } Tx[0][0] = UInt32.Parse(X1_textBox.Text); Tx[1][0] = UInt32.Parse(X2_textBox.Text); Tx[2][0] = UInt32.Parse(X3_textBox.Text); Ty[0][0] = UInt32.Parse(Y1_textBox.Text); Ty[1][0] = UInt32.Parse(Y2_textBox.Text); Ty[2][0] = UInt32.Parse(Y3_textBox.Text); Tw[0][0] = UInt32.Parse(W1_textBox.Text); Tw[1][0] = UInt32.Parse(W2_textBox.Text); Tw[2][0] = UInt32.Parse(W3_textBox.Text); Th[0][0] = UInt32.Parse(H1_textBox.Text); Th[1][0] = UInt32.Parse(H2_textBox.Text); Th[2][0] = UInt32.Parse(H3_textBox.Text); Tw[0][1] = 0; Tw[1][1] = 0; Tw[2][1] = 0; Th[0][1] = 0; Th[1][1] = 0; Th[2][1] = 0; //string sGenerateResult = TMC.GenerateTmatrixCodeByArea(gKeyStr, PDFFileName, SPID, PointType, GlobalClass.gbGenerateBGWithVImage, GlobalClass.gbGenerateVImage, GlobalClass.gbGenerateBGWithoutVImage, GlobalClass.gbGenerateBGWithImage,Tx, Ty, Tw, Th); string sGenerateResult = TMC.GenerateTmatrixCodeByArea_OID4(gKeyStr, PDFFileName, SPID, GlobalClass.gPointType, GlobalClass.gPointDPI, GlobalClass.gbGenerateBGWithVImage, GlobalClass.gbGenerateVImage, GlobalClass.gbGenerateBGWithoutVImage, GlobalClass.gbGenerateBGWithImage, Tx, Ty, Tw, Th); if (sGenerateResult.Substring(0, 1) == "1") { this.Show(); MessageBox.Show(this, sGenerateResult.Substring(1, sGenerateResult.Length - 1), "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (sGenerateResult.Substring(0, 1) == "0") { gDirectory = Path.GetDirectoryName(PDFFileName); gFileName = Path.GetFileName(PDFFileName); this.Show(); MessageBox.Show(this, sGenerateResult.Substring(1, sGenerateResult.Length - 1), "Code Generator", MessageBoxButtons.OK, MessageBoxIcon.Information); } return; } private void GeneratePartialCode_button_Click(object sender, EventArgs e) { GeneratePartialCode(); } } }