Beispiel #1
0
        static void Main(string[] args)
        {
            if (args == null || args.Length == 0)
            {
                System.Console.Write("cannot find args");
                return;
            }
            string atgements = args[0];

            //  string atgements = "Ref,1,Crystal_OSC_GetTab1.rpt|OSC_Proto Summary.rdlx|OSC_First_Offline_Report.rdlx,21836,,PLMDatabase";
            //HybridReportEngine "Ref# 21836 PDP Test 1,1,Crystal_OSC_GetTab1.rpt^21836,,PLMDatabase"


            string[] inPutPara = atgements.Split(',');
            if (inPutPara.Length != 5)
            {
                return;
            }


            Application_Start();
            ReportJobDesc aReportJobDesc = new ReportJobDesc();

            aReportJobDesc.ReportJobName     = inPutPara[0];
            aReportJobDesc.UId               = ControlTypeValueConverter.ConvertValueToInt(inPutPara[1]);
            aReportJobDesc.AllReportFileNmae = inPutPara[2];

            aReportJobDesc.PdmRequestRegisterID = inPutPara[3];
            aReportJobDesc.DataSourceType       = inPutPara[4];
            aReportJobDesc.MainReferenceID      = inPutPara[5];
            aReportJobDesc.MasterReferenceID    = inPutPara[6];



            ReportJobManagement.PrintUserReportJob(aReportJobDesc);

            //  File.WriteAllLines("c:\\Test.txt", new string[] { atgements });
        }
//	Teckpack Print
//http://localhost/ReportPublishCrystal/ReportPdfPrint.aspx?ReportName=2^4489&uid=66e7fed1-1dfc-4003-89ad-f0831a0b4138&MainReferenceID=4489&ReportDataSourceType=PLMDatabase



        private void PrintUserReaTimeReport(int?aUId, string mutipleReportFiles, string PdmRequestRegisterID, string dataSourceType, string mainreferenceID, string masterReferenceId, string reportBatchNumber)
        {
            //allReportFileNmae=ReportName=Crystal_OSC_GetTab1.rpt^21836|OSC_Proto Summary.rdlx^21863
            if (mutipleReportFiles != string.Empty)
            {
                // only create once !!

                List <Stream> pdfFileStream = new List <Stream>();


                // it is batch print
                if (!string.IsNullOrWhiteSpace(reportBatchNumber))
                {
                    List <string> requestRegistIds = DDSetup.GetPdmRequestRegisterIdsByBatchNimber(reportBatchNumber);

                    foreach (string requestRegisterID in requestRegistIds)
                    {
                        // only for single report !!
                        string singleReportId = mutipleReportFiles;

                        List <Stream> pdfFileStreamFromSearchView = PrintSearchViewPdf(aUId, singleReportId, requestRegisterID, dataSourceType, mainreferenceID, masterReferenceId);

                        pdfFileStream.AddRange(pdfFileStreamFromSearchView);
                    }
                }
                else                 // it is NOT BATCH print, need to process singe request
                {
                    if (string.IsNullOrWhiteSpace(PdmRequestRegisterID))
                    {
                        List <Stream> pdfFileStreamTeckpacks = PrintTechPackPdf(aUId, mutipleReportFiles, string.Empty, dataSourceType, mainreferenceID, masterReferenceId);

                        pdfFileStream.AddRange(pdfFileStreamTeckpacks);
                    }
                    else                     // it is searchView print Calls  for each single request PdmRequestRegisterID
                    {
                        string singleReportId = mutipleReportFiles;

                        List <Stream> pdfFileStreamFromSearchView = PrintSearchViewPdf(aUId, singleReportId, PdmRequestRegisterID, dataSourceType, mainreferenceID, masterReferenceId);

                        pdfFileStream.AddRange(pdfFileStreamFromSearchView);
                    }
                }



                using (PdfDocument outputPdfDocument = new PdfDocument())
                {
                    try
                    {
                        foreach (Stream stream in pdfFileStream)
                        {
                            // Open the document to import pages from it.
                            if (stream.Length > 0)
                            {
                                using (PdfDocument inputDocument = PdfReader.Open(stream, PdfDocumentOpenMode.Import))
                                {
                                    // Iterate pages
                                    int count = inputDocument.PageCount;
                                    for (int idx = 0; idx < count; idx++)
                                    {
                                        // Get the page from the external document...
                                        PdfPage page = inputDocument.Pages[idx];
                                        // ...and add it to the output document.
                                        outputPdfDocument.AddPage(page);
                                    }
                                    stream.Close();
                                    stream.Dispose();
                                }
                            }
                        }

                        ApplicationLog.WriteError("IsReportCompressionActivate:" + DDSetup.ReorptSetup.IsReportCompressionActivate);

                        if (DDSetup.ReorptSetup.IsReportCompressionActivate)
                        {
                            string fileID         = Guid.NewGuid().ToString();
                            string FileNameOrigin = DDSetup.ReorptSetup.ReportPdfCompressPath + "Origin_" + fileID + ".pdf";
                            outputPdfDocument.Save(FileNameOrigin);

                            string FileNameDestination = DDSetup.ReorptSetup.ReportPdfCompressPath + "Dest_" + fileID + ".pdf";
                            ReportJobManagement.PdfCompression(FileNameOrigin, FileNameDestination);
                            File.Delete(FileNameOrigin);
                            OutputPdfFile(FileNameDestination);
                        }
                        else                         // need to compress PDF
                        {
                            MemoryStream memoStream = new MemoryStream();

                            outputPdfDocument.Save(memoStream, false);
                            OutPutResponse(memoStream);
                        }
                    }
                    catch (Exception ex)
                    {
                        Response.Write("Print pdf Failed" + ex.ToString());
                    }
                }

                // need to dispsoe output to release memeory
                //  outputPdfDocument.Dispose();
                // need to dispost
            }
        }
