c# convert xml to pdf

想請教一下,如果使用c# 來寫

我想讀取一份xml的資料,然後讀取之裡面的內容,可能再把檔案弄成表格

並且將這份資料轉檔成pdf檔案要怎麼做呢?

目前讀取資料是ok..

private void Form1_Load(object sender, EventArgs e)

{

XmlTextReader reader = new XmlTextReader(" xxxx.xml");

while (reader.Read())

{

switch (reader.NodeType)

{

case XmlNodeType.Element: // The node is an element.

this.textBox1.AppendText("<" + reader.Name);

this.textBox1.AppendText(">");

break;

case XmlNodeType.Text: //Display the text in each element.

this.textBox1.AppendText(reader.Value);

break;

case XmlNodeType.EndElement://Display the end of element.

this.textBox1.AppendText(" this.textBox1.AppendText(">\n");

break; }

}

Console.ReadLine();

}

上面這片段是我讀檔案的方式, 不過因為我需要的XML中有一些可能是數據的

資料,要將之轉換為表格方式,不知道要怎麼利用讀取出來的方法作排列,以及最後把整個檔案轉成pdf檔案呢?? 謝謝!!

已更新項目:

首先,非常謝謝你的解答: 關於排列部分,因為, 有些讀取出來的資料,可能是一些數字,他是經過base64的方式加密過,我可能要做一個解碼的轉換,But使用讀取的方式,我不知道該怎麼針對某一段讀取資料的資料做轉換, 因為有些資料並沒有加密過,要怎麼去選擇特定的資料做轉換呢? 因為xml資料中很多地方可能前面使用過的如 << 這種標題內的資料,後面可能又再出現好幾次 我不知道該如何去針對某一段來做選擇,

.

.

2 個已更新項目:

另外我轉換成PDF檔案,可能會針對某一個 " < > " 裡面的資料,放在特定的位置,

ex: 賈伯斯 我可能想把它放在PDF檔案中的左上角,

xxxx@ gmail.com 想放在轉換過的PDF檔案裡的右上角,做這樣子的排列

P.S 不好意思,你給的連結我找不到網頁...

3 個已更新項目:

第一段補充內容有些贅字, 剛剛沒注意到

這邊部分修正一下我不知道該怎麼針對某一段讀取的資料做轉換, 因為有些部分並沒有加密過,要怎麼去選擇特定的部分做轉換呢? 因為字數問題,我簡單貼一小段上來,

FALSE

3398340965

+v/7//z/+//7//r//P/8//r/+v/7//z/+//6//r/+//8//r/+v/7//z/+//6//r/+//7//v/ +v/7//v/+//6//v//P/7//v/+/

4 個已更新項目:

<"BaselineSway">FALSE

<"LeadDataCRC32">339834

<"WaveFormData">+v/7//z/+//7//r//P/8//r/+v/7//z/+//6//r/+//8//r/+v/7//z/+//6//r/+//7//v/

網頁好像會把<"">裡面的資料隱藏掉,這邊在簡單補充一下,謝謝!!

5 個已更新項目:

不好意思,那個放進去後,他說, "Base-64 字元陣列的無效長度。"

這個是指?? 我要先把他轉成16進位在來轉換嗎??還是..?

6 個已更新項目:

我有看到關於這個問題等的方式,http://www.cnblogs.com/chengxiaohui/articles/19875...

But,如果是針對我這種讀取進來的方式要怎麼使用呢??? 不好意思,問題多了些= ="" 還是煩請解答,謝謝!!

2 個解答

評分
  • 9 年前
    最佳解答

    You'll need some 3rd party library. Here is one example using 'iText .NET'. http://www.ujihara.jp/iTextdotNET/examples.html

    using System;

    using System.IO;

    using com.lowagie.text;

    using com.lowagie.text.pdf;

    using com.lowagie.text.xml;

    public class Chap0704 {

    public static void Main(String[] args)

    { Console.WriteLine("Chapter 7 example 4: making life easy");

    // step 1: creation of a document-object Document

    documentA = new Document(PageSize.A4, 80, 50, 30, 65);

    // step 1: creation of a document-object Document

    documentB = new Document(PageSize.A4, 80, 50, 30, 65);

    // step 2:

    // we create a writer that listens to the document

    // and directs a XML-stream to a file

    PdfWriter.getInstance(documentA, new FileStream("Chap0704a.pdf", FileMode.Create));

    PdfWriter.getInstance(documentB, new FileStream("Chap0704b.pdf", FileMode.Create));

    // step 3: we parse the document

    XmlParser.parse(documentA, "Chap0701.xml");

    XmlParser.parse(documentB, "playRomeoJuliet.xml", "tagmapRomeoJuliet.xml");

    }

    }

    Regarding "利用讀取出來的方法作排列", can you explain in more details?

    2012-02-05 14:29:02 補充:

    你可以用個function來檢測讀取的資料是否需要做轉換:

    2012-02-05 14:31:24 補充:

    private string ParseXMLText(string data)

    {

    string result = "";

    try

    {

    var converted = Convert.FromBase64String(data);

    var text = System.Text.Encoding.UTF8.GetString(converted);

    if (!string.IsNullOrEmpty(text))

    {

    result = text;

    }

    else

    {

    result = data;

    }

    return result;

    }

    2012-02-05 14:35:51 補充:

    把這個function放在:

    case XmlNodeType.Text: //Display the text in each element.

    var temp = ParseXMLText(reader.Value);

    this.textBox1.AppendText(temp);

    break;

    這樣就可以了.

    還在之前的網站應該是: http://www.ujihara.jp/iTextdotNET/examples/Chap070...

    Sorry..:p

    2012-02-08 00:25:35 補充:

    不好意思, function的程式碼漏了幾行....==! 以下是完整的列表:

    2012-02-08 00:29:38 補充:

    http://codepad.org/ejoZFICT

  • 9 年前

    不好意思...跑出來的結果會是一些讀取出來資料以及一堆空格(白色框框的亂碼!?)...

    一些原本的資料,另外空格部分可能是解碼之後的資料,全部都是空格,

    不知道該怎麼處理呢??

    我如果把它轉成string型別,好像也是一樣..

還有問題?馬上發問,尋求解答。