1. 程式人生 > >將WPF轉為PDF

將WPF轉為PDF

利用第三方外掛PDFSARP

專案截圖

啟動專案,model類準備資料,WPF窗體展示資料,最後利用pdfsharp轉為pdf檔案

namespace Engine
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Program p = new Program();
            p.start();
        }

        public void start()
        {
            PDFSharpTest.MainwindowModel model = new PDFSharpTest.MainwindowModel();
            PDFSharpTest.MainWindow window = new PDFSharpTest.MainWindow(model);
            window.SaveViewContentToPdf("");
        }
    }
}
WPF前臺
<Window x:Class="PDFSharpTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Viewbox x:Name="viewbox"  Height="37cm" Width="25cm" >
            <Grid x:Name="printArea" Height="1221" Width="1149" Margin="30,20,0,0" >
                <Label  FontFamily="Calibri" FontSize="11" Content="{Binding Block1lb1}" HorizontalAlignment="Right" x:Name="lb1"></Label>
              
            </Grid>
        </Viewbox>
    </Grid>
</Window>
wpf後臺
 public partial class MainWindow : Window
    {
        public MainWindow(MainwindowModel content)
        {
            this.DataContext = content;
            InitializeComponent();
            //BindingData(content);
        }

        public void SaveViewContentToPdf(string path)
        {
            PdfXpsHelper.SaveViewContentToPdf(path, viewbox);
        }

    }
model
 public class MainwindowModel
    {
       private string _lb1;
       public string lb1 { get { return _lb1; } set { _lb1 = value; } }

       public MainwindowModel()
       {
           lb1 = "This is a PDF files.";
       }

    }
MainwindowConsoleView

 public class MainwindowConsolView : MainWindow
    {

        public MainwindowConsolView(MainwindowModel dataContext)
            : base(dataContext)
        { }

         [STAThread]
        public void ExportToPdf()
        {
            PdfXpsHelper.SaveViewContentToPdf("", this.Content as Viewbox);
        }

    }
pdfHelper
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.IO.Packaging;
using System.Windows.Xps.Packaging;
using System.Windows.Controls;
using System.Windows.Xps;
using System.Windows;
using System.Windows.Media.Imaging;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using System.Windows.Media;


namespace PDFSharpTest
{
   public class PdfXpsHelper
    {
        public static string FileFolder;
        private static int id = 0;
        public static PdfDocument PdfFile = new PdfDocument();

        public static void SaveViewContentToPdf(string path, Viewbox viewbox)
        {
            SaveMemoryStreamToPdf(path, SaveViewContentToMemoryStream(path, viewbox));
        }

        public static void SaveMemoryStreamToPdf(string path, MemoryStream lMemoryStream)
        {
            var pdfXpsDoc = PdfSharp.Xps.XpsModel.XpsDocument.Open(lMemoryStream);
            if (String.IsNullOrWhiteSpace(path))
            {
                string myPath = @"C:/pdfreport" + ".pdf";
                PdfSharp.Xps.XpsConverter.Convert(pdfXpsDoc, myPath, 0);
                id++;
            }
            else
                PdfSharp.Xps.XpsConverter.Convert(pdfXpsDoc, path, 0);
        }


        public static MemoryStream SaveViewContentToMemoryStream(string path, Viewbox viewbox)
        {
            viewbox.StretchDirection = StretchDirection.Both;

            MemoryStream lMemoryStream = new MemoryStream();
            Package package = Package.Open(lMemoryStream, FileMode.Create);
            XpsDocument doc = new XpsDocument(package);
            XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc);
            VisualsToXpsDocument vToXpsD = (VisualsToXpsDocument)writer.CreateVisualsCollator();
            var newSize = new Size(0, 0);
            if (!viewbox.IsLoaded || viewbox.RenderSize.Height <= 0 || viewbox.RenderSize.Width <= 0)
            {
                //newSize.Width = 816;
                //newSize.Height = 1056;
                newSize.Width = 950;
                newSize.Height = 1150;
                viewbox.Arrange(new Rect(newSize));
                viewbox.Measure(newSize);
                viewbox.UpdateLayout();
            }
            vToXpsD.Write(viewbox);
            vToXpsD.EndBatchWrite();
            doc.Close();
            package.Close();

            return lMemoryStream;
        }
    }
}





相關推薦

WPF轉為PDF

