首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Multipage PDF不能在iPad上打开

Multipage PDF不能在iPad上打开
EN

Stack Overflow用户
提问于 2014-11-14 02:06:38
回答 1查看 164关注 0票数 0

我正在处理一个项目,在该项目中,我从PSR文件生成PDF文件。如果它是一个单独的页面,PDF文件工作得很好,但如果它有两个以上的PSR文件,并且我生成了两个文件,它不能在iPad上打开,并且在桌面上工作良好。

我在这里使用的第三个库工具是'dbatuotrack‘,我使用的是C#。

有人能指导我如何解决这个问题吗?

谢谢,S。

代码语言:javascript
复制
        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);


                        }
                        if (fsOutput != null)
                        {
                            fsOutput.Close();
                            fsOutput.Dispose();
                            fsOutput = null;
                        }
                    }

                }
                objDoc = null;
                objPage = null;
            }
EN

回答 1

Stack Overflow用户

发布于 2014-11-14 05:52:22

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

代码语言:javascript
复制
    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;
                    }
                 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26915549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档