public PDFView () { BackgroundColor = UIColor.White; //create a CGPDFDocument from file.pdf included in the main bundle pdfDoc = CGPDFDocument.FromFile ("file.pdf"); }
public PdfViewController (NSUrl url) : base() { Url = url; View = new UIView (); View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleBottomMargin | UIViewAutoresizing.FlexibleLeftMargin | UIViewAutoresizing.FlexibleRightMargin; View.AutosizesSubviews = true; PdfDocument = CGPDFDocument.FromUrl (Url.ToString ()); // For demo purposes, show first page only. PdfPage = PdfDocument.GetPage (1); PdfPageRect = PdfPage.GetBoxRect (CGPDFBox.Crop); // Setup tiled layer. TiledLayer = new CATiledLayer (); TiledLayer.Delegate = new TiledLayerDelegate (this); TiledLayer.TileSize = new SizeF (1024f, 1024f); TiledLayer.LevelsOfDetail = 5; TiledLayer.LevelsOfDetailBias = 5; TiledLayer.Frame = PdfPageRect; ContentView = new UIView (PdfPageRect); ContentView.Layer.AddSublayer (TiledLayer); // Prepare scroll view. ScrollView = new UIScrollView (View.Frame); ScrollView.AutoresizingMask = View.AutoresizingMask; ScrollView.Delegate = new ScrollViewDelegate (this); ScrollView.ContentSize = PdfPageRect.Size; ScrollView.MaximumZoomScale = 10f; ScrollView.MinimumZoomScale = 1f; ScrollView.ScrollEnabled = true; ScrollView.AddSubview (ContentView); View.AddSubview (ScrollView); }
public ModelController () { NSUrl pdfURL = NSBundle.MainBundle.GetUrlForResource ("Tamarin", "pdf"); pdf = CGPDFDocument.FromUrl (pdfURL.AbsoluteString); numberOfPages = pdf.Pages; if (numberOfPages % 2 != 0) numberOfPages++; }
public PDFDrawingView() : base() { doc = CGPDFDocument.FromFile(Path.Combine(NSBundle.MainBundle.BundlePath, "QuartzImageDrawing.pdf")); if (doc == null) { throw new Exception("Could not load document"); } }
public void FromUrl() { string url = NSBundle.MainBundle.GetUrlForResource("Tamarin", "pdf").ToString(); using (CGPDFDocument doc = CGPDFDocument.FromUrl(url)) { CheckTamarin(doc); } }
void CheckTamarin(CGPDFDocument pdf) { Assert.True(pdf.AllowsCopying, "AllowsCopying"); Assert.True(pdf.AllowsPrinting, "AllowsPrinting"); Assert.False(pdf.IsEncrypted, "IsEncrypted"); Assert.True(pdf.IsUnlocked, "IsUnlocked"); Assert.That(pdf.Pages, Is.EqualTo((nint)3), "Pages"); Assert.That(pdf.GetInfo().Count, Is.EqualTo(7), "GetInfo"); }
public UIImage Generate(CGSize size) { var document = new CGPDFDocument(new CGDataProvider(Url)); var page = document.GetPage(1); var orginalPageRect = page.GetBoxRect(CGPDFBox.Media); //var targetPageRect = A throw new NotImplementedException(); }
static CGPDFDocument CreatePDFDocumentWithName(string pdfName) { var name = Path.GetFileNameWithoutExtension(pdfName); var pdfPath = Path.GetDirectoryName(pdfName); var path = Path.Combine(pdfPath, name + ".pdf"); CGPDFDocument doc = CGPDFDocument.FromFile(path); return(doc); }
public ModelController() { NSUrl pdfURL = NSBundle.MainBundle.GetUrlForResource("Tamarin", "pdf"); pdf = CGPDFDocument.FromUrl(pdfURL.AbsoluteString); numberOfPages = pdf.Pages; if (numberOfPages % 2 != 0) { numberOfPages++; } }
protected override void Dispose(bool disposing) { if (disposing) { if (PdfDocument != null) { PdfDocument.Dispose(); PdfDocument = null; } base.Dispose(disposing); } }
void DumpPdf(CGPDFDocument doc) { var sb = new StringBuilder(); sb.AppendLine($"{doc.Pages} pages found"); for (var i = 0; i < doc.Pages; i++) { var page = doc.GetPage(i + 1); sb.AppendLine($"Page #{i + 1}"); var dict = page.Dictionary; Dump(sb, 1, dict); } //Console.WriteLine (sb); }
public void FromPage() { using (var doc = CGPDFDocument.FromFile(NSBundle.MainBundle.PathForResource("Tamarin", "pdf"))) using (var page = doc.GetPage(1)) using (var cs = new CGPDFContentStream(page)) { Assert.That(cs.Handle, Is.Not.EqualTo(IntPtr.Zero), "Handle"); var streams = cs.GetStreams(); Assert.That(streams.Length, Is.EqualTo(1), "GetStreams.Length"); Assert.That(streams [0].Handle, Is.Not.EqualTo(cs.Handle), "GetStreams"); Assert.Null(cs.GetResource("XObject", ""), "GetResource"); } }
private void addImageContext(string[] directory, int i) { Console.WriteLine("i: " + i); try { CGPDFDocument pdfToLoad = CGPDFDocument.FromFile(directory[i]); if (pdfToLoad == null) { throw new NullReferenceException(); } else { var firstPage = pdfToLoad.GetPage(1); var width = 240.0f; var pageRect = firstPage.GetBoxRect(CGPDFBox.Media); var pdfScale = width / pageRect.Size.Width; pageRect.Size = new CGSize(pageRect.Size.Width * pdfScale, pageRect.Size.Height * pdfScale); pageRect.X = 0; pageRect.Y = 0; UIGraphics.BeginImageContext(pageRect.Size); var context = UIGraphics.GetCurrentContext(); context.SetFillColor(1.0f, 1.0f, 1.0f, 1.0f); context.FillRect(pageRect); context.SaveState(); context.TranslateCTM(0.0f, pageRect.Size.Height); context.ScaleCTM(1.0f, -1.0f); context.ConcatCTM(firstPage.GetDrawingTransform(CGPDFBox.Media, pageRect, 0, true)); context.DrawPDFPage(firstPage); context.RestoreState(); UIImage thm = UIGraphics.GetImageFromCurrentImageContext(); UIGraphics.EndImageContext(); this.thumbnailImage.Add(thm); } } catch (NullReferenceException) { UIImage nullImage = new UIImage(); this.corruptIndex.Add(i); this.thumbnailImage.Add(nullImage); } }
static UIImage imageWithPDFNamed(string name, float scale, CGAffineTransform t) { CGPDFDocument doc = CreatePDFDocumentWithName(name); if (doc == null) { return(null); } // PDF pages are numbered starting at page 1 CGPDFPage page = doc.GetPage(1); var result = imageWithPDFPage(page, scale, t); return(result); }
public PreviewPageInfo [] GetPreviewPageInfo() { if (previewData != null) { var pdfDocument = new CGPDFDocument(new CGDataProvider(previewData)); List <PreviewPageInfo> pi = new List <PreviewPageInfo>(); for (int pageNo = 1; pageNo <= pdfDocument.Pages; pageNo++) { var page = pdfDocument.GetPage(pageNo); var mediaBox = page.GetBoxRect(CGPDFBox.Media); pi.Add(new PreviewPageInfo(new PDFImage(pdfDocument, page), new Size((int)mediaBox.Width, (int)mediaBox.Height))); } return(pi.ToArray()); } return(new PreviewPageInfo[0]); }
public void DrawTemplatePage(string templateFile) { if (isTemplated) { return; } isTemplated = true; using (var template = CGPDFDocument.FromFile(templateFile)) { var templatePage = template.GetPage(1); var templateBounds = templatePage.GetBoxRect(CGPDFBox.Crop); context.BeginPage(templateBounds); context.DrawPDFPage(templatePage); } }
// Init method. Call this before adding the instance of the PDF_Manager to the View. public void Init(CGPDFDocument oPdfDoc, int page, PageTurnViewController mother_controller) { Console.WriteLine ("Rendering PDF Page Number: " + page); this.page_number = page; this.currentPDFdocument = oPdfDoc; currentPDFPage = this.currentPDFdocument.GetPage (page_number); RectangleF oPdfPageRect = this.currentPDFPage.GetBoxRect (CGPDFBox.Bleed); Console.WriteLine ("PDFRect : " + oPdfPageRect.ToString ()); // Setup tiled layer. oTiledLayer = new CATiledLayer (); tiled_layer_delegate = new TiledLayerDelegate (this); oTiledLayer.Delegate = tiled_layer_delegate; oTiledLayer.TileSize = new SizeF (1024f, 1024f); oTiledLayer.LevelsOfDetail = 5; oTiledLayer.LevelsOfDetailBias = 5; oTiledLayer.Frame = oPdfPageRect; Console.WriteLine ("oTiledLayer.Frame : " + oTiledLayer.Frame.ToString ()); this.oContentView = new UIView (oPdfPageRect); this.oContentView.Layer.AddSublayer (oTiledLayer); this.View.AutoresizingMask = mother_controller.View.AutoresizingMask; this.View.AutosizesSubviews = true; #if DEBUG this.View.Layer.BorderColor = UIColor.Red.CGColor; this.View.Layer.BorderWidth = 2f; #endif // Prepare scroll view. this.scroll_area.AutoresizingMask = mother_controller.View.AutoresizingMask; scroll_area_delegate = new ScrollViewDelegate (this); scroll_area.Delegate = scroll_area_delegate; scroll_area.ContentSize = oPdfPageRect.Size; scroll_area.MaximumZoomScale = 1000f; scroll_area.MinimumZoomScale = 0.1f; scroll_area.AddSubview (this.oContentView); scroll_area.SetZoomScale (this.View.Frame.Width / oContentView.Frame.Width, false); }
public static void OpenDocument(string docName, string docFilePath) { CloseDocument(); _currentPageNumber = -1; _docName = docName; _docFilePath = docFilePath; try { _document = CGPDFDocument.FromFile(_docFilePath); _documentHasLoaded = true; } catch (Exception) { _documentHasLoaded = false; using (var alert = new UIAlertView("Error", "Open PDF document error", null, "Ok")) { alert.Show(); } } }
static UIImage[] imagesWithPDFNamed(string name, float scale, CGAffineTransform t) { CGPDFDocument doc = CreatePDFDocumentWithName(name); List <UIImage> images = new List <UIImage>(); // PDF pages are numbered starting at page 1 for (int pageIndex = 1; pageIndex <= doc.Pages; ++pageIndex) { var page = doc.GetPage(pageIndex); UIImage image = imageWithPDFPage(page, scale, t); if (image != null) { images.Add(image); } } return(images.ToArray()); }
internal void LoadDocument(Stream stream) { if (stream.CanSeek) { stream.Position = 0; } var tempStream = new MemoryStream(); stream.CopyTo(tempStream); tempStream.Position = 0; CGDataProvider provider = new CGDataProvider((tempStream as MemoryStream).ToArray()); PdfDocument = new CGPDFDocument(provider); this.Element.PageCount = (int)PdfDocument.Pages; this.Element.GenerateItems(); this.ConvertPagetoImage(this.Element.CurrentPage); }
public ModelController() { var pdfUrl = NSBundle.MainBundle.GetUrlForResource("Tamarin", "pdf"); if (pdfUrl != null) { pdf = CGPDFDocument.FromUrl(pdfUrl.AbsoluteString); numberOfPages = pdf.Pages; if (numberOfPages % 2 != 0) { numberOfPages++; } } else { // missing pdf file, cannot proceed. Console.WriteLine("Missing pdf file 'Tamarin.pdf'"); } }
public void Tamarin() { using (var table = new CGPDFOperatorTable()) { // note: the native API is horrible as we can't share the same callback and dispatch it to the right // managed method. That force every operator to have one ugly, MonoPInvokeCallback-decorated, per // operator #if WE_HAD_A_NICE_API table.SetCallback("BT", delegate(CGPDFScanner scanner) { bt_count++; }); table.SetCallback("Do", delegate(CGPDFScanner scanner) { // ... drill down to the image }); #elif NET unsafe { // BT == new paragraph table.SetCallback("BT", &BT); // Do == the image is inside it table.SetCallback("Do", &Do); } #else // BT == new paragraph table.SetCallback("BT", BT); // Do == the image is inside it table.SetCallback("Do", Do); #endif using (var doc = CGPDFDocument.FromFile(NSBundle.MainBundle.PathForResource("Tamarin", "pdf"))) using (var page = doc.GetPage(1)) using (var cs = new CGPDFContentStream(page)) using (var scanner = new CGPDFScanner(cs, table, this)) { Assert.That(scanner.Handle, Is.Not.EqualTo(IntPtr.Zero), "Handle"); Assert.That(scanner.GetContentStream().Handle, Is.EqualTo(cs.Handle), "GetContentStream"); bt_count = 0; do_checks = 7; Assert.True(scanner.Scan(), "Scan"); Assert.That(bt_count, Is.EqualTo(45), "new paragraph"); Assert.That(do_checks, Is.EqualTo(0), "found the image"); } } }
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { base.OnElementPropertyChanged(sender, e); if (e.PropertyName == nameof(ExtendedPDFViewer.PageStream)) { if (PdfDocument != null) { PdfDocument.Dispose(); PdfDocument = null; this.Element.Dispose(); } this.LoadDocument(this.Element.PageStream); } else if (e.PropertyName == nameof(ExtendedPDFViewer.CurrentPage)) { this.ConvertPagetoImage(this.Element.CurrentPage); } }
public static UIImage Convert(string pdfPath, bool directLink) { var localDocUrl = directLink ? pdfPath : Path.Combine(NSBundle.MainBundle.BundlePath, pdfPath); var document = new CGPDFDocument(new CGDataProvider(localDocUrl)); var page = document.GetPage(1); var pageRect = page.GetBoxRect(CGPDFBox.Media); var renderer = new UIGraphicsImageRenderer(pageRect.Size); var img = renderer.CreateImage(ctx => { UIColor.White.SetFill(); ctx.FillRect(pageRect); ctx.CGContext.TranslateCTM(0, pageRect.Size.Height); ctx.CGContext.ScaleCTM(1, -1); ctx.CGContext.DrawPDFPage(page); }); return(img); }
void CheckTamarin(CGPDFDocument pdf) { Assert.True(pdf.AllowsCopying, "AllowsCopying"); Assert.True(pdf.AllowsPrinting, "AllowsPrinting"); Assert.False(pdf.IsEncrypted, "IsEncrypted"); Assert.True(pdf.IsUnlocked, "IsUnlocked"); Assert.That(pdf.Pages, Is.EqualTo((nint)3), "Pages"); Assert.That(pdf.GetInfo().Count, Is.EqualTo(7), "GetInfo"); if (TestRuntime.CheckXcodeVersion(9, 0)) { // Merely check that the P/Invoke goes through. var perms = pdf.GetAccessPermissions(); // Get and set outline var outline = pdf.GetOutline(); pdf.SetOutline(outline); } }
public async Task <Abstractions.PdfDocument> Rasterize(string pdfPath, bool cachePirority = true) { if (cachePirority) { var existing = await GetRasterized(pdfPath); if (existing != null) { Debug.WriteLine("Using cached images ..."); return(existing); } } Debug.WriteLine("Downloading and generating again ..."); var localpath = pdfPath.IsDistantUrl() ? await this.DownloadTemporary(pdfPath) : pdfPath; //TODO threading the process #if DROID var f = new Java.IO.File(localpath); var fd = Android.OS.ParcelFileDescriptor.Open(f, Android.OS.ParcelFileMode.ReadOnly); var pdf = new PdfRenderer(fd); #else var pdf = CGPDFDocument.FromFile(localpath); #endif var path = GetLocalPath(pdfPath, !cachePirority); var pagesPaths = this.Render(pdf, path); return(new Plugin.PdfRasterizer.Abstractions.PdfDocument() { Pages = pagesPaths.Select((p) => new PdfPage() { Path = p }), }); }
public static UIImage FromPdf(string name, float width, float height) { CGPDFDocument doc = CreatePDFDocumentWithName(name); if (doc == null) { return(null); } // PDF pages are numbered starting at page 1 CGPDFPage page = doc.GetPage(1); RectangleF box = page.GetBoxRect(CGPDFBox.Crop); var xScale = (width * UIScreen.MainScreen.Scale) / box.Width; var yScale = (height * UIScreen.MainScreen.Scale) / box.Height; var result = imageWithPDFPage(page, Math.Max(xScale, yScale), CGAffineTransform.MakeIdentity()); return(result); }
public override void ViewDidDisappear (bool animated) { base.ViewDidDisappear (animated); var page = PdfPage; var document = PdfDocument; var contentView = ContentView; var tiledLayer = TiledLayer; var scrollView = ScrollView; PdfPage = null; PdfDocument = null; ContentView = null; TiledLayer = null; ScrollView = null; scrollView.RemoveFromSuperview (); tiledLayer.RemoveFromSuperLayer (); page.Dispose (); document.Dispose (); contentView.Dispose (); scrollView.Dispose (); tiledLayer.Dispose (); }
private string[] Render(CGPDFDocument pdf, string outputDirectory) { var result = new string[pdf.Pages]; for (int i = 0; i < pdf.Pages; i++) { var pagePath = string.Format("{0}/{1}.png", outputDirectory.TrimEnd(new char[] { '/', '\\' }), i); Debug.WriteLine("P:" + pagePath); var page = pdf.GetPage(i + 1); Debug.WriteLine("PAGE:" + (page == null)); var image = RenderImage(page); var data = image.AsPNG(); File.Create(pagePath); data.Save(pagePath, true); result [i] = pagePath; } var metaPath = string.Format("{0}/{1}", outputDirectory.TrimEnd(new char[] { '/', '\\' }), MetaFile); File.Create(metaPath); return(result); }
protected override void OnElementChanged(VisualElementChangedEventArgs e) { base.OnElementChanged(e); if (e.OldElement != null || this.Element == null) { return; } PdfPage page = (PdfPage)Element; string path; if (page.useTemp) { string tempFolder = new FileManage().GetTempFolder(); path = System.IO.Path.Combine(tempFolder, page.FileName); } else { string libraryFolder = new FileManage().GetLibraryFolder(); path = System.IO.Path.Combine(libraryFolder, page.FileName); } UIWebView webView = new UIWebView(); if (path.EndsWith(".pdf")) { CGPDFDocument doc = CGPDFDocument.FromFile(path); NumberOfPages = doc.Pages; } NSUrlRequest request = new NSUrlRequest(new NSUrl(path, false)); webView.LoadRequest(new NSUrlRequest(new NSUrl(path, false))); webView.PaginationMode = UIWebPaginationMode.TopToBottom; webView.ScalesPageToFit = true; View = webView; }
void acPrinterTest(NSObject sender) { CGPDFDocument pdfDoc = CGPDFDocument.FromFile(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "100605 PrePlumbingPDF_Signed.pdf")); UIImage img = MyConstants.ImageFromPDF(pdfDoc, 1); TcpPrinterConnection myConn; myConn = new TcpPrinterConnection("10.11.1.3", 6101, 10, 10); NSError err; bool connectionOK = myConn.Open(); if (connectionOK) { try { // string test = SGD.Get ("appl.name", myConn, out err); // -- SGD class from Zebra API works ZebraPrinterCpcl zprn = ZebraPrinterFactory.GetInstance(myConn, PrinterLanguage.PRINTER_LANGUAGE_CPCL); GraphicsUtilCpcl gu = zprn.GetGraphicsUtil(); string testSETFF = "! U1 JOURNAL\r\n! U1 SETFF 50 5\r\n"; NSData testData = NSData.FromArray(System.Text.UTF8Encoding.UTF8.GetBytes(testSETFF)); myConn.Write(testData, out err); // gu.printImage(img.CGImage, 280, 5, -1, -1, false, out err); gu.printImage(img.CGImage, 280, 5, -1, -1, false, out err); if (err != null) { // Console.WriteLine (err.LocalizedDescription); } } finally { myConn.Close(); } } }
/// <summary> /// Opens document /// </summary> /// <param name="docName">Document name</param> /// <param name="docFilePath">Path to document file</param> public static void OpenDocument(string docName, string docFilePath) { // Close previous opened document CloseDocument(); // Open new document mCurrentPageNumber = -1; mDocName = docName; mDocFilePath = docFilePath; try { mDocument = CGPDFDocument.FromFile(mDocFilePath); mDocumentHasLoaded = true; } catch (Exception) { mDocumentHasLoaded = false; using (var alert = new UIAlertView("Error", "Open PDF document error", null, "Ok")) { alert.Show(); } } }
public void FromFile() { using (CGPDFDocument doc = CGPDFDocument.FromFile(NSBundle.MainBundle.PathForResource("Tamarin", "pdf"))) { CheckTamarin(doc); } }
public PDFView (IntPtr p) : base(p) { _pageNumber = 1; _pdf = CGPDFDocument.FromFile (Path.Combine (NSBundle.MainBundle.BundlePath, "sample.pdf")); }
public static NSDictionary ResolveDestNames(NSSet destNames, CGPDFDocument document) { return ResolveDestNames_ (destNames, document.Handle); }
public void FromFile() { using (CGPDFDocument doc = CGPDFDocument.FromFile("Tamarin.pdf")) { CheckTamarin(doc); } }
public static uint ResolveActionsWithNamedDestinations(PSPDFGoToAction[] actions, CGPDFDocument documentRef) { return ResolveActionsWithNamedDestinations_ (actions, documentRef.Handle); }
public void ReleaseDocumentRef(CGPDFDocument documentRef, NSObject owner) { ReleaseDocumentRef_ (documentRef.Handle, owner); }
public PdfScrollView (CGRect frame) : base (frame) { ShowsVerticalScrollIndicator = false; ShowsHorizontalScrollIndicator = false; BouncesZoom = true; DecelerationRate = UIScrollView.DecelerationRateFast; BackgroundColor = UIColor.Gray; MaximumZoomScale = 5.0f; MinimumZoomScale = 0.25f; // open the PDF file (default directory is the bundle path) pdf = CGPDFDocument.FromFile ("Tamarin.pdf"); // select the first page (the only one we'll use) page = pdf.GetPage (1); // make the initial view 'fit to width' CGRect pageRect = page.GetBoxRect (CGPDFBox.Media); scale = Frame.Width / pageRect.Width; pageRect.Size = new CGSize (pageRect.Width * scale, pageRect.Height * scale); // create bitmap version of the PDF page, to be used (scaled) // when no other (tiled) view are visible UIGraphics.BeginImageContext (pageRect.Size); CGContext context = UIGraphics.GetCurrentContext (); // fill with white background context.SetFillColor (1.0f, 1.0f, 1.0f, 1.0f); context.FillRect (pageRect); context.SaveState (); // flip page so we render it as it's meant to be read context.TranslateCTM (0.0f, pageRect.Height); context.ScaleCTM (1.0f, -1.0f); // scale page at the view-zoom level context.ScaleCTM (scale, scale); context.DrawPDFPage (page); context.RestoreState (); UIImage backgroundImage = UIGraphics.GetImageFromCurrentImageContext (); UIGraphics.EndImageContext (); backgroundImageView = new UIImageView (backgroundImage); backgroundImageView.Frame = pageRect; backgroundImageView.ContentMode = UIViewContentMode.ScaleAspectFit; AddSubview (backgroundImageView); SendSubviewToBack (backgroundImageView); // Create the TiledPDFView based on the size of the PDF page and scale it to fit the view. pdfView = new TiledPdfView (pageRect, (float)scale); pdfView.Page = page; AddSubview (pdfView); // no need to have (or set) a UIScrollViewDelegate with MonoTouch this.ViewForZoomingInScrollView = delegate { // return the view we'll be using while zooming return pdfView; }; // when zooming starts we remove (from view) and dispose any // oldPdfView and set pdfView as our 'new' oldPdfView, it will // stay there until a new view is available (when zooming ends) this.ZoomingStarted += delegate { if (oldPdfView != null) { oldPdfView.RemoveFromSuperview (); oldPdfView.Dispose (); } oldPdfView = pdfView; AddSubview (oldPdfView); }; // when zooming ends a new TiledPdfView is created (and shown) // based on the updated 'scale' and 'frame' ZoomingEnded += delegate (object sender, ZoomingEndedEventArgs e) { scale *= e.AtScale; CGRect rect = page.GetBoxRect (CGPDFBox.Media); rect.Size = new CGSize (rect.Width * scale, rect.Height * scale); pdfView = new TiledPdfView (rect, (float)scale); pdfView.Page = page; AddSubview (pdfView); }; }
private string[] Render (CGPDFDocument pdf, string outputDirectory) { var result = new string[pdf.Pages]; for (int i = 0; i < pdf.Pages; i++) { var pagePath = string.Format ("{0}/{1}.png", outputDirectory.TrimEnd (new char[] { '/', '\\' }), i); Debug.WriteLine("P:"+pagePath); var page = pdf.GetPage (i+1); Debug.WriteLine ("PAGE:" + (page == null)); var image = RenderImage (page); var data = image.AsPNG (); File.Create (pagePath); data.Save (pagePath, true); result [i] = pagePath; } var metaPath = string.Format ("{0}/{1}", outputDirectory.TrimEnd (new char[] { '/', '\\' }), MetaFile); File.Create (metaPath); return result; }
public NoteCellView(String bookID, Note note) { this.BackgroundColor = UIColor.Clear; this.pageID = pageID; this.note = note; nfloat height = 300; Page page = BooksOnDeviceAccessor.GetPage(bookID, note.PageID); if (note.Text == "Header: " + note.PageID) { this.Frame = new CGRect(0, 0, 200, height); // pageView UIImageView pageView = new UIImageView(); pageView.Frame = new CGRect(15, 20, 170, height - 80); this.AddSubview(pageView); bool notFound = true; if (page != null) { String localPath = DownloadedFilesCache.BuildCachedFilePath(page.URL); CGPDFDocument pdfDoc = CGPDFDocument.FromFile(localPath); if (pdfDoc != null) { notFound = false; CGPDFPage pdfPage = pdfDoc.GetPage(1); UIImage pageImage = ImageHelper.PDF2Image(pdfPage, pageView.Frame.Width, UIScreen.MainScreen.Scale); pageView.Image = pageImage; } } if (notFound) { pageView.Image = UIImage.FromBundle("Assets/Icons/empty_page.png"); // emptyLabel UILabel emptyLabel = eBriefingAppearance.GenerateLabel(17); emptyLabel.Frame = pageView.Frame; emptyLabel.Text = "Empty"; emptyLabel.TextAlignment = UITextAlignment.Center; emptyLabel.SizeToFit(); emptyLabel.Center = pageView.Center; this.AddSubview(emptyLabel); } // pageView NotePageView circleView = new NotePageView(page, pageView.Frame.Width / 2); circleView.Center = new CGPoint(pageView.Center.X, pageView.Frame.Bottom); this.AddSubview(circleView); } else if (note.Text == "Footer: " + note.PageID) { this.Frame = new CGRect(0, 0, 50, height); // footerView // UIImageView footerView = new UIImageView(UIImage.FromBundle("Assets/Icons/endPageNote.png")); // footerView.Frame = new CGRect(15, ((height - 40) / 2 - 10), 20, 20); // this.AddSubview(footerView); } else { this.Frame = new CGRect(0, 0, 250, height); // noteView NoteCellNoteView noteView = new NoteCellNoteView(note, height - 80); noteView.Frame = new CGRect(15, 20, noteView.Frame.Width, noteView.Frame.Height); noteView.TouchUpInside += delegate { if (ItemPressedEvent != null) { ItemPressedEvent(page.ID, note); } }; this.AddSubview(noteView); } }
private void Initial() { btnClock.Enabled = false; btnTag.Enabled = false; btnNote.TouchUpInside += ChangeButtonState; btnPencil.TouchUpInside += ChangeButtonState; //將pdf的imageVie設定識別碼 imageView.AccessibilityIdentifier = "PDFImageView"; #region 產生存放畫線&圖片的資料夾名稱 PDF_RECORD_DIR = PDF_Type == "Add" ? DateTime.Now.Ticks.ToString() : Path.GetFileNameWithoutExtension(Doc.Name); //only doc.name is null had to process file name if (PDF_Type == "Add" && Doc.Name == null) { Doc.Name = string.Format("{0}.json", PDF_RECORD_DIR); } #endregion #region 處理image的資料來源,如pdf 或是jpg if (Path.GetExtension(Doc.Reference).ToLower().Equals(".pdf")) { _pdf = CGPDFDocument.FromFile(Doc.Reference); this.View.BackgroundColor = UIColor.Gray; Debug.WriteLine(PageNumber); imageView.Image = GetPDFImageForPage(); IsPdfBackground = true; } else { UIImage imageBackground = UIImage.FromFile(Doc.Reference); int width = (int)imageBackground.Size.Width; int height = (int)imageBackground.Size.Height; nfloat scale; if (height > width) { scale = (View.Frame.Width - 80.0f) / width; } else { scale = this.View.Frame.Height / height; } imageView.Image = imageBackground; imageBackgroundRect = new CGRect(); imageBackgroundRect.Size = new CGSize(width * scale, height * scale); IsPdfBackground = false; } //將整個scrollview大小對應pdf的大小 scrollView.ContentSize = imageView.Image.Size; #endregion #region 工具列事件處理 // add done button in navigation bar var navButtonDone = new UIBarButtonItem(UIBarButtonSystemItem.Done, (s, e) => { #region save data // 畫筆未關時,進行關閉 if (openPen) { openPen = false; //儲存畫布至記憶體中 CreateNewUIViewHandle(AttachmentTypeEnum.Paint); //移除畫布 DrawImageView.RemoveFromSuperview(); } UIViewDataSaveHandle(); #endregion NavigationController.PopToRootViewController(true); }); navItem.SetRightBarButtonItem(navButtonDone, true); #endregion //按鈕事件處理 ButtonEventHandle(); #region 判斷是pdf來源才處理滑動換頁事件 if (IsPdfBackground == true) { SwipeChangPageHandle(); } #endregion }
public PDFDrawingView () : base () { doc = CGPDFDocument.FromFile (Path.Combine (NSBundle.MainBundle.BundlePath, "Images/QuartzImageDrawing.pdf")); if (doc == null) throw new Exception ("Could not load document"); }