Beispiel #3
0
        private void PrintUserReaTimeReport(string aUId, string allReportFileNmae, string PdmRequestRegisterID, string dataSourceType, string mainreferenceID, string masterReferenceId)
        {
            //allReportFileNmae=ReportName=Crystal_OSC_GetTab1.rpt^21836|OSC_Proto Summary.rdlx^21863
            if (allReportFileNmae != string.Empty)
            {
                // only create once !!

                string[] reportnames = allReportFileNmae.Split('|');

                List <KeyValuePair <string, string> > mutipleReportAndReference = new List <KeyValuePair <string, string> >();

                List <Stream> pdfFileStream = new List <Stream>();

                foreach (String reportFileNameWithRef in reportnames)
                {
                    string [] reportNameAndRef = reportFileNameWithRef.Split('^');
                    if (reportNameAndRef.Length != 2)
                    {
                        continue;
                    }

                    string reportFileName = reportNameAndRef[0];
                    string reportRefId    = reportNameAndRef[1];


                    // Cyrstal report
                    if (reportFileName.EndsWith(".rpt") || reportFileName.EndsWith(".RPT"))
                    {
                        Stream result = CystalReportExport.GetCrystalPdfStream(reportFileName, aUId, reportRefId, PdmRequestRegisterID, dataSourceType, mainreferenceID, masterReferenceId);
                        if (result != null)
                        {
                            pdfFileStream.Add(result);
                        }
                    }
                    // Data Dynamics
                    else if (reportFileName.EndsWith(".rdlx") || reportFileName.EndsWith(".RDLX"))
                    {
                        Stream result = DataDynamicsExport.GetDataDynamicPdfStream(reportFileName, aUId, reportRefId, PdmRequestRegisterID, dataSourceType, mainreferenceID, masterReferenceId);

                        if (result != null)
                        {
                            pdfFileStream.Add(result);
                        }
                    }
                }


                using (PdfDocument outputPdfDocument = new PdfDocument())
                {
                    foreach (Stream stream in pdfFileStream)
                    {
                        // Open the document to import pages from it.
                        if (stream.Length > 0)
                        {
                            using (PdfDocument inputDocument = PdfReader.Open(stream, PdfDocumentOpenMode.Import))
                            {
                                // Iterate pages
                                int count = inputDocument.PageCount;
                                for (int idx = 0; idx < count; idx++)
                                {
                                    // Get the page from the external document...
                                    PdfPage page = inputDocument.Pages[idx];
                                    // ...and add it to the output document.
                                    outputPdfDocument.AddPage(page);
                                }
                                stream.Close();
                                stream.Dispose();
                            }
                        }
                    }

                    if (DDSetup.ReorptSetup.IsReportCompressionActivate)
                    {
                        string fileID         = Guid.NewGuid().ToString();
                        string FileNameOrigin = DDSetup.ReorptSetup.ReportPdfCompressPath + "Origin_" + fileID + ".pdf";
                        outputPdfDocument.Save(FileNameOrigin);

                        string FileNameDestination = DDSetup.ReorptSetup.ReportPdfCompressPath + "Dest_" + fileID + ".pdf";
                        ReportJobManagement.PdfCompression(FileNameOrigin, FileNameDestination);
                        File.Delete(FileNameOrigin);
                        OutputPdfFile(FileNameDestination);
                    }
                    else // need to compress PDF
                    {
                        MemoryStream memoStream = new MemoryStream();

                        outputPdfDocument.Save(memoStream, false);
                        OutPutResponse(memoStream);
                    }
                }

                // need to dispsoe output to release memeory
                //  outputPdfDocument.Dispose();
                // need to dispost
            }
        }