public void GetDocument(DocumentSnapshotHandler handler) { _documentReference.GetDocument((snapshot, error) => { handler?.Invoke(snapshot == null ? null : new DocumentSnapshotWrapper(snapshot), error == null ? null : ExceptionMapper.Map(error)); }); }
SerializeDocumentReference( DocumentReference dre ) { IDocumentPaginatorSource idp = dre.GetDocument(false); if (idp != null) { FixedDocument fixedDoc = idp as FixedDocument; if (fixedDoc != null) { ReachSerializer serializer = SerializationManager.GetSerializer(fixedDoc); if (serializer != null) { serializer.SerializeObject(fixedDoc); } } else { ReachSerializer serializer = SerializationManager.GetSerializer(idp.DocumentPaginator); if (serializer != null) { serializer.SerializeObject(idp); } } } }
public DocumentItem(string documentPath, DocumentReference documentReference) { _documentPath = documentPath; _documentReference = documentReference; _fixedDocument = documentReference.GetDocument(true); IEnumerator <PageContent> enumerator = _fixedDocument.Pages.GetEnumerator(); enumerator.MoveNext(); _firstPage = enumerator.Current.GetPageRoot(true); }
public DocumentItem(string documentPath, DocumentReference documentReference) { TooltipString = documentPath; DocumentReference = documentReference; FixedDocument = documentReference.GetDocument(true); var enumerator = FixedDocument.Pages.GetEnumerator(); enumerator.MoveNext(); _firstPage = enumerator.Current.GetPageRoot(true); }
internal void CreatePagesFromSource() { DocumentReference documentReference = new DocumentReference(); documentReference.Source = Source; (documentReference as IUriContext).BaseUri = BaseUri; FixedDocument fixedDocument = documentReference.GetDocument(true); PrivateCreatePagesFromFixedDocument(fixedDocument); }
private void ReCreateFixedDocumentSequence() { _fixedDocumentSequence = new FixedDocumentSequence(); foreach (RollUpFixedDocument document in _documents) { DocumentReference documentReference = new DocumentReference(); FillDocumentReference(documentReference, document); FixedDocument fixedDocument = documentReference.GetDocument(true); _fixedDocumentSequence.References.Add(documentReference); } }
internal void CreatePagesFromSource() { var documentReference = new DocumentReference { Source = Source }; ((IUriContext)documentReference).BaseUri = BaseUri; var fixedDocument = documentReference.GetDocument(true); PrivateCreatePagesFromFixedDocument(fixedDocument); }
/// <summary> /// Gets the first fixed document in a fixed document sequence, or null. /// </summary> /// <param name="docSeq">The fixed document sequence</param> /// <returns>The first fixed document, or null.</returns> private static FixedDocument GetFirstDocumentOfFixedDocSeq(FixedDocumentSequence docSeq) { FixedDocument firstDoc = null; if (docSeq != null && docSeq.References != null && docSeq.References.Count > 0) { DocumentReference firstDocRef = docSeq.References[0]; firstDoc = firstDocRef.GetDocument(true); } return(firstDoc); }
/* Main print entry point */ public void Print(PrintQueue queu, XpsDocument xpsDocument, Print printcontrol, bool print_all, int from, int to, String filename, bool tempfile) { XpsDocumentWriter docwrite; FixedDocumentSequence fixedDocSeq = xpsDocument.GetFixedDocumentSequence(); DocumentReference docReference = fixedDocSeq.References[0]; FixedDocument doc = docReference.GetDocument(false); PrintTicket Ticket = SetUpTicket(queu, printcontrol, fixedDocSeq, tempfile); docwrite = GetDocWriter(queu); m_busy = true; m_filename = filename; #if DISABLED_FOR_NOW docwrite.WritingPrintTicketRequired += new WritingPrintTicketRequiredEventHandler(PrintTicket); #endif PrintPages(docwrite, doc, print_all, from, to, Ticket); }
private void BuildLinkList(FixedDocumentSequence fixDocSeq) { try { DocumentReference docReference = fixDocSeq.References[0]; FixedDocument fixDoc = docReference.GetDocument(false); for (int i = 0; i < fixDoc.Pages.Count; i++) { PageContent content = fixDoc.Pages[i]; for (int j = 0; j < content.LinkTargets.Count; j++) { index[content.LinkTargets[j].Name] = i; } } } catch (System.Exception ex) { LogFile.Error("Exception in BuildLinkList():", ex); } }
/// <summary> /// override to load books /// </summary> /// <param name="bk"></param> /// <returns></returns> override public object LoadBook(Book bk) { XpsDocument document = null; FixedDocumentSequence fds = null; if (LogHelper.CanDebug()) { LogHelper.Begin("XpsBookService.LoadBook"); } try { base.LoadBook(bk); document = new XpsDocument(bk.FilePath, FileAccess.Read); fds = document.GetFixedDocumentSequence(); DocumentReference docReference = fds.References.First(); FixedDocument fixDoc = docReference.GetDocument(false); bk.PageCount = fds.DocumentPaginator.PageCount; for (int i = 0; i < bk.PageCount - 1; i++) { bk.Pages.Add(new Page(bk, i.ToString(), i)); } } catch (Exception err) { LogHelper.Manage("XpsBookService.LoadBook", err); } finally { if (document != null) { document.Close(); } LogHelper.End("XpsBookService.LoadBook"); } return(fds); }
private static void Add(string path, FixedDocumentSequence fixedDocumentSequence) { using (var doc = new XpsDocument(path, FileAccess.Read)) { var sourceSequence = doc.GetFixedDocumentSequence(); if (sourceSequence != null) { foreach (var dr in sourceSequence.References) { var newDocumentReference = new DocumentReference { Source = dr.Source }; var baseUri = ((IUriContext)dr).BaseUri; ((IUriContext)newDocumentReference).BaseUri = baseUri; var fd = newDocumentReference.GetDocument(true); newDocumentReference.SetDocument(fd); fixedDocumentSequence.References.Add(newDocumentReference); } } } }
public void Split(string originalDocument, string detinationDocument) { using (Package package = Package.Open(originalDocument, FileMode.Open, FileAccess.Read)) { using (Package packageDest = Package.Open(detinationDocument)) { string inMemoryPackageName = "memorystream://miXps.xps"; Uri packageUri = new Uri(inMemoryPackageName); PackageStore.AddPackage(packageUri, package); XpsDocument xpsDocument = new XpsDocument(package, CompressionOption.Maximum, inMemoryPackageName); XpsDocument xpsDocumentDest = new XpsDocument(packageDest, CompressionOption.Normal, detinationDocument); var fixedDocumentSequence = xpsDocument.GetFixedDocumentSequence(); DocumentReference docReference = xpsDocument.GetFixedDocumentSequence().References.First(); FixedDocument doc = docReference.GetDocument(false); var content = doc.Pages[0]; var fixedPage = content.GetPageRoot(false); var writter = XpsDocument.CreateXpsDocumentWriter(xpsDocumentDest); writter.Write(fixedPage); xpsDocumentDest.Close(); xpsDocument.Close(); } } }
/// <summary> /// 用于实现的功能,在xps中添加指定的图片 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); string originalDocument = ""; //读取模板 string detinationDocument = AppDomain.CurrentDomain.BaseDirectory + "newXps.xps"; //生成的新文件 openFileDialog1.Filter = "图片文件(*.xps)|*.xps"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { try { originalDocument = openFileDialog1.FileName; // int png_x = Convert.ToInt32(txtX.Text.Trim()); //int png_y = Convert.ToInt32(txtY.Text.Trim()); int png_x = 0; int png_y = 0; if (File.Exists(detinationDocument)) { File.Delete(detinationDocument); } using (Package package = Package.Open(originalDocument, FileMode.Open, FileAccess.Read)) { using (Package packageDest = Package.Open(detinationDocument)) { string inMemoryPackageName = "memorystream://miXps.xps"; Uri packageUri = new Uri(inMemoryPackageName); PackageStore.RemovePackage(packageUri); PackageStore.AddPackage(packageUri, package); XpsDocument xpsDocument = new XpsDocument(package, CompressionOption.Maximum, inMemoryPackageName); XpsDocument xpsDocumentDest = new XpsDocument(packageDest, CompressionOption.Normal, detinationDocument); var fixedDocumentSequence = xpsDocument.GetFixedDocumentSequence(); DocumentReference docReference = xpsDocument.GetFixedDocumentSequence().References.First(); FixedDocument doc = docReference.GetDocument(false); PageContent content = doc.Pages[0]; FixedPage fixedPage = content.GetPageRoot(false); //大容器 Canvas containCanvas = new Canvas(); containCanvas.Width = fixedPage.Width; containCanvas.Height = fixedPage.Height; containCanvas.Background = Brushes.Transparent; xps_search_point p = new xps_search_point(0, 0, 11); //xps缩放比例 double RenderTrans = 1; //获得页面宽度和高度 string searchText = "姓名"; //循环xps字元素,查找指定内容 for (int i = 0; i < fixedPage.Children.Count; i++) { UIElement DocFpUiElem = fixedPage.Children[i]; if (DocFpUiElem is Glyphs) { Glyphs gps = (Glyphs)DocFpUiElem; string strMark = gps.UnicodeString; //找到位置 if (strMark.Trim() == searchText) { p = new xps_search_point(gps.OriginX, gps.OriginY, gps.FontRenderingEmSize); break; } textBox1.Text += strMark; } else if (DocFpUiElem is Canvas) { Canvas cv1 = (Canvas)DocFpUiElem; //xps缩放比例 RenderTrans = cv1.RenderTransform.Value.M11; p = GetGlyphs((Canvas)DocFpUiElem, searchText); } } Image img = new Image(); string fn = @"d:\1011.png"; img.Source = new BitmapImage(new Uri(fn)); Canvas cvs = new Canvas(); Canvas.SetLeft(cvs, Convert.ToDouble(png_x)); //Y坐标*缩放比例-图像本身高度 Canvas.SetTop(cvs, Convert.ToDouble(png_y)); img.Width = Convert.ToDouble(62); img.Height = Convert.ToDouble(27); //填入图片 cvs.Children.Add(img); //将图片cvs 添加到大容器中 containCanvas.Children.Add(cvs); //将大容器填充到 xps Page页面当中 fixedPage.Children.Add(containCanvas); ((IAddChild)content).AddChild(fixedPage); //创建写入流,输出保存文件 var writter = XpsDocument.CreateXpsDocumentWriter(xpsDocumentDest); writter.Write(fixedPage); //释放 xpsDocumentDest.Close(); xpsDocument.Close(); System.Windows.Forms.MessageBox.Show("操作完成"); } } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } } }
public FlowDocumentPackage(string xamlFlowDocument) { toDispose = new List <IDisposable>(); TempFolder = new DirectoryInfo(TempPath + "\\XamlToPDF\\" + DateTime.Now.Ticks.ToString()); if (!TempFolder.Exists) { TempFolder.Create(); } /*Stream = File.Create(TempFolder.FullName + "\\a.xps"); * toDispose.Add(Stream); * * Package = Package.Open(Stream, FileMode.Create, FileAccess.ReadWrite); * toDispose.Add(Package); * * pack = "pack://" + DateTime.Now.Ticks + ".xps"; * PackageStore.AddPackage(new Uri(pack), Package); * * * * XpsDoc = new XpsDocument(Package, CompressionOption.NotCompressed, pack);*/ XpsDoc = new XpsDocument(TempFolder.FullName + "\\a.xps", FileAccess.ReadWrite, CompressionOption.NotCompressed); toDispose.Add(new InlineDisposable(() => XpsDoc.Close())); System.Windows.Xps.XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(XpsDoc); xamlFlowDocument = ReplaceImages(writer, xamlFlowDocument); flowDoc = XamlServices.Parse(xamlFlowDocument) as FlowDocument; IDocumentPaginatorSource src = flowDoc as IDocumentPaginatorSource; if (double.IsNaN(flowDoc.PageHeight)) { flowDoc.PageHeight = 792; } if (double.IsNaN(flowDoc.PageWidth)) { flowDoc.PageWidth = 612; } /*XPolicy = new XpsPackagingPolicy(XpsDoc); * toDispose.Add(XPolicy); * * XSrm = new XpsSerializationManager(XPolicy, false); * toDispose.Add(XSrm);*/ DocumentPaginator pgn = src.DocumentPaginator; //XSrm.SaveAsXaml(pgn); writer.Write(pgn); var seq = XpsDoc.GetFixedDocumentSequence(); DocumentReference reff = seq.References.First(); Document = reff.GetDocument(true); }