利用第三方外掛PDFSARP 專案截圖 啟動專案,model類準備資料,WPF窗體展示資料,最後利用pdfsharp轉為pdf檔案 namespace Engine { class Program { [STAThread]

Java word轉為pdf jacob方式

name .aspx false quit void exception tof ant div package com.doctopdf; import java.io.File; import com.jacob.activeX.ActiveXComponent;

一個在瀏覽器端html 轉為pdf 的js 外掛 jsPDF

<!DOCTYPE html> <html> <head> <title>test</title> <meta http-equiv="Content-Type" content="text/h

怎麽ppt轉為pdf

slides bubuko 報告 soft shape for mps 迅捷pdf轉換器 reac PPT這個詞,就是演示的代名詞,比如工作報告,數據報告,各種演示文件都能在PPT上被制作出來,需要做的也就是打字添加圖片排班等,但是我們需要把PPT轉換為Word的時候卻又無

CAD實用乾貨,怎麼CAD圖紙轉為PDF檔案

CAD實用乾貨,怎麼將CAD圖紙轉為PDF檔案?大家都是知道的,在CAD編輯器中編輯的圖紙基本上都是dwg格式的檔案,那這樣我們在進行檢視圖紙的時候就非常的不方便,那要怎麼辦了,就需要將CAD圖紙的格式進行轉換,那下面小編就來和大家分享一些CAD使用乾貨,怎麼將CAD圖紙轉換為PDF檔案?那下面就跟著小編的腳

CAD實用幹貨,怎麽CAD圖紙轉為PDF文件

tex 右上角 圖片 基本 安裝 log 操作 窗口 分享圖片 CAD實用幹貨,怎麽將CAD圖紙轉為PDF文件?大家都是知道的,在CAD編輯器中編輯的圖紙基本上都是dwg格式的文件,那這樣我們在進行查看圖紙的時候就非常的不方便,那要怎麽辦了,就需要將CAD圖紙的格式進行轉換

用手機如何Excel格式轉為PDF檔案

Excel表格是office辦公文件最常見的一種格式,它的獨特之處就在於它是表格形式,而且這種表格還有計算功能,統計資料、自動求和等、所以整理資料少不了它。通常整理完的資料不希望被改動,所以會將Excel轉為PDF格式,那怎樣轉化呢?接下來交教大家一個用手機轉換的簡單方法。 轉換工具:迅捷PDF轉換器 轉

用手機如何Excel格式轉為PDF文件

希望 cbc 怎樣 文件格式轉換 出現 計數 自動 格式 轉pdf Excel表格是office辦公文檔最常見的一種格式,它的獨特之處就在於它是表格形式,而且這種表格還有計算功能,統計數據、自動求和等、所以整理資料少不了它。通常整理完的資料不希望被改動,所以會將Excel轉

java程式碼word,excel轉為pdf

新建javaweb工程 下載aspouse-word-14.11.0-jdk16.jar包和aspose-cells-8.5.2.jar包並引入 word轉pdf的java函式 package webViewer; import java.io.*;  import com.as

python 實現office檔案 (word, ppt, excel等) 轉為pdf

python 實現將office檔案 (word, ppt, excel等) 轉為pdf 在 windows 系統(需安裝office套件)中,利用 python 的 win32com 包可以實現對Office檔案的操作,可以批量轉換為pdf檔案。支援 doc, docx, ppt,

OpenOffice word文件轉為pdf轉為圖片

package com.ist.util; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.io.File; import java.io.IOException; impor

Linux中使用命令列方式呼叫openoffice服務word檔案轉為PDF

Linux中使用命令列方式呼叫openoffice服務將word檔案轉為PDF 測試安裝之後的openoffice用命令將docx檔案轉換為PDF   需要一份python的指令碼程式,因為轉換需要通過py程式去呼叫api處理,將下面程式儲存到topdf.py檔案: #

Java中使用phantomjsHTML頁面轉為pdf

之前有個需求,將頁面轉為pdf,當時使用itext轉換,但是呢樣式與實際在瀏覽器中開啟的樣式存在差異。比如選擇項長得不一樣,CheckBox長得不一樣,這就不行,需求要跟瀏覽器開啟一模一樣,後經過多方面查詢,終於找到一個靠譜點的解決方案:使用phantomjs外掛。 首先下

Ipython notebook轉為pdf

本來這不應該成為一個問題,因為在jupyter的file選單下面有download as pdf (via latex)選單專案,但是當你點了該選單項後,會出現一個錯誤的網頁提示: 那麼如何解決這個問題呢?本文談論這個問題。 1 電腦環境 Win

使用com.aspose.wordsword模板轉為PDF亂碼解決方案(window下正常)

     最近在做產品大成小管(大成小管),使用com.aspose.words將word模板轉為PDF檔案時,在開發平臺window下轉換沒有問題,中文也不會出現亂碼。但是將服務部署在正式伺服器(linux)上,轉換出來的PDF中文就出現了亂碼。在網上找了很久,才找到原因

javascripthtml轉為圖片保存。

canvas () color can 實現 data url pan his js將html轉為圖片主要是通過html2canvas這個插件去操作的。具體實現如下: html部分: <!--index.html--> <div id="cont

如何掃描的pdf圖片轉換成文字,方法竟然如此簡單?

圖片 辦公文檔 編輯器 提問:word、ppt、txt、pdf等常見辦公文檔格式那個最難編輯。回答肯定是pdf啦,因為pdf文件不能直接打開進行編輯,所以編輯pdf文件比較麻煩,下面就一起來看看實現pdf文件的編輯的方法。有的朋友會問,編輯pdf文件需不需要進行文字識別呢?小編的回答這不是絕對的。

python figure 寫入PDF

save 結果 來看 文件中 plot 方便 back 次循環 port 有些時候需要檢查python成圖的正確性,需要將figure 輸出來看看,但柑橘不是很方便,於是上網查到更好的辦法是將所有figure輸出到PDF文件,再檢查則更加方便。在matplotlib官網看到

如何下載CAD轉PDF轉換器,怎麽批量CAD轉PDF

CAD制圖在設計行業還是運用的比較廣泛的,比如工程設計行業就需要經常需要CAD文件,如果我們想要將批量的CAD文件轉換成PDF文件,那麽我們應該怎麽進行轉換?批量CAD轉PDF軟件怎麽用,哪些軟件可以轉? 一、什麽軟件可以將批量的CAD文件轉換成PDF文件? 如果我們想要將批量的CAD文件轉換成PDF

JavaSE8基礎 StringBuffer toString 轉為String對象

res win rgs images ima eclips value () brush os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0)