Convert() public method

public Convert ( ) : bool
return bool
Exemplo n.º 1
0
        Converter converter = null;// 実行中でなければnull
        private void convertWorker_DoWork(object sender, DoWorkEventArgs e) {
            Properties.Settings.SetCurrentLanguage();
            try {
                Directory.CreateDirectory(Path.GetTempPath());
            }
            catch(Exception) {
                MessageBox.Show(String.Format(Properties.Resources.FAIL_TMPFOLDER, Path.GetTempPath()));
                return;
            }

            if(FirstFiles != null) {
                for(int i = 0 ; i < FirstFiles.Count / 2 ; ++i) {
                    string file = FirstFiles[2 * i];
                    string workdir;
                    if (Properties.Settings.Default.workingDirectory == "file") workdir = Path.GetDirectoryName(file);
                    else if (Properties.Settings.Default.workingDirectory == "current") workdir = Directory.GetCurrentDirectory();
                    else workdir = Path.GetTempPath();
                    string tmppath;
                    try {
                        string inputextension = Path.GetExtension(file);
                        tmppath = Path.Combine(workdir,TempFilesDeleter.GetTempFileName(inputextension));
                        File.Delete(tmppath);
                        File.Copy(file, tmppath, true);
                    }
                    catch(Exception) {
                        MessageBox.Show(String.Format(Properties.Resources.FAIL_TMPFILE, workdir));
                        continue;
                    }
                    var output = Path.GetFullPath(FirstFiles[2 * i + 1]);
                    converter = new Converter(this, tmppath, output);
                    converter.Convert();
                }
                FirstFiles = null;
                converter = null;
                return;
            }

            try {
                string outputFilePath = outputFileNameTextBox.Text;

                if(InputFromFileRadioButton.Checked) {
                    string inputTeXFilePath = inputFileNameTextBox.Text;
                    if(!File.Exists(inputTeXFilePath)) {
                        MessageBox.Show(String.Format(Properties.Resources.NOTEXIST, inputTeXFilePath), Properties.Resources.ERROR, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }

                string extension = Path.GetExtension(outputFilePath).ToLower();
                string tmpTeXFileName;
                string tmpDir;
                if (InputFromFileRadioButton.Checked) {
                    if (Properties.Settings.Default.workingDirectory == "file") tmpDir = Path.GetDirectoryName(inputFileNameTextBox.Text);
                    else if (Properties.Settings.Default.workingDirectory == "current") tmpDir = Directory.GetCurrentDirectory();
                    else tmpDir = Path.GetTempPath();
                    tmpTeXFileName = TempFilesDeleter.GetTempFileName(Path.GetExtension(inputFileNameTextBox.Text), tmpDir);
                }else{
                    if (Properties.Settings.Default.workingDirectory == "current") tmpDir = Directory.GetCurrentDirectory();
                    else tmpDir = Path.GetTempPath();
                    tmpTeXFileName = TempFilesDeleter.GetTempFileName();
                }

                if(tmpTeXFileName == null) {
                    MessageBox.Show(String.Format(Properties.Resources.FAIL_TMPFILE, tmpDir));
                    return;
                }
                string tmpFileBaseName = Path.GetFileNameWithoutExtension(tmpTeXFileName);

                using(converter = new Converter(this, Path.Combine(tmpDir, tmpTeXFileName), outputFileNameTextBox.Text)) {
                    if(!converter.CheckFormat()) return;
                    if(!converter.CheckInputFormat()) return;

                    #region TeX ソースファイルの準備
                    // 外部ファイルから入力する場合はテンポラリディレクトリにコピー
                    if(InputFromFileRadioButton.Checked) {
                        string inputTeXFilePath = inputFileNameTextBox.Text;
                        string tmpfile = Path.Combine(tmpDir, tmpTeXFileName);
                        File.Copy(inputTeXFilePath, tmpfile, true);
                        // 読み取り専用の場合解除しておく(後でFile.Deleteに失敗するため)。
                        (new FileInfo(tmpfile)).Attributes = FileAttributes.Normal;
                        converter.AddInputPath(Path.GetDirectoryName(inputTeXFilePath));
                    }

                    // 直接入力の場合 tex ソースを出力
                    if(InputFromTextboxRadioButton.Checked) {
                        using(StreamWriter sw = new StreamWriter(Path.Combine(tmpDir, tmpTeXFileName), false, Converter.GetInputEncoding())) {
                            try {
                                TeXSource.WriteTeXSourceFile(sw, myPreambleForm.PreambleTextBox.Text, sourceTextBox.Text);
                            }
                            catch { }
                        }
                    }
                    #endregion

                    if(converter.Convert()) {
                        if(Properties.Settings.Default.setFileToClipBoard) {
                            if(converter.OutputFileNames.Count > 0) {
                                Invoke(new Action(() => {
                                    var flist = new System.Collections.Specialized.StringCollection();
                                    foreach(var f in converter.OutputFileNames) flist.Add(f);
                                    Clipboard.SetFileDropList(flist);
                                }));
                            }
                        }
                    }
                }
            }
            finally {
                converter = null;
            }
        }
Exemplo n.º 2
0
 void doGenerateOneTest(string inputfile, string outputfile) { 
     BeforeTest();
     if(!Path.IsPathRooted(inputfile))inputfile = Path.Combine(OutputDir,inputfile);
     string tempfile = Path.Combine(WorkDir, Path.GetFileName(inputfile));
     File.Copy(inputfile, tempfile, true);
     if(!Path.IsPathRooted(outputfile))outputfile = Path.Combine(OutputDir,outputfile);
     using(converter = new Converter(controller, tempfile, outputfile)) {
         converter.Convert();
         Assert.IsTrue(File.Exists(outputfile) || File.Exists(Path.Combine(Path.GetDirectoryName(outputfile),Path.GetFileNameWithoutExtension(outputfile) + "-1" + Path.GetExtension(outputfile))));
     }
     AfterTest();
 }
Exemplo n.º 3
0
        // CUIモード
        static int CUIExec(bool q, List<string> files) {
            IOutputController Output = new CUIOutput(q);
            if (files.Count == 0) {
                Console.WriteLine(Properties.Resources.NOINPUTFILE);
                return -5;
            }
            try {
                Directory.CreateDirectory(Path.GetTempPath());
            }
            catch (Exception) {
                Console.WriteLine(String.Format(Properties.Resources.FAIL_TMPFOLDER, Path.GetTempPath()));
                return -7;
            }

            int failnum = 0;

            var outFiles = new System.Collections.Specialized.StringCollection();
            for (int i = 0; i < files.Count / 2; ++i) {
                string file = Path.GetFullPath(files[2 * i]);
                string dir;
                if (Properties.Settings.Default.workingDirectory == "file") dir = Path.GetDirectoryName(file);
                else if (Properties.Settings.Default.workingDirectory == "current") dir = Directory.GetCurrentDirectory();
                else dir = Path.GetTempPath();
                string tmpTeXFileName = TempFilesDeleter.GetTempFileName(Path.GetExtension(file), dir);
                if (tmpTeXFileName == null) {
                    Console.WriteLine(String.Format(Properties.Resources.FAIL_TMPFILE, Path.GetTempPath()));
                    return -6;
                }
                tmpTeXFileName = Path.Combine(dir, tmpTeXFileName);
                // 一時フォルダにコピー
                File.Copy(file, tmpTeXFileName, true);
                (new FileInfo(tmpTeXFileName)).Attributes = FileAttributes.Normal;
                var output = Path.GetFullPath(files[2 * i + 1]);
                // 変換!
                try {
                    using (var converter = new Converter(Output, tmpTeXFileName, output)) {
                        converter.AddInputPath(Path.GetDirectoryName(file));
                        if (!converter.Convert()) ++failnum;
                        else outFiles.AddRange(converter.OutputFileNames.ToArray());
                    }
                    if (Properties.Settings.Default.setFileToClipBoard) Clipboard.SetFileDropList(outFiles);
                }
                catch (Exception e) { Console.WriteLine(e.Message); }
            }
            return failnum;
        }
Exemplo n.º 4
0
        void doGenerateTest(string source, string output, string[] exts) {
            Tuple<List<Size>, List<Size>> expected = null;
            var pdf = "dvi2pdf.pdf";
            using (var fs = new StreamWriter(Path.Combine(WorkDir, testfile + ".tex"))) {
                fs.Write(source);
            }
            using (converter = new Converter(controller, Path.Combine(WorkDir, testfile + ".tex"), Path.Combine(OutputDir, testfile + "-" + output + ".pdf"))) {
                tex2dvi_test(testfile + ".tex");
                dvi2pdf_test(testfile + ".dvi");
                var pageref = new ByRefType(typeof(int));
                var versionref = new ByRefType(typeof(int));
                CallMethod(converter, "pdfinfo", Path.Combine(OutputDir, pdf), pageref, versionref);
                int page = (int)pageref.val, version = (int)versionref.val;
                if (Settings.Default.keepPageSize) {
                    expected = new Tuple<List<Size>, List<Size>>(
                        GetPDFBox(pdf, Enumerable.Range(1, page).ToList(), false),
                        GetPDFBox(pdf, Enumerable.Range(1, page).ToList(), true));
                } else {
                    expected = new Tuple<List<Size>, List<Size>>(
                        GetPDFBB(pdf, 1, page, false),
                        GetPDFBB(pdf, 1, page, true));
                }
                File.Delete(Path.Combine(WorkDir, pdf));
                File.Move(Path.Combine(OutputDir,pdf),Path.Combine(WorkDir,pdf));
            }
            foreach (var ext in exts) {
                File.Copy(Path.Combine(WorkDir, pdf), Path.Combine(WorkDir, testfile + ".pdf"), true);
                using (converter = new Converter(controller, Path.Combine(WorkDir, testfile + ".pdf"), Path.Combine(OutputDir, testfile + "-" + output + ext))) {
                    converter.Convert();
                    if (expected.Item1.Count == 1 || Settings.Default.mergeOutputFiles) {
                        Assert.IsTrue(File.Exists(Path.Combine(OutputDir, testfile + "-" + output + ext)));
                    } else {
                        bool widthpos = (Settings.Default.leftMargin + Settings.Default.rightMargin > 0);
                        bool heightpos = (Settings.Default.topMargin + Settings.Default.bottomMargin > 0);
                        for (int i = 0; i < expected.Item1.Count; ++i) {
                            if ((expected.Item1[i].width != 0 || widthpos) && (expected.Item1[i].height != 0 || heightpos)) {
                                Assert.IsTrue(File.Exists(Path.Combine(OutputDir, testfile + "-" + output + "-" + (i + 1).ToString() + ext)));
                            } else {
                                Assert.IsFalse(File.Exists(Path.Combine(OutputDir, testfile + "-" + output + "-" + (i + 1).ToString() + ext)));
                            }
                        }
                    }

                }
            }
            File.Delete(Path.Combine(WorkDir,pdf));
        }