예제 #1
0
        public void MakePdf_BookNameIsChinese_OutputsPdf()
        {
            var maker = new PdfMaker();

            using (var input = TempFile.WithFilename("北京.htm"))
                using (var output = TempFile.WithFilename("北京.pdf"))
                {
                    File.WriteAllText(input.Path, "<html><body>北京</body></html>");
                    File.Delete(output.Path);
                    RunMakePdf((worker, args, owner) =>
                               maker.MakePdf(input.Path, output.Path, "A5", false, PublishModel.BookletLayoutMethod.SideFold, PublishModel.BookletPortions.BookletPages, worker, args, owner));
                    //we don't actually have a way of knowing it did a booklet
                    Assert.IsTrue(File.Exists(output.Path));
                }

            using (var input = TempFile.WithFilename("എന്റെ ബുക്ക്.htm"))
                using (var output = TempFile.WithFilename("എന്റെ ബുക്ക്.pdf"))
                {
                    File.WriteAllText(input.Path, "<html><body>എന്റെ ബുക്ക്</body></html>");
                    File.Delete(output.Path);
                    RunMakePdf((worker, args, owner) =>
                               maker.MakePdf(input.Path, output.Path, "A5", false, PublishModel.BookletLayoutMethod.SideFold, PublishModel.BookletPortions.BookletPages, worker, args, owner));
                    //we don't actually have a way of knowing it did a booklet
                    Assert.IsTrue(File.Exists(output.Path));
                }
        }
예제 #2
0
        /// <summary>
        /// Runs PdfMaker.MakePdf() with the desired arguments.  Note that the implementation (as of March 2015)
        /// uses an external program to generate the PDF from the HTML file, so it doesn't need to be run on
        /// a background thread.  The process includes a (possibly overgenerous) timeout, so we don't try to
        /// impose one here.
        /// </summary>
        /// <remarks>
        /// Running this on a background thread would be okay, except that on Linux, the interaction between
        /// Mono and NUnit and the Bloom method result in the BackgroundWorker.RunWorkerCompleted event
        /// never being fired if tests other than those in this file are run along with these tests.  This is
        /// almost certainly an obscure bug in Mono.  Running the method directly as we do here sidesteps that
        /// problem.  (See https://jira.sil.org/browse/BL-831.)
        /// </remarks>
        void RunMakePdf(PdfMaker maker, string input, string output, string paperSize, bool landscape, bool saveMemoryMode, bool rightToLeft,
                        PublishModel.BookletLayoutMethod layout, PublishModel.BookletPortions portion)
        {
            // Passing in a DoWorkEventArgs object prevents a possible exception being thrown.  Which may not
            // really matter much in the test situation since NUnit would catch the exception.  But I'd rather
            // have a nice test failure message than an unexpected exception caught message.
            var eventArgs = new DoWorkEventArgs(null);

            maker.MakePdf(input, output, paperSize, landscape, saveMemoryMode, rightToLeft, layout, portion, null, eventArgs, null);
        }
예제 #3
0
        public void MakePdf_BookStyleIsBooklet_OutputsPdf()
        {
            var maker = new PdfMaker();

            using (var input = TempFile.WithExtension("htm"))
                using (var output = new TempFile())
                {
                    File.WriteAllText(input.Path, "<html><body>Hello</body></html>");
                    File.Delete(output.Path);
                    maker.MakePdf(input.Path, output.Path, "A5", false, PublishModel.BookletLayoutMethod.SideFold, PublishModel.BookletPortions.BookletPages, new DoWorkEventArgs(null));
                    //we don't actually have a way of knowing it did a booklet
                    Assert.IsTrue(File.Exists(output.Path));
                }
        }
예제 #4
0
        public void MakePdf_BookStyleIsNone_OutputsPdf()
        {
            var maker = new PdfMaker();

            using (var input = TempFile.WithExtension("htm"))
                using (var output = new TempFile())
                {
                    File.WriteAllText(input.Path, "<html><body>Hello</body></html>");
                    File.Delete(output.Path);
                    RunMakePdf((worker, args, owner) =>
                               maker.MakePdf(input.Path, output.Path, "a5", false, PublishModel.BookletLayoutMethod.SideFold,
                                             PublishModel.BookletPortions.AllPagesNoBooklet, worker, args, owner));
                    //we don't actually have a way of knowing it did a booklet
                    Assert.IsTrue(File.Exists(output.Path));
                }
        }
예제 #5
0
        /// <summary>
        /// Runs PdfMaker.MakePdf() with the desired arguments.  Note that the implementation (as of March 2015)
        /// uses an external program to generate the PDF from the HTML file, so it doesn't need to be run on
        /// a background thread.  The process includes a (possibly overgenerous) timeout, so we don't try to
        /// impose one here.
        /// </summary>
        /// <remarks>
        /// Running this on a background thread would be okay, except that on Linux, the interaction between
        /// Mono and NUnit and the Bloom method result in the BackgroundWorker.RunWorkerCompleted event
        /// never being fired if tests other than those in this file are run along with these tests.  This is
        /// almost certainly an obscure bug in Mono.  Running the method directly as we do here sidesteps that
        /// problem.  (See https://jira.sil.org/browse/BL-831.)
        /// </remarks>
        void RunMakePdf(PdfMaker maker, string input, string output, string paperSize, bool landscape, bool saveMemoryMode, bool rightToLeft,
                        PublishModel.BookletLayoutMethod layout, PublishModel.BookletPortions portion)
        {
            // Passing in a DoWorkEventArgs object prevents a possible exception being thrown.  Which may not
            // really matter much in the test situation since NUnit would catch the exception.  But I'd rather
            // have a nice test failure message than an unexpected exception caught message.
            var eventArgs = new DoWorkEventArgs(null);

            maker.MakePdf(new PdfMakingSpecs()
            {
                InputHtmlPath             = input,
                OutputPdfPath             = output,
                PaperSizeName             = paperSize,
                Landscape                 = landscape,
                SaveMemoryMode            = saveMemoryMode,
                LayoutPagesForRightToLeft = rightToLeft,
                BooketLayoutMethod        = layout,
                BookletPortion            = portion
            }, null, eventArgs, null);
        }