コード例 #1
0
        static void PDFEmbed(string file, string text)
        {
            var tmpdir = Path.GetTempPath();
            var tmp    = TempFilesDeleter.GetTempFileName(".pdf", tmpdir);

            tmp = Path.Combine(tmpdir, tmp);
            using (var tmp_deleter = new TempFilesDeleter(tmpdir)) {
                tmp_deleter.AddFile(tmp);
                using (var mupdf = new MuPDF(mudraw)) {
                    var doc = mupdf.Execute <int>("open_document", file);
                    if (doc == 0)
                    {
                        return;
                    }
                    var page = mupdf.Execute <int>("load_page", doc, 0);
                    if (page == 0)
                    {
                        return;
                    }
                    var annot = mupdf.Execute <int>("create_annot", page, "Text");
                    if (annot == 0)
                    {
                        return;
                    }
                    mupdf.Execute("set_annot_contents", annot, ChangeReturnCode(PDFsrcHead + System.Environment.NewLine + text, "\n"));
                    mupdf.Execute("set_annot_flag", annot, 35);
                    mupdf.Execute("write_document", doc, tmp);
                }
                if (File.Exists(tmp))
                {
                    File.Delete(file);
                    File.Move(tmp, file);
                }
            }
        }
コード例 #2
0
        static string PDFRead(string file)
        {
            var srcHead = PDFsrcHead + System.Environment.NewLine;

            using (var mupdf = new MuPDF(mudraw)) {
                var doc = mupdf.Execute <int>("open_document", file);
                if (doc == 0)
                {
                    return(null);
                }
                var page = mupdf.Execute <int>("load_page", doc, 0);
                if (page == 0)
                {
                    return(null);
                }
                var annot = mupdf.Execute <int>("first_annot", page);
                while (annot != 0)
                {
                    var rect = mupdf.Execute <BoundingBox>("bound_annot", annot);
                    if (rect.Width == 0 && rect.Height == 0)
                    {
                        if (mupdf.Execute <string>("annot_type", annot) == "Text")
                        {
                            var text = mupdf.Execute <string>("annot_contents", annot);
                            text = ChangeReturnCode(text);
                            if (text.StartsWith(srcHead))
                            {
                                return(text.Substring(srcHead.Length));
                            }
                        }
                    }
                    annot = mupdf.Execute <int>("next_annot", annot);
                }
            }
            return(null);
        }