PDF体检报告

Posted 6b23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PDF体检报告相关的知识,希望对你有一定的参考价值。


//Title: 个人健康管理分析报告
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;
using System.Windows.Forms;
using System.Data;
using HMSClientServiceFactory.BASE.HMS;
using Microsoft.Office.Interop.Word;
using PdfiumViewer;
using Syscom.Comm.Utility;
using System.IO;
using System.Drawing;
using HMSClientServiceFactory.BASE.PUB;
using System.Drawing.Imaging;


namespace Syscom.HMS.Client.HMS.RPT
{
    public class HmsRpt1070Client
    {
        IPubServiceManager PUBSM = new PubServiceManager();
        #region 报告打印
        Word.Application WordApp = new Word.Application();
        Word.Document WordDoc = new Word.Document();
        HmsServiceManager hmsService = new HmsServiceManager();

        object Nothing = System.Reflection.Missing.Value;
        private string strMemberNo;
        int TableCount = 2;
        /// <summary>
        /// 打印报告
        /// </summary>
        /// <param name="strRegisterNo">体检号</param>     
        public HmsRpt1070Client(string strMemberNo, DataTable dtItem)
        {
            try
            {
                this.strMemberNo = strMemberNo;
                DataSet dsHms = new DataSet();

                dsHms = hmsService.QueryDataSetBy1070(strMemberNo);
                System.Data.DataTable dtPatient = new System.Data.DataTable();
                //查询客户信息
                dtPatient = dsHms.Tables["HMS_MEMBER"];
                //不同身份调用不同模板
                string filename = System.Windows.Forms.Application.StartupPath + "\RPT\HMSRPT1070.dot";
                try
                {
                    WordDoc = WordApp.Documents.Add(filename);
                    WordDoc = WordApp.ActiveDocument;
                }
                catch (Exception ex)
                {
                    throw (ex);
                }
                if (dtPatient.Rows.Count > 0)
                {
                    #region 模板页签中插入数据
                    //个人信息
                    WordDoc.Bookmarks.get_Item("Name").Range.Text = dtPatient.Rows[0]["PATIENT_NAME"].ToString();
                    WordDoc.Bookmarks.get_Item("Gender").Range.Text = dtPatient.Rows[0]["SEX"].ToString();
                    WordDoc.Bookmarks.get_Item("Birthday").Range.Text = dtPatient.Rows[0]["BIRTHDAY"].ToString();
                    WordDoc.Bookmarks.get_Item("Age").Range.Text = dtPatient.Rows[0]["AGE"].ToString();

                    WordDoc.Bookmarks.get_Item("Tel").Range.Text = dtPatient.Rows[0]["PHONE_NO"].ToString();
                    WordDoc.Bookmarks.get_Item("NurseName").Range.Text = dtPatient.Rows[0]["NURSE_NAME"].ToString();
                    WordDoc.Bookmarks.get_Item("Date").Range.Text = DateTime.Now.ToString("yyyy-MM-dd");

                    WordDoc.Bookmarks.get_Item("PATIENT_NAME").Range.Text = dtPatient.Rows[0]["PATIENT_NAME"].ToString() + (dtPatient.Rows[0]["PATIENT_SEX"].ToString().Trim() == "1" ? "先生" : "女士") + "";

                    #endregion
                    if (dtItem.Rows.Count > 0)
                    {
                        for (int n = 0; n < dtItem.Rows.Count - 1; n++)
                        {
                            CopyTable();
                        }
                        DataTable dtHmsReportMemo = new DataTable("HMS_REPORT_MEMO");
                        dtHmsReportMemo = dsHms.Tables["HMS_REPORT_MEMO"];

                        DataTable dtMemberReport = new DataTable("HMS_MEMBER_REPORT");
                        dtMemberReport = dsHms.Tables["HMS_MEMBER_REPORT"];

                        DataTable dtMemberRecipe = new DataTable("HMS_MEMBER_RECIPE");
                        dtMemberRecipe = dsHms.Tables["HMS_MEMBER_RECIPE"];

                        for (int i = 0; i < dtItem.Rows.Count; i++)
                        {
                            WordDoc.Tables[TableCount].Cell(1, 1).Width = WordDoc.Tables[TableCount].Cell(1, 1).Width - 1;
                            WordDoc.Tables[TableCount].Cell(1, 2).Range.Text = dtItem.Rows[i]["SYS_CODE_NAME"].ToString();
                            WordDoc.Tables[TableCount].Cell(1, 2).Range.Font.Color = WdColor.wdColorBlack;
                            WordDoc.Tables[TableCount].Cell(1, 2).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
                            WordDoc.Tables[TableCount].Cell(1, 2).Range.Font.Bold = 1;
                            WordDoc.Tables[TableCount].Cell(1, 2).Range.Font.Size = 16;

                            int iNewRow = 3;
                            int iCol = 1;

                            if (dtHmsReportMemo.Rows.Count > 0)
                            {
                                DataRow[] dr = dtHmsReportMemo.Select("REPORT_ID = ‘" + dtItem.Rows[i]["SYS_CODE"].ToString().Trim() + "");
                                if (dr.Length > 0)
                                {
                                    WordDoc.Tables[TableCount].Cell(2, 1).Range.Text = dr[0]["MEMO"].ToString();

                                    if (dtMemberReport.Rows.Count > 0)
                                    {
                                        DataRow[] drMemberReport = dtMemberReport.Select("REPORT_ID = ‘" + dr[0]["REPORT_ID"].ToString().Trim() + "");
                                        if (drMemberReport.Length > 0)
                                        {
                                            for (int j = 0; j < drMemberReport.Length; j++)
                                            {
                                                if (j == 0)
                                                {
                                                    WordDoc.Tables[TableCount].Rows[iNewRow].Borders.OutsideLineStyle = WdLineStyle.wdLineStyleSingle;
                                                    WordDoc.Tables[TableCount].Rows[iNewRow].Borders.InsideLineStyle = WdLineStyle.wdLineStyleSingle;
                                                    WordDoc.Content.Tables[TableCount].Rows.Add(ref Nothing);
                                                    iNewRow += 1;
                                                    
                                                }
                                                else
                                                {
                                                    if (j % 3 == 0)
                                                    {
                                                        WordDoc.Content.Tables[TableCount].Rows.Add(ref Nothing);
                                                        WordDoc.Content.Tables[TableCount].Rows.Add(ref Nothing);
                                                        iNewRow += 2;
                                                    }
                                                }
                                                iCol = j % 3 + 1;

                                                WordDoc.Tables[TableCount].Cell(iNewRow - 1, iCol).Range.Text = drMemberReport[j]["REPORT_DATE"].ToString().Trim();
                                                WordDoc.Tables[TableCount].Cell(iNewRow - 1, iCol).Range.Font.Bold = 1;
                                                WordDoc.Tables[TableCount].Rows[iNewRow - 1].Range.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToWin32(Color.FromArgb(204, 154, 255));
                                                WordDoc.Tables[TableCount].Cell(iNewRow - 1, iCol).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                                                WordDoc.Tables[TableCount].Cell(iNewRow - 1, iCol).Range.Font.Size = 12;

                                                WordDoc.Tables[TableCount].Cell(iNewRow, iCol).Range.Text = drMemberReport[j]["REPORT_RESULT"].ToString().Trim();
                                                WordDoc.Tables[TableCount].Cell(iNewRow, iCol).Range.Font.Bold = 0;
                                                WordDoc.Tables[TableCount].Cell(iNewRow, iCol).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
                                                WordDoc.Tables[TableCount].Cell(iNewRow, iCol).Range.Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                                                WordDoc.Tables[TableCount].Cell(iNewRow, iCol).Range.Font.Size = 10;
                                            }
                                        }
                                    }

                                    WordDoc.Content.Tables[TableCount].Rows.Add(ref Nothing);
                                    WordDoc.Tables[TableCount].Cell(iNewRow + 4, 1).Merge(WordDoc.Tables[TableCount].Cell(iNewRow + 4, 3));
                                    WordDoc.Tables[TableCount].Cell(iNewRow + 4, 1).Range.Text = dr[0]["SYS_CODE_NAME"].ToString();
                                    WordDoc.Tables[TableCount].Cell(iNewRow + 4, 1).Range.Font.Color = WdColor.wdColorBlue;
                                    WordDoc.Tables[TableCount].Cell(iNewRow + 4, 1).Range.Font.Bold = 1;
                                    WordDoc.Tables[TableCount].Cell(iNewRow + 4, 1).Range.Font.Size = 12;

                                    WordDoc.Tables[TableCount].Cell(iNewRow + 4, 1).Borders.OutsideLineStyle = WdLineStyle.wdLineStyleNone;
                                    WordDoc.Tables[TableCount].Cell(iNewRow + 4, 1).Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleSingle;

                                    if (dtMemberRecipe.Rows.Count > 0)
                                    {
                                        DataRow[] drMemberRecipe = dtMemberRecipe.Select("RECIPE_TYPE = ‘" + dr[0]["RECIPE_TYPE"].ToString().Trim() + "");
                                        if (drMemberRecipe.Length > 0)
                                        {
                                            WordDoc.Content.Tables[TableCount].Rows.Add(ref Nothing);
                                            WordDoc.Tables[TableCount].Cell(iNewRow + 5, 1).Range.Text = drMemberRecipe[0]["RECIPE_CONTENT"].ToString();
                                            WordDoc.Tables[TableCount].Cell(iNewRow + 5, 1).Range.Font.Color = WdColor.wdColorBlack;
                                            WordDoc.Tables[TableCount].Cell(iNewRow + 5, 1).Range.Font.Size = 10;
                                            WordDoc.Tables[TableCount].Cell(iNewRow + 5, 1).Range.Font.Bold = 0;
                                            WordDoc.Tables[TableCount].Cell(iNewRow + 5, 1).Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleNone;

                                            WordDoc.Content.Tables[TableCount].Rows.Add(ref Nothing);
                                            WordDoc.Tables[TableCount].Cell(iNewRow + 6, 1).Range.Text = drMemberRecipe[0]["RECIPE_NAME"].ToString();
                                            WordDoc.Tables[TableCount].Cell(iNewRow + 6, 1).Range.Font.Bold = 1;
                                            WordDoc.Tables[TableCount].Cell(iNewRow + 6, 1).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;
                                            WordDoc.Tables[TableCount].Cell(iNewRow + 6, 1).Range.Font.Color = WdColor.wdColorBlack;
                                        }
                                    }
                                    else
                                    {
                                        WordDoc.Tables[TableCount].Cell(iNewRow + 4, 1).Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleNone;
                                    }
                                }
                            }
                            TableCount++;
                        }
                    }
                    #region 保存Word
                    SaveFileDialog sfd = new SaveFileDialog();
                    string strFileName = strMemberNo + "_" + DateTime.Now.ToString("yyyyMMddHHmmss");
                    sfd.FileName = strFileName + ".doc";
                    object oMissing = System.Reflection.Missing.Value;
                    object ofilename = sfd.FileName;
                    WordApp.Visible = true;
                    #endregion
                    WordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone;
                    WordDoc.Saved = true;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion
        #region 复制模板
        //复制模板
        private void CopyTable()
        {
            try
            {
                WordDoc.Tables[2].Select();
                WordApp.Selection.Copy();

                object mymessing = System.Reflection.Missing.Value;
                object myunit = Microsoft.Office.Interop.Word.WdUnits.wdStory;
                WordApp.Selection.EndKey(ref myunit, ref mymessing);

                object count = 999999;
                object oMissing = System.Reflection.Missing.Value;
                object WdLine = Microsoft.Office.Interop.Word.WdUnits.wdLine;//换一行;
                WordApp.Selection.MoveDown(ref WdLine, ref count, ref oMissing);//移动焦点
                WordApp.Selection.TypeParagraph();//插入段落

                WordApp.Selection.Paste();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

    }
}

插入书签,合并拆分Word 表格,插入图片,插入PDF,转换PDF

以上是关于PDF体检报告的主要内容,如果未能解决你的问题,请参考以下文章

讲个鬼故事:小灰的体检报告出来了。。。

基于PaddleOCR的体检报告识别

基于PaddleOCR的体检报告识别

电脑使用360安全卫士体检和电脑清理后,福昕PDF编辑器软件就由中文版自动变成了英文版,怎么解决?

星云測试- Android应用深度体检专业平台

sonar报告上传失败 那位大神帮忙弄一下