907 lines
38 KiB
C#
907 lines
38 KiB
C#
using ComponentFactory.Krypton.Toolkit;
|
|
using FabitArchiwum.App.Model;
|
|
using iTextSharp.text;
|
|
using Newtonsoft.Json;
|
|
using PdfiumViewer;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Runtime.InteropServices;
|
|
using System.Windows.Forms;
|
|
using WIA;
|
|
using static System.Net.Mime.MediaTypeNames;
|
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
|
|
|
namespace FabitArchiwum.App
|
|
{
|
|
public partial class AppForm : ComponentFactory.Krypton.Toolkit.KryptonForm
|
|
{
|
|
LoginForm loginForm;
|
|
List<TreeModel> tree = new List<TreeModel>();
|
|
KryptonTreeView _fieldsTreeCache = new KryptonTreeView();
|
|
DeviceManager deviceManager = new DeviceManagerClass();
|
|
DeviceInfo selectedScanner = null;
|
|
Device device;
|
|
WIA.CommonDialog dialog;
|
|
|
|
public AppForm()
|
|
{
|
|
InitializeComponent();
|
|
//for (int i = 1; i <= deviceManager.DeviceInfos.Count; i++)
|
|
//{
|
|
// if (deviceManager.DeviceInfos[i].Type != WiaDeviceType.ScannerDeviceType)
|
|
// {
|
|
// continue;
|
|
// }
|
|
// kryptonComboBox1.Items.Add(deviceManager.DeviceInfos[i].Properties["Name"].get_Value().ToString());
|
|
//}
|
|
//if (kryptonComboBox1.Items.Count > 0)
|
|
//{
|
|
// kryptonComboBox1.SelectedIndex = 0;
|
|
// selectedScanner = deviceManager.DeviceInfos[kryptonComboBox1.SelectedIndex + 1];
|
|
//}
|
|
try
|
|
{
|
|
dialog = new WIA.CommonDialogClass();
|
|
device = dialog.ShowSelectDevice(AlwaysSelectDevice: true);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("Brak skanera lub sterowników WIA", "Błąd");
|
|
}
|
|
bindTreeView();
|
|
treeView1.Nodes[0].Expand();
|
|
}
|
|
|
|
private void bindTreeView()
|
|
{
|
|
tree = JsonConvert.DeserializeObject<List<TreeModel>>(AppHelper.GetInstance().getTree());
|
|
treeView1.Nodes.Clear();
|
|
_fieldsTreeCache.Nodes.Clear();
|
|
TreeNodeCollection tnc = treeView1.Nodes;
|
|
bindTreeViewReq(0, tnc);
|
|
TreeNodeCollection tncCache = _fieldsTreeCache.Nodes;
|
|
bindTreeViewReq(0, tncCache);
|
|
//treeView1.ExpandAll();
|
|
kryptonButton1.Enabled = false;
|
|
kryptonButton2.Enabled = false;
|
|
kryptonButton3.Enabled = false;
|
|
kryptonButton4.Enabled = false;
|
|
kryptonButton5.Enabled = false;
|
|
kryptonButton9.Enabled = false;
|
|
kryptonButton10.Enabled = false;
|
|
kryptonButton6.Enabled = false;
|
|
kryptonButton7.Enabled = false;
|
|
kryptonButton8.Enabled = false;
|
|
listBox1.ClearSelected();
|
|
kryptonLabel1.Text = "";
|
|
pdfViewer1.Document?.Dispose();
|
|
var pdf = PdfDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\None.pdf");
|
|
pdfViewer1.Document = pdf;
|
|
}
|
|
|
|
private void bindTreeViewReq(int parentKey, TreeNodeCollection n)
|
|
{
|
|
var st = tree.Where(a => a.ParentId == parentKey).ToList();
|
|
foreach (var item in st)
|
|
{
|
|
n.Add(item.Id.ToString(), item.Text);
|
|
var subtree = tree.Where(a => a.ParentId == item.Id).ToList();
|
|
if (subtree.Count() > 0) bindTreeViewReq((int)item.Id, n[n.Count - 1].Nodes);
|
|
}
|
|
treeView1.Scrollable = true;
|
|
|
|
}
|
|
|
|
|
|
private void AppForm_Shown(object sender, EventArgs e)
|
|
{
|
|
// this.Visible = false;
|
|
// loginForm = new LoginForm();
|
|
// loginForm.ShowDialog();
|
|
if (AppHelper.GetInstance().isLogged())
|
|
{
|
|
//bindTreeView();
|
|
}
|
|
else
|
|
{
|
|
this.Close();
|
|
}
|
|
}
|
|
|
|
public byte[] ImageToByteArray(System.Drawing.Image imageIn)
|
|
{
|
|
using (var ms = new MemoryStream())
|
|
{
|
|
imageIn.Save(ms, imageIn.RawFormat);
|
|
return ms.ToArray();
|
|
}
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
}
|
|
|
|
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
|
|
{
|
|
listBox1.Items.Clear();
|
|
int treeId = int.Parse(treeView1.SelectedNode.Name);
|
|
var doc = JsonConvert.DeserializeObject<List<DocumentModel>>(AppHelper.GetInstance().getDocumentsByTreeId(treeId));
|
|
var ds = doc.Where(d => d.TreeId == treeId).ToList();
|
|
foreach (var d in ds)
|
|
{
|
|
listBox1.Items.Add(d);
|
|
}
|
|
kryptonButton1.Enabled = true;
|
|
kryptonButton2.Enabled = true;
|
|
kryptonButton3.Enabled = true;
|
|
kryptonButton6.Enabled = true;
|
|
kryptonButton7.Enabled = true;
|
|
kryptonButton8.Enabled = true;
|
|
kryptonButton4.Enabled = false;
|
|
kryptonButton5.Enabled = false;
|
|
kryptonButton9.Enabled = false;
|
|
kryptonButton10.Enabled = true;
|
|
listBox1.ClearSelected();
|
|
kryptonLabel1.Text = "";
|
|
pdfViewer1.Document?.Dispose();
|
|
var pdf = PdfDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\None.pdf");
|
|
pdfViewer1.Document = pdf;
|
|
}
|
|
|
|
private void kryptonPanel1_Resize(object sender, EventArgs e)
|
|
{
|
|
}
|
|
|
|
private void kryptonButton2_Click(object sender, EventArgs e)
|
|
{
|
|
if (MessageBox.Show("Usunąć?", "Potwierdzenie", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
|
|
{
|
|
try
|
|
{
|
|
TreeNode tn = treeView1.SelectedNode;
|
|
AppHelper.GetInstance().deleteTree(int.Parse(tn.Name));
|
|
bindTreeView();
|
|
}
|
|
catch (UnauthorizedAccessException)
|
|
{
|
|
KryptonMessageBox.Show("Brak dostępu", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
KryptonMessageBox.Show("Błąd: " + ex.Message + ex.InnerException + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void plikToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (listBox1.SelectedIndex != -1)
|
|
{
|
|
kryptonButton4.Enabled = true;
|
|
kryptonButton5.Enabled = true;
|
|
kryptonButton9.Enabled = true;
|
|
kryptonButton10.Enabled = true;
|
|
kryptonButton6.Enabled = true;
|
|
kryptonButton7.Enabled = true;
|
|
kryptonButton8.Enabled = true;
|
|
}
|
|
else
|
|
{
|
|
kryptonButton4.Enabled = false;
|
|
kryptonButton5.Enabled = false;
|
|
kryptonButton9.Enabled = false;
|
|
kryptonButton10.Enabled = true;
|
|
kryptonButton6.Enabled = false;
|
|
kryptonButton7.Enabled = false;
|
|
kryptonButton8.Enabled = false;
|
|
}
|
|
}
|
|
|
|
private void listBox1_SelectedValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (listBox1.SelectedIndex != -1)
|
|
{
|
|
kryptonButton4.Enabled = true;
|
|
kryptonButton5.Enabled = true;
|
|
kryptonButton9.Enabled = true;
|
|
kryptonButton10.Enabled = true;
|
|
DocumentModel d = AppHelper.GetInstance().getDocumentById(((DocumentModel)listBox1.SelectedItem).Id);
|
|
if (d != null && d.Image != null)
|
|
{
|
|
try
|
|
{
|
|
using (MemoryStream ms = new MemoryStream(d.Image))
|
|
{
|
|
kryptonLabel1.Text = d.Name;
|
|
pdfViewer1.Document?.Dispose();
|
|
var pdf = PdfDocument.Load(ms);
|
|
pdf.Save(Path.GetTempPath()+"\\temp.pdf");
|
|
pdf = PdfDocument.Load(Path.GetTempPath() + "\\temp.pdf");
|
|
pdfViewer1.Document = pdf;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
kryptonLabel1.Text = "";
|
|
pdfViewer1.Document?.Dispose();
|
|
var pdf = PdfDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\None.pdf");
|
|
pdfViewer1.Document = pdf;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
kryptonButton4.Enabled = false;
|
|
kryptonButton5.Enabled = false;
|
|
kryptonButton9.Enabled = false;
|
|
kryptonButton10.Enabled = true;
|
|
}
|
|
}
|
|
|
|
private void kryptonButton1_Click(object sender, EventArgs e)
|
|
{
|
|
var sn = treeView1.SelectedNode;
|
|
var nowyFolder = KryptonInputBox.Show("Wpisz nazwę nowego folderu:", "Nowy folder", "");
|
|
if (nowyFolder != "")
|
|
{
|
|
try
|
|
{
|
|
AppHelper.GetInstance().putTree(int.Parse(treeView1.SelectedNode.Name), nowyFolder);
|
|
bindTreeView();
|
|
treeView1.Focus();
|
|
KryptonMessageBox.Show("Zapisano", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
catch (UnauthorizedAccessException)
|
|
{
|
|
KryptonMessageBox.Show("Brak dostępu", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
KryptonMessageBox.Show("Błąd zapisu: " + ex.Message + ex.InnerException + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
treeView1.SelectedNode = treeView1.Nodes.Find(sn.Name, true)[0];
|
|
treeView1.SelectedNode.Expand();
|
|
}
|
|
|
|
private void kryptonButton3_Click(object sender, EventArgs e)
|
|
{
|
|
var nowaNazwa = KryptonInputBox.Show("Wpisz nową nazwę folderu:", "Zmiana nazwy", treeView1.SelectedNode.Text);
|
|
if (nowaNazwa != "")
|
|
{
|
|
try
|
|
{
|
|
TreeNode tn = treeView1.SelectedNode;
|
|
AppHelper.GetInstance().renameTree(int.Parse(tn.Name), nowaNazwa);
|
|
bindTreeView();
|
|
treeView1.SelectedNode = treeView1.Nodes.Find(tn.Name, true)[0];
|
|
treeView1.Focus();
|
|
KryptonMessageBox.Show("Zapisano", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
KryptonMessageBox.Show("Błąd zapisu: " + ex.Message + ex.InnerException + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void AppForm_SizeChanged(object sender, EventArgs e)
|
|
{
|
|
kryptonPanel3.Height = (kryptonPanel1.Height / 2) - 6;
|
|
kryptonPanel2.Height = (kryptonPanel1.Height / 2) - 3;
|
|
kryptonPanel2.Top = 3;
|
|
kryptonPanel3.Top = (kryptonPanel1.Height / 2);
|
|
kryptonPanel3.Width = kryptonPanel1.Width - 6;
|
|
kryptonPanel2.Width = kryptonPanel1.Width - 6;
|
|
treeView1.Height = (kryptonPanel1.Height / 2) - 35;
|
|
listBox1.Height = (kryptonPanel1.Height / 2) - 38;
|
|
kryptonButton1.Top = (kryptonPanel1.Height / 2) - 32;
|
|
kryptonButton2.Top = (kryptonPanel1.Height / 2) - 32;
|
|
kryptonButton3.Top = (kryptonPanel1.Height / 2) - 32;
|
|
kryptonButton11.Top = (kryptonPanel1.Height / 2) - 32;
|
|
kryptonButton4.Top = (kryptonPanel1.Height / 2) - 32;
|
|
kryptonButton5.Top = (kryptonPanel1.Height / 2) - 32;
|
|
kryptonButton9.Top = (kryptonPanel1.Height / 2) - 32;
|
|
kryptonButton10.Top = (kryptonPanel1.Height / 2) - 32;
|
|
}
|
|
|
|
private void kryptonButton5_Click(object sender, EventArgs e)
|
|
{
|
|
var nowaNazwa = KryptonInputBox.Show("Wpisz nową nazwę dokumentu:", "Zmiana nazwy", ((DocumentModel)listBox1.SelectedItem).Name);
|
|
var si = (DocumentModel)listBox1.SelectedItem;
|
|
if (nowaNazwa != "")
|
|
{
|
|
try
|
|
{
|
|
AppHelper.GetInstance().renameDocument(si.Id, nowaNazwa);
|
|
listBox1.Items.Clear();
|
|
int treeId = int.Parse(treeView1.SelectedNode.Name);
|
|
var doc = JsonConvert.DeserializeObject<List<DocumentModel>>(AppHelper.GetInstance().getDocumentsByTreeId(treeId));
|
|
var ds = doc.Where(d => d.TreeId == treeId).ToList();
|
|
foreach (var d in ds)
|
|
{
|
|
listBox1.Items.Add(d);
|
|
}
|
|
kryptonButton4.Enabled = false;
|
|
kryptonButton5.Enabled = false;
|
|
kryptonButton9.Enabled = false;
|
|
kryptonButton10.Enabled = true;
|
|
KryptonMessageBox.Show("Zapisano", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
KryptonMessageBox.Show("Błąd zapisu: " + ex.Message + ex.InnerException + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void kryptonButton4_Click(object sender, EventArgs e)
|
|
{
|
|
if (MessageBox.Show("Usunąć?", "Potwierdzenie", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
|
|
{
|
|
try
|
|
{
|
|
var si = (DocumentModel)listBox1.SelectedItem;
|
|
AppHelper.GetInstance().deleteDocument(si.Id);
|
|
listBox1.Items.Clear();
|
|
int treeId = int.Parse(treeView1.SelectedNode.Name);
|
|
var doc = JsonConvert.DeserializeObject<List<DocumentModel>>(AppHelper.GetInstance().getDocumentsByTreeId(treeId));
|
|
var ds = doc.Where(d => d.TreeId == treeId).ToList();
|
|
foreach (var d in ds)
|
|
{
|
|
listBox1.Items.Add(d);
|
|
}
|
|
kryptonButton4.Enabled = false;
|
|
kryptonButton5.Enabled = false;
|
|
kryptonButton9.Enabled = false;
|
|
kryptonButton10.Enabled = true;
|
|
kryptonLabel1.Text = "";
|
|
pdfViewer1.Document?.Dispose();
|
|
var pdf = PdfDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\None.pdf");
|
|
pdfViewer1.Document = pdf;
|
|
}
|
|
catch (UnauthorizedAccessException)
|
|
{
|
|
KryptonMessageBox.Show("Brak dostępu", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
KryptonMessageBox.Show("Błąd: " + ex.Message + ex.InnerException + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void oToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
OProgramieForm oProgramieForm = new OProgramieForm();
|
|
oProgramieForm.ShowDialog();
|
|
}
|
|
|
|
|
|
const string wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}";
|
|
const string wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}";
|
|
class WIA_DPS_DOCUMENT_HANDLING_SELECT
|
|
{
|
|
public const uint FEEDER = 0x00000001;
|
|
public const uint FLATBED = 0x00000002;
|
|
}
|
|
class WIA_DPS_DOCUMENT_HANDLING_STATUS
|
|
{
|
|
public const uint FEED_READY = 0x00000001;
|
|
}
|
|
class WIA_PROPERTIES
|
|
{
|
|
public const uint WIA_RESERVED_FOR_NEW_PROPS = 1024;
|
|
public const uint WIA_DIP_FIRST = 2;
|
|
public const uint WIA_DPA_FIRST = WIA_DIP_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
|
|
public const uint WIA_DPC_FIRST = WIA_DPA_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
|
|
//
|
|
// Scanner only device properties (DPS)
|
|
//
|
|
public const uint WIA_DPS_FIRST = WIA_DPC_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
|
|
public const uint WIA_DPS_DOCUMENT_HANDLING_STATUS = WIA_DPS_FIRST + 13;
|
|
public const uint WIA_DPS_DOCUMENT_HANDLING_SELECT = WIA_DPS_FIRST + 14;
|
|
}
|
|
public static List<System.Drawing.Image> Scan(string scannerId)
|
|
{
|
|
List<System.Drawing.Image> images = new List<System.Drawing.Image>();
|
|
|
|
// select the correct scanner using the provided scannerId parameter
|
|
WIA.DeviceManager manager = new WIA.DeviceManager();
|
|
WIA.Device device = null;
|
|
foreach (WIA.DeviceInfo info in manager.DeviceInfos)
|
|
{
|
|
if (info.DeviceID == scannerId)
|
|
{
|
|
// connect to scanner
|
|
device = info.Connect();
|
|
break;
|
|
}
|
|
}
|
|
// device was not found
|
|
if (device == null)
|
|
{
|
|
// enumerate available devices
|
|
string availableDevices = "";
|
|
foreach (WIA.DeviceInfo info in manager.DeviceInfos)
|
|
{
|
|
availableDevices += info.DeviceID + "\n";
|
|
}
|
|
|
|
// show error with available devices
|
|
throw new Exception("The device with provided ID could not be found. Available Devices:\n" + availableDevices);
|
|
}
|
|
|
|
WIA.Item item = null;
|
|
WIA.CommonDialog dialog = new WIA.CommonDialog();
|
|
WIA.Items items = dialog.ShowSelectItems(device);
|
|
if (items == null)
|
|
return images;
|
|
|
|
item = items[1];
|
|
|
|
bool hasMorePages = true;
|
|
while (hasMorePages)
|
|
{
|
|
try
|
|
{
|
|
// scan image
|
|
WIA.ICommonDialog wiaCommonDialog = new WIA.CommonDialog();
|
|
WIA.ImageFile image = (WIA.ImageFile)wiaCommonDialog.ShowTransfer(item);
|
|
|
|
// save to temp file
|
|
string fileName = Path.GetTempFileName();
|
|
File.Delete(fileName);
|
|
image.SaveFile(fileName);
|
|
try
|
|
{
|
|
Marshal.FinalReleaseComObject(image);
|
|
}
|
|
finally
|
|
{
|
|
image = null;
|
|
}
|
|
// add file to output list
|
|
images.Add(System.Drawing.Image.FromFile(fileName));
|
|
}
|
|
finally
|
|
{
|
|
//determine if there are any more pages waiting
|
|
WIA.Property documentHandlingSelect = null;
|
|
WIA.Property documentHandlingStatus = null;
|
|
foreach (WIA.Property prop in device.Properties)
|
|
{
|
|
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_SELECT)
|
|
documentHandlingSelect = prop;
|
|
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_STATUS)
|
|
documentHandlingStatus = prop;
|
|
}
|
|
// assume there are no more pages
|
|
hasMorePages = false;
|
|
// may not exist on flatbed scanner but required for feeder
|
|
if (documentHandlingSelect != null)
|
|
{
|
|
// check for document feeder
|
|
if ((Convert.ToUInt32(documentHandlingSelect.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER) != 0)
|
|
{
|
|
hasMorePages = ((Convert.ToUInt32(documentHandlingStatus.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_STATUS.FEED_READY) != 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return images;
|
|
}
|
|
|
|
private void setItem(IItem item, object property, object value)
|
|
{
|
|
WIA.Property aProperty = item.Properties.get_Item(ref property);
|
|
aProperty.set_Value(ref value);
|
|
}
|
|
|
|
private void kryptonButton6_Click(object sender, EventArgs e)
|
|
{
|
|
if (device != null)
|
|
{
|
|
Document doc = new Document(PageSize.A4, 10f, 10f, 10f, 10f);
|
|
var output = new MemoryStream();
|
|
var writer = iTextSharp.text.pdf.PdfWriter.GetInstance(doc, output);
|
|
doc.Open();
|
|
bool firstTime = true;
|
|
int ilosc_stron = 0;
|
|
Items items;
|
|
|
|
items = dialog.ShowSelectItems(device, SingleSelect: false);
|
|
//items = device.Items;
|
|
|
|
do
|
|
{
|
|
WIA.Item item;
|
|
try
|
|
{
|
|
item = items[1] as WIA.Item;
|
|
//setItem(item, "6146", 1);
|
|
//setItem(item, "3097", 0);
|
|
//setItem(item, "6148", 200);
|
|
}
|
|
catch
|
|
{
|
|
break;
|
|
}
|
|
bool hasMorePages = true;
|
|
while (hasMorePages)
|
|
{
|
|
if (!firstTime) doc.NewPage();
|
|
ImageFile imageFile = null;
|
|
// List<System.Drawing.Image> s = Scan(device.DeviceID);
|
|
object res = null;
|
|
if (items.Count >= 1)
|
|
{
|
|
try
|
|
{
|
|
//res = item.Transfer(wiaFormatJPEG);
|
|
res = dialog.ShowTransfer(item, wiaFormatJPEG);
|
|
}
|
|
catch
|
|
{
|
|
break;
|
|
}
|
|
//List<WIA.ImageFile> i = (List<WIA.ImageFile>)dialog.ShowTransfer(items[1]);
|
|
imageFile = (ImageFile)res;
|
|
}
|
|
if (imageFile != null)
|
|
{
|
|
iTextSharp.text.Rectangle pageSize = null;
|
|
pageSize = new iTextSharp.text.Rectangle(0, 0, imageFile.Width, imageFile.Height);
|
|
|
|
var imageBytes = (byte[])imageFile.FileData.get_BinaryData();
|
|
var ms = new MemoryStream(imageBytes);
|
|
var img = System.Drawing.Image.FromStream(ms);
|
|
|
|
var image = iTextSharp.text.Image.GetInstance(ImageToByteArray(img));
|
|
image.SetAbsolutePosition(0, 0);
|
|
image.ScaleAbsoluteHeight(doc.PageSize.Height);
|
|
image.ScaleAbsoluteWidth(doc.PageSize.Width);
|
|
doc.Add(image);
|
|
firstTime = false;
|
|
ilosc_stron++;
|
|
}
|
|
Marshal.FinalReleaseComObject(res);
|
|
WIA.Property documentHandlingSelect = null;
|
|
WIA.Property documentHandlingStatus = null;
|
|
foreach (WIA.Property prop in device.Properties)
|
|
{
|
|
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_SELECT)
|
|
documentHandlingSelect = prop;
|
|
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_STATUS)
|
|
documentHandlingStatus = prop;
|
|
}
|
|
// assume there are no more pages
|
|
hasMorePages = false;
|
|
// may not exist on flatbed scanner but required for feeder
|
|
if (documentHandlingSelect != null)
|
|
{
|
|
// check for document feeder
|
|
if ((Convert.ToUInt32(documentHandlingSelect.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER) != 0)
|
|
{
|
|
hasMorePages = ((Convert.ToUInt32(documentHandlingStatus.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_STATUS.FEED_READY) != 0);
|
|
object obj = new object();
|
|
obj = (WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER);
|
|
documentHandlingSelect.set_Value(ref obj);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
while (items != null && MessageBox.Show("Następna strona", "Następna strona", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes);
|
|
//while (MessageBox.Show("Następna strona", "Następna strona", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes);
|
|
|
|
if (ilosc_stron > 0)
|
|
{
|
|
doc.Close();
|
|
var nazwaDokumentu = KryptonInputBox.Show("Wpisz nazwę dokumentu:", "Nowy dokument", "");
|
|
if (nazwaDokumentu != "")
|
|
{
|
|
DocumentModel docModel = new DocumentModel();
|
|
docModel.TreeId = int.Parse(treeView1.SelectedNode.Name);
|
|
docModel.Name = nazwaDokumentu + ".pdf";
|
|
docModel.Image = output.ToArray();
|
|
output.Close();
|
|
DocumentModel d = AppHelper.GetInstance().putDocument(docModel);
|
|
TreeNode tn = treeView1.SelectedNode;
|
|
bindTreeView();
|
|
treeView1.SelectedNode = treeView1.Nodes.Find(tn.Name, true)[0];
|
|
treeView1.Focus();
|
|
|
|
using (MemoryStream ms = new MemoryStream(d.Image))
|
|
{
|
|
pdfViewer1.Document?.Dispose();
|
|
var pdf = PdfDocument.Load(ms);
|
|
pdfViewer1.Document = pdf;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("Błędna nazwa dokumentu. Dokument nie zapisany!", "Błąd");
|
|
}
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("Brak wyboru skanera!", "Błąd");
|
|
}
|
|
}
|
|
|
|
private void kryptonButton7_Click(object sender, EventArgs e)
|
|
{
|
|
}
|
|
|
|
private void wybórSkaneraToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
dialog = new WIA.CommonDialog();
|
|
device = dialog.ShowSelectDevice(AlwaysSelectDevice: true);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("Brak skanera lub sterowników WIA", "Błąd");
|
|
}
|
|
}
|
|
|
|
private void kryptonButton7_Click_1(object sender, EventArgs e)
|
|
{
|
|
OpenFileDialog openFileDialog = new OpenFileDialog();
|
|
openFileDialog.Filter = "PDF Files|*.PDF";
|
|
openFileDialog.Multiselect = false;
|
|
DialogResult res = openFileDialog.ShowDialog();
|
|
|
|
DocumentModel docModel = new DocumentModel();
|
|
docModel.TreeId = int.Parse(treeView1.SelectedNode.Name);
|
|
docModel.Name = openFileDialog.SafeFileName;
|
|
pdfViewer1.Document?.Dispose();
|
|
PdfDocument pdf = PdfDocument.Load(openFileDialog.FileName);
|
|
pdfViewer1.Document = pdf;
|
|
MemoryStream m = new MemoryStream();
|
|
pdfViewer1.Document.Save(m);
|
|
docModel.Image = m.ToArray();
|
|
DocumentModel d = AppHelper.GetInstance().putDocument(docModel);
|
|
TreeNode tn = treeView1.SelectedNode;
|
|
bindTreeView();
|
|
treeView1.SelectedNode = treeView1.Nodes.Find(tn.Name, true)[0];
|
|
treeView1.Focus();
|
|
|
|
using (MemoryStream ms = new MemoryStream(d.Image))
|
|
{
|
|
pdfViewer1.Document?.Dispose();
|
|
var p = PdfDocument.Load(ms);
|
|
pdf.Save(Path.GetTempPath() + "\\temp.pdf");
|
|
pdf = PdfDocument.Load(Path.GetTempPath() + "\\temp.pdf");
|
|
pdfViewer1.Document = pdf;
|
|
}
|
|
}
|
|
|
|
private void pdfViewer1_Load(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void listBox1_DragDrop(object sender, DragEventArgs e)
|
|
{
|
|
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
|
foreach (var file in files)
|
|
{
|
|
DocumentModel docModel = new DocumentModel();
|
|
docModel.TreeId = int.Parse(treeView1.SelectedNode.Name);
|
|
docModel.Name = Path.GetFileName(file);
|
|
docModel.Image = File.ReadAllBytes(file);
|
|
DocumentModel d = AppHelper.GetInstance().putDocument(docModel);
|
|
}
|
|
listBox1.Items.Clear();
|
|
int treeId = int.Parse(treeView1.SelectedNode.Name);
|
|
var doc = JsonConvert.DeserializeObject<List<DocumentModel>>(AppHelper.GetInstance().getDocumentsByTreeId(treeId));
|
|
var ds = doc.Where(d => d.TreeId == treeId).ToList();
|
|
foreach (var d in ds)
|
|
{
|
|
listBox1.Items.Add(d);
|
|
}
|
|
kryptonButton1.Enabled = true;
|
|
kryptonButton2.Enabled = true;
|
|
kryptonButton3.Enabled = true;
|
|
kryptonButton6.Enabled = true;
|
|
kryptonButton7.Enabled = true;
|
|
kryptonButton8.Enabled = true;
|
|
kryptonButton4.Enabled = false;
|
|
kryptonButton5.Enabled = false;
|
|
kryptonButton9.Enabled = false;
|
|
kryptonButton10.Enabled = true;
|
|
listBox1.ClearSelected();
|
|
kryptonLabel1.Text = "";
|
|
pdfViewer1.Document?.Dispose();
|
|
var pdf = PdfDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\None.pdf");
|
|
pdfViewer1.Document = pdf;
|
|
}
|
|
|
|
private void listBox1_DragEnter(object sender, DragEventArgs e)
|
|
{
|
|
if (e.Data.GetDataPresent(DataFormats.FileDrop) && treeView1.SelectedNode != null)
|
|
{
|
|
e.Effect = DragDropEffects.Copy;
|
|
}
|
|
else
|
|
{
|
|
e.Effect = DragDropEffects.None;
|
|
}
|
|
}
|
|
|
|
private void kryptonButton8_Click(object sender, EventArgs e)
|
|
{
|
|
Document doc = new Document(PageSize.A4, 10f, 10f, 10f, 10f);
|
|
var output = new MemoryStream();
|
|
var writer = iTextSharp.text.pdf.PdfWriter.GetInstance(doc, output);
|
|
doc.Open();
|
|
bool firstTime = true;
|
|
int ilosc_stron = 0;
|
|
|
|
do
|
|
{
|
|
OpenFileDialog openFileDialog = new OpenFileDialog();
|
|
openFileDialog.Filter = "Image Files|*.JPG";
|
|
DialogResult res = openFileDialog.ShowDialog();
|
|
if (res == DialogResult.OK)
|
|
{
|
|
if (!firstTime) doc.NewPage();
|
|
var img = System.Drawing.Image.FromFile(openFileDialog.FileName);
|
|
if (img != null)
|
|
{
|
|
iTextSharp.text.Rectangle pageSize = null;
|
|
pageSize = new iTextSharp.text.Rectangle(0, 0, img.Width, img.Height);
|
|
|
|
var image = iTextSharp.text.Image.GetInstance(ImageToByteArray(img));
|
|
image.SetAbsolutePosition(0, 0);
|
|
image.ScaleAbsoluteHeight(doc.PageSize.Height);
|
|
image.ScaleAbsoluteWidth(doc.PageSize.Width);
|
|
doc.Add(image);
|
|
firstTime = false;
|
|
ilosc_stron++;
|
|
}
|
|
}
|
|
}
|
|
while (MessageBox.Show("Następna strona", "Następna strona", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes);
|
|
|
|
if (ilosc_stron > 0)
|
|
{
|
|
doc.Close();
|
|
var nazwaDokumentu = KryptonInputBox.Show("Wpisz nazwę dokumentu:", "Nowy dokument", "");
|
|
if (nazwaDokumentu != "")
|
|
{
|
|
DocumentModel docModel = new DocumentModel();
|
|
docModel.TreeId = int.Parse(treeView1.SelectedNode.Name);
|
|
docModel.Name = nazwaDokumentu + ".pdf";
|
|
docModel.Image = output.ToArray();
|
|
output.Close();
|
|
DocumentModel d = AppHelper.GetInstance().putDocument(docModel);
|
|
TreeNode tn = treeView1.SelectedNode;
|
|
bindTreeView();
|
|
treeView1.SelectedNode = treeView1.Nodes.Find(tn.Name, true)[0];
|
|
treeView1.Focus();
|
|
|
|
using (MemoryStream ms = new MemoryStream(d.Image))
|
|
{
|
|
pdfViewer1.Document?.Dispose();
|
|
var pdf = PdfDocument.Load(ms);
|
|
pdfViewer1.Document = pdf;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("Błędna nazwa dokumentu. Dokument nie zapisany!", "Błąd");
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
private void kryptonButton9_Click(object sender, EventArgs e)
|
|
{
|
|
var si = (DocumentModel)listBox1.SelectedItem;
|
|
SaveFileDialog saveFileDialog = new SaveFileDialog();
|
|
saveFileDialog.FileName = si.Name;
|
|
saveFileDialog.Filter = "All|*.*";
|
|
var res = saveFileDialog.ShowDialog();
|
|
if (res == DialogResult.OK)
|
|
{
|
|
var doc = AppHelper.GetInstance().getDocumentById(si.Id);
|
|
File.WriteAllBytes(saveFileDialog.FileName, doc.Image);
|
|
}
|
|
}
|
|
|
|
private void kryptonButton11_Click(object sender, EventArgs e)
|
|
{
|
|
bindTreeView();
|
|
}
|
|
|
|
private void kryptonButton10_Click(object sender, EventArgs e)
|
|
{
|
|
OpenFileDialog openFileDialog = new OpenFileDialog();
|
|
openFileDialog.Filter = "All|*.*";
|
|
openFileDialog.Multiselect = true;
|
|
DialogResult res = openFileDialog.ShowDialog();
|
|
|
|
foreach (var file in openFileDialog.FileNames)
|
|
{
|
|
DocumentModel docModel = new DocumentModel();
|
|
docModel.TreeId = int.Parse(treeView1.SelectedNode.Name);
|
|
docModel.Name = Path.GetFileName(file);
|
|
docModel.Image = File.ReadAllBytes(file);
|
|
DocumentModel d = AppHelper.GetInstance().putDocument(docModel);
|
|
}
|
|
listBox1.Items.Clear();
|
|
int treeId = int.Parse(treeView1.SelectedNode.Name);
|
|
var doc = JsonConvert.DeserializeObject<List<DocumentModel>>(AppHelper.GetInstance().getDocumentsByTreeId(treeId));
|
|
var ds = doc.Where(d => d.TreeId == treeId).ToList();
|
|
foreach (var d in ds)
|
|
{
|
|
listBox1.Items.Add(d);
|
|
}
|
|
kryptonButton1.Enabled = true;
|
|
kryptonButton2.Enabled = true;
|
|
kryptonButton3.Enabled = true;
|
|
kryptonButton6.Enabled = true;
|
|
kryptonButton7.Enabled = true;
|
|
kryptonButton8.Enabled = true;
|
|
kryptonButton4.Enabled = false;
|
|
kryptonButton5.Enabled = false;
|
|
kryptonButton9.Enabled = false;
|
|
kryptonButton10.Enabled = true;
|
|
listBox1.ClearSelected();
|
|
kryptonLabel1.Text = "";
|
|
pdfViewer1.Document?.Dispose();
|
|
var pdf = PdfDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\None.pdf");
|
|
pdfViewer1.Document = pdf;
|
|
|
|
}
|
|
|
|
private void AppForm_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
pdfViewer1.Document?.Dispose();
|
|
File.Delete(Path.GetTempPath() + "\\temp.pdf");
|
|
}
|
|
|
|
private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
|
|
{
|
|
treeView1.DoDragDrop(e.Item, DragDropEffects.Move);
|
|
}
|
|
|
|
private void treeView1_DragEnter(object sender, DragEventArgs e)
|
|
{
|
|
e.Effect = DragDropEffects.Move;
|
|
}
|
|
|
|
private void treeView1_DragDrop(object sender, DragEventArgs e)
|
|
{
|
|
TreeNode aNode;
|
|
if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
|
|
{
|
|
Point apoint;
|
|
TreeNode targetNode;
|
|
apoint = ((ComponentFactory.Krypton.Toolkit.KryptonTreeView)sender).PointToClient(new Point(e.X, e.Y));
|
|
targetNode = ((ComponentFactory.Krypton.Toolkit.KryptonTreeView)sender).GetNodeAt(apoint);
|
|
aNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
|
|
targetNode.Nodes.Add((TreeNode)aNode.Clone());
|
|
targetNode.Expand();
|
|
aNode.Remove();
|
|
}
|
|
}
|
|
}
|
|
}
|