/// <summary> /// Initializes a new instance of the <see cref="T:Dt.Pdf.BaseObject.PdfStream" /> class. /// </summary> /// <param name="filter">The filter.</param> public PdfStream(PdfFilter filter) { this.data = new MemoryStream(); PdfDictionary dictionary = new PdfDictionary { IsLabeled = false, IsFix = true }; this.properties = dictionary; if (filter == null) { throw new PdfArgumentNullException("filter"); } this.Filters.Enqueue(filter); }
/// <summary> /// Write Pdf object to Pdf writer /// </summary> /// <param name="writer">Pdf Writer</param> public override void ToPdf(PdfWriter writer) { MemoryStream data = this.data; if ((this.filters != null) && (this.filters.Count > 0)) { data = new MemoryStream(); this.data.WriteTo(data); PdfArray array = new PdfArray(); while (this.filters.Count > 0) { using (MemoryStream stream2 = new MemoryStream()) { data.Seek(0L, SeekOrigin.Begin); data.WriteTo(stream2); stream2.Seek(0L, SeekOrigin.Begin); data.Dispose(); data.Dispose(); data = new MemoryStream(); PdfFilter filter = this.filters.Dequeue(); filter.Encode(stream2, data, null); array.Insert(0, filter.GetName()); continue; } } if (array.Count == 1) { this.properties.Add(PdfName.Filter, array[0]); } else { this.properties.Add(PdfName.Filter, array); } } this.properties[PdfName.Length] = new PdfNumber((double)data.Length); PdfStreamWriter psw = writer.Psw; this.properties.ToPdf(writer); psw.WriteLineEnd(); psw.WriteBytes(streamPrefix).WriteLineEnd(); data.WriteTo(psw.Stream); psw.WriteLineEnd().WriteBytes(streamSuffix); psw.WriteLineEnd(); if (data != this.data) { data.Dispose(); } }
private async void PdfButton_Click(object sender, RoutedEventArgs e) { // 現在、FlexGrid に表示されている順のデータ var currentData = this.flexgrid1.Rows.Select(r => r.DataItem).Cast <Book>(); // FlexReportの定義を読み込む var rpt = new C1FlexReport(); using (var stream = File.OpenRead("Assets/BooksReport.flxr")) rpt.Load(stream, "BooksReport"); // データを連結 rpt.DataSource.Recordset = currentData.ToList(); // IEnumerable<T>は不可 // レポートを生成 await rpt.RenderAsync(); // 印刷する場合 //await rpt.ShowPrintUIAsync(); // PDF ファイルに直接保存する場合 var picker = new FileSavePicker() { SuggestedStartLocation = PickerLocationId.DocumentsLibrary }; picker.FileTypeChoices.Add("PDF ファイル", new string[] { ".pdf", }); picker.SuggestedFileName = "BarCodeControlSample"; var file = await picker.PickSaveFileAsync(); if (file != null) { // 出力先となる PdfFilter オブジェクトを作成 var filter = new PdfFilter(); filter.StorageFile = file; // Windows Forms 等では、filter.FileName = file.Path; とする // ファイルへ出力 await rpt.RenderToFilterAsync(filter); } }
private async void btnSave_Click(object sender, RoutedEventArgs e) { FileSavePicker savePicker = new FileSavePicker(); savePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary; savePicker.FileTypeChoices.Add(Strings.PdfFile, new List <string>() { ".pdf" }); savePicker.DefaultFileExtension = ".pdf"; StorageFile file = await savePicker.PickSaveFileAsync(); if (file != null) { var pdf = new C1PdfDocument(PaperKind.Custom); pdf.ConformanceLevel = PdfAConformanceLevel.PdfA2b; var layout = rtb.ViewManager.PresenterInfo as C1PageLayout; PdfFilter.PrintDocument(rtb.Document, pdf, layout.Padding); await pdf.SaveAsync(file); MessageDialog dlg = new MessageDialog(Strings.SaveMessage + file.Path, Strings.RtbSample); await dlg.ShowAsync(); } }
/// <summary> /// Initializes a new instance of the <see cref="T:PdfVersionDependStream" /> class. /// </summary> /// <param name="filter">The filter.</param> public PdfVersionDependStream(PdfFilter filter) : base(filter) { }
/// <summary> /// Initializes a new instance of the <see cref="RenderPageAction"/> class. /// </summary> /// <param name="reader"> /// The reader. /// </param> /// <param name="stamper"> /// The stamper. /// </param> /// <param name="filter"> /// The filter. /// </param> /// <param name="render"> /// The render. /// </param> public RenderPageAction(PdfReader reader, PdfStamper stamper, PdfFilter filter, IPdfRender render) : base(reader, stamper, filter) { this.render = render; }