private void PDFExportPage(string basedName, Data.ONPage page)
        {
            if (page == null)
            {
                throw new ArgumentNullException("page");
            }

            string fileName = Path.Combine(basedName, page.ID);

            fileName        += ".pdf";
            page.PDFFilePath = fileName;

            if (File.Exists(fileName))
            {
                if (File.GetCreationTime(fileName) == page.LastModifiedTime)
                {
                    // this page is not modified since last update
                    return;
                }
                else
                {
                    // delete existing file
                    File.Delete(fileName);
                }
            }
            Log.Verbose(string.Format("Exporting page [{0}] to PDF", page.Name));
            OneNoteApplication.Publish(page.ID, fileName, OneNote.PublishFormat.pfPDF, string.Empty);
            File.SetCreationTime(fileName, page.LastModifiedTime);
            File.SetLastWriteTime(fileName, page.LastModifiedTime);
        }
        private void PDFCombinePage(PdfOutline parent,
                                    Data.ONPage page)
        {
            if (page == null)
            {
                throw new ArgumentNullException("page");
            }

            PdfReader reader = new PdfReader(page.PDFFilePath);

            Log.Information(string.Format("Import file {0}", page.PDFFilePath));

            // we retrieve the total number of pages

            int             n  = reader.NumberOfPages;
            PdfContentByte  cb = pdfWriter.DirectContent;
            PdfImportedPage impportPage;
            int             rotation;
            int             i = 0;

            while (i < n)
            {
                i++;
                pdfDocument.SetPageSize(reader.GetPageSizeWithRotation(i));
                pdfDocument.NewPage();
                impportPage = pdfWriter.GetImportedPage(reader, i);
                rotation    = reader.GetPageRotation(i);
                if (rotation == 90 || rotation == 270)
                {
                    cb.AddTemplate(impportPage, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(i).Height);
                }
                else
                {
                    cb.AddTemplate(impportPage, 1f, 0, 0, 1f, 0, 0);
                }
                if (i == 1)
                {
                    // set outline action at first page
                    PdfAction  action   = PdfAction.GotoLocalPage(pdfWriter.CurrentPageNumber, new PdfDestination(PdfDestination.FITH, 806), pdfWriter);
                    PdfOutline gotoPage = new PdfOutline(parent, action, page.Name);
                    //TODO: fix this // pdfWriter.DirectContent.AddOutline(gotoPage,gotoPage.Title);
                }
            }
            pdfWriter.FreeReader(reader);
        }