You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
4.1 KiB
C#
130 lines
4.1 KiB
C#
using PdfSharpCore.Drawing;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Shapes;
|
|
using PdfiumViewer;
|
|
|
|
namespace XGLFinishPro.Views
|
|
{
|
|
/// <summary>
|
|
/// FlowInfoWin.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class SopInfoWin : Window
|
|
{
|
|
DataTable _dt;
|
|
Image imgSop = new Image();
|
|
private System.Windows.Forms.WebBrowser webBrowser;
|
|
|
|
public SopInfoWin()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
public SopInfoWin(DataTable dt)
|
|
{
|
|
InitializeComponent();
|
|
_dt = dt;
|
|
}
|
|
private void Back_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
|
|
|
|
private void Window_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
this.WindowState = WindowState.Maximized;
|
|
if (_dt == null || _dt.Rows.Count == 0) return;
|
|
|
|
string address = _dt.Rows[0][0].ToString();
|
|
if (address.ToLower().Contains(".png") || address.ToLower().Contains(".jpg"))
|
|
{
|
|
windowsFormsHost.Visibility = Visibility.Collapsed;
|
|
pdfViewer.Visible = false;
|
|
System.Windows.Media.Imaging.BitmapImage src = new System.Windows.Media.Imaging.BitmapImage();
|
|
src.BeginInit();
|
|
src.UriSource = new Uri(address, UriKind.Relative);
|
|
src.CacheOption = System.Windows.Media.Imaging.BitmapCacheOption.OnLoad;
|
|
src.EndInit();
|
|
imgSop.Stretch = System.Windows.Media.Stretch.Fill;
|
|
imgSop.Source = src;
|
|
|
|
Window2.Content = new Frame
|
|
{
|
|
Content = imgSop
|
|
};
|
|
|
|
}
|
|
if (address.ToLower().Contains(".doc") || address.ToLower().Contains(".docx") || address.ToLower().Contains(".xls") || address.ToLower().Contains(".xlxs"))
|
|
{
|
|
imgSop.Visibility = Visibility.Collapsed;
|
|
pdfViewer.Visible = false;
|
|
windowsFormsHost.Visibility = Visibility.Visible;
|
|
InitializeOfficeViewer(address);
|
|
}
|
|
if (address.ToLower().Contains(".pdf"))
|
|
{
|
|
windowsFormsHost.Visibility = Visibility.Collapsed;
|
|
imgSop.Visibility = Visibility.Collapsed;
|
|
pdfViewer.Visible = true;
|
|
LoadPdfFile(address);
|
|
}
|
|
}
|
|
private void LoadPdfFile(string filePath)
|
|
{
|
|
try
|
|
{
|
|
PdfDocument pdfDocument = PdfDocument.Load(filePath);
|
|
|
|
pdfViewer.Document = pdfDocument;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// 处理加载 PDF 文件的异常
|
|
System.Windows.MessageBox.Show("无法加载 PDF 文件:" + ex.Message);
|
|
}
|
|
}
|
|
|
|
private void InitializeOfficeViewer(string filePath)
|
|
{
|
|
webBrowser = new System.Windows.Forms.WebBrowser();
|
|
|
|
// Add WebBrowser control to WindowsFormsHost
|
|
windowsFormsHost.Child = webBrowser;
|
|
|
|
// Load and display the Office document
|
|
LoadOfficeDocument("path_to_your_office_document.docx");
|
|
}
|
|
|
|
private void LoadOfficeDocument(string filePath)
|
|
{
|
|
try
|
|
{
|
|
webBrowser.Navigate(filePath);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
System.Windows.MessageBox.Show($"Error loading Office document: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void dgFlow_LoadingRow(object sender, DataGridRowEventArgs e)
|
|
{
|
|
e.Row.Header = (e.Row.GetIndex() + 1).ToString();
|
|
}
|
|
}
|
|
}
|