C# 多页PDF无法在iPad上打开

C# 多页PDF无法在iPad上打开,c#,ios,ipad,pdf,C#,Ios,Ipad,Pdf,我正在处理一个项目,其中我从PSR文件生成PDF文件。如果是一个单独的页面,PDF文件可以正常工作,但是如果它有两个以上的PSR文件,我生成了两个文件,它不会在iPad上打开,在桌面上也可以正常工作 我在这里使用的第三个库工具是“dbatootrack”,我使用的是C# 谁能指导我如何解决这个问题 谢谢, 美国 这就是我如何调整代码使其工作的方式。谢谢你的建议DJ KRAZE foreach (var pdfform in pdfPagesID) { //dbAu

我正在处理一个项目,其中我从PSR文件生成PDF文件。如果是一个单独的页面,PDF文件可以正常工作,但是如果它有两个以上的PSR文件,我生成了两个文件,它不会在iPad上打开,在桌面上也可以正常工作

我在这里使用的第三个库工具是“dbatootrack”,我使用的是C#

谁能指导我如何解决这个问题

谢谢, 美国


这就是我如何调整代码使其工作的方式。谢谢你的建议DJ KRAZE

    foreach (var pdfform in pdfPagesID)
    {
        //dbAutoTrack.PDFWriter.Document objDoc = null;
        //dbAutoTrack.PDFWriter.Page objPage = null;

        objDoc = new dbAutoTrack.PDFWriter.Document();


        pdfPagesID.Clear();
        pdfPagesID = GetSpecPageID(pdfform);

        if (pdfPagesID.Count > 1)
        {
            foreach (var pdfPage in pdfPagesID)
            {
                dbAutoTrack.PDFWriter.Page objPage2 = null;
                var lastItem = pdfPagesID.Last();
                prefixPageID = prefixSpecPageID(pdfPage);
                suffixPageIDPSR = prefixPageID + ".psr";
                if (File.Exists(PSRPath + suffixPageIDPSR))
                {
                    objDs = new CDatasheet(this.PSRPath + suffixPageIDPSR, false);
                    objDs.pdfDbHelper = pdfhelper;
                    //Giving the specformId as SpecFornName
                   pdfFormName = "Form" + pdfform + ".pdf";
                    if (!(pdfPage == pdfPagesID.First()))
                    {

                        objPage2 = objDs.Generate_PDFReport();
                        objDoc.Pages.Add(objPage2);
                    }
                    else
                    {
                        objPage = objDs.Generate_PDFReport();
                        objDoc.Pages.Add(objPage);
                    }
                    if (objPage != null)
                    {
                        if (pdfWithNotePage == true && pdfPage.Equals(lastItem))
                        {
                            objNotePage = objDs.GetNotePage();
                            objDoc.Pages.Add(objPage);
                            objDoc.Pages.Add(objNotePage);

                        }
                        else
                        {

                            //objDoc.Pages.Add(objPage);
                            //objDoc.Pages.Add(objPage2);
                        }
     }
    }
    }
                        fsOutput = new FileStream(TemplatePath + pdfFormName, FileMode.Create, FileAccess.Write);
                        objDoc.Generate(fsOutput);


                     //This region was the problem, disposing the output everytime.
                //Needed it to be included after completion of iteration
                    if (fsOutput != null)
                    {
                        fsOutput.Close();
                        fsOutput.Dispose();
                        fsOutput = null;
                    }
                 }

好的,对于初学者来说,平台之间的差异应该是一个致命的让步。。什么是
IPad与桌面的
OS
,IPad支持.NET框架吗。。我不这么认为,除非根据我的理解,你正在使用虚拟机。。您是否查阅了第三方库支持文档,以了解他们是否有任何C#.NET示例适用于
OS x.xx
版本的IPadFor desktop,我使用的是windows环境,如果一个文件有两个以上的文件,它将不会打开。如果我打开一个文档,它就可以打开。当你有两个或更多文档时,也许你应该调试它,然后逐步检查代码。你显然做错了什么,可能是你正在清除或重置一些你最不希望看到的东西。。我建议你穿过code@DJKRAZE,非常感谢你的意见。这句话“你显然做错了什么,可能是你在清理或重置一些你最意想不到的东西……”被打断了。我回头看了一遍代码,发现在将页面添加到文档后,我正在处理输出。很高兴我指出了不太明显的问题。。这就是调试如此重要的原因
    foreach (var pdfform in pdfPagesID)
    {
        //dbAutoTrack.PDFWriter.Document objDoc = null;
        //dbAutoTrack.PDFWriter.Page objPage = null;

        objDoc = new dbAutoTrack.PDFWriter.Document();


        pdfPagesID.Clear();
        pdfPagesID = GetSpecPageID(pdfform);

        if (pdfPagesID.Count > 1)
        {
            foreach (var pdfPage in pdfPagesID)
            {
                dbAutoTrack.PDFWriter.Page objPage2 = null;
                var lastItem = pdfPagesID.Last();
                prefixPageID = prefixSpecPageID(pdfPage);
                suffixPageIDPSR = prefixPageID + ".psr";
                if (File.Exists(PSRPath + suffixPageIDPSR))
                {
                    objDs = new CDatasheet(this.PSRPath + suffixPageIDPSR, false);
                    objDs.pdfDbHelper = pdfhelper;
                    //Giving the specformId as SpecFornName
                   pdfFormName = "Form" + pdfform + ".pdf";
                    if (!(pdfPage == pdfPagesID.First()))
                    {

                        objPage2 = objDs.Generate_PDFReport();
                        objDoc.Pages.Add(objPage2);
                    }
                    else
                    {
                        objPage = objDs.Generate_PDFReport();
                        objDoc.Pages.Add(objPage);
                    }
                    if (objPage != null)
                    {
                        if (pdfWithNotePage == true && pdfPage.Equals(lastItem))
                        {
                            objNotePage = objDs.GetNotePage();
                            objDoc.Pages.Add(objPage);
                            objDoc.Pages.Add(objNotePage);

                        }
                        else
                        {

                            //objDoc.Pages.Add(objPage);
                            //objDoc.Pages.Add(objPage2);
                        }
     }
    }
    }
                        fsOutput = new FileStream(TemplatePath + pdfFormName, FileMode.Create, FileAccess.Write);
                        objDoc.Generate(fsOutput);


                     //This region was the problem, disposing the output everytime.
                //Needed it to be included after completion of iteration
                    if (fsOutput != null)
                    {
                        fsOutput.Close();
                        fsOutput.Dispose();
                        fsOutput = null;
                    }
                 }