原創(chuàng)|其它|編輯:郝浩|2012-10-18 14:28:03.000|閱讀 1376 次
概述:所謂雙層PDF就是每一頁都包含兩層,上層是圖像,下層是該圖像對應的文字。既可以像圖像一樣瀏覽,又可以像文字一樣復制、查找。這樣兼顧了閱讀的效果和使用方便性。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
所謂雙層PDF就是每一頁都包含兩層,上層是圖像,下層是該圖像對應的文字。既可以像圖像一樣瀏覽,又可以像文字一樣復制、查找。這樣兼顧了閱讀的效果和使用方便性。
在Google里面搜索,大多數(shù)雙層PDF制作方法都是使用OCR技術實現(xiàn)的。這些方法的制作前提是,原始的數(shù)據(jù)只是圖片,不存在對應的文字版。這不在本文的討論范圍內,本文主要探討如何對已經擁有文字版的word或者其他文件的情況下,制作雙層PDF。具體來說就是存在一個排版好的word文件,將這個word文件制作成一個雙層PDF。
閑話少說,具體的制作過程如下
1、將文字版的文件(word)轉換為以文本方式存儲的PDF文件,這個使用PDFCreator采用虛擬打印的方式即可實現(xiàn)。這里暫定該文件的名稱為"w.pdf"。
2、將創(chuàng)建的的文本方式的存儲的PDF文件(w.pdf),轉換為以圖片方式存儲的PDF文件。這個可以用PDFCreator的虛擬打印機,先打印成TIFF格式的文件,再將這個TIFF文件虛擬打印成一個PDF的方式實現(xiàn),這里暫定該圖片方式的PDF文件名為“p.pdf”。
3、將文字方式存儲的PDF文件和圖片方式存儲的PDF文件采用按頁合并的方式生成一個新的PDF文件,其中圖片方式的PDF在上層。這個采用PDF4NET 3.3.6 進行二次開發(fā)的方式實現(xiàn)。以下代碼為visual studio 2005環(huán)境下,使用C#編寫。
(1)將O2S.Components.PDF4NET.dll添加到工程的引用中
(2)添加命名空間的引用
using O2S.Components.PDF4NET; using O2S.Components.PDF4NET.PDFFile; using O2S.Components.PDF4NET.Graphics;
(3) 編寫代碼如下:
string startTime = System.DateTime.Now.ToString(); //File1為文字格式的PDF文件 PDFFile File1 = PDFFile.FromFile(@"d:/w.pdf"); //File2為圖片格式的PDF文件 PDFFile File2 = PDFFile.FromFile(@"d:/p.pdf"); if(File1.PagesCount!=File2.PagesCount){ MessageBox.Show("Two pdf files with diffrent pages"); return; } PDFDocument doc = new PDFDocument(); for (int i = 0; i < File1.PagesCount; i++) { PDFImportedContent ic1 = File1.ExtractPageContent(i); PDFImportedContent ic2 = File2.ExtractPageContent(i); PDFPage NewPage = doc.AddPage(); PDFLayer NewLayer = NewPage.Canvas.Layers.Add("Page" + i.ToString()); NewLayer.Canvas.DrawImportedContent(ic1, ic1.X, ic1.Y, ic1.Width, ic1.Height); NewLayer.Canvas.DrawImportedContent(ic2, ic2.X, ic2.Y, ic1.Width, ic1.Height); doc.AddPage(NewPage); } //不知道為什么,合成后的PDF的同一頁都包含兩份,因此這里需要依次移除其中的一個 if (doc.Pages.Count == File1.PagesCount * 2) { for (int i = doc.Pages.Count - 1; i > 0; i -= 2) { doc.Pages.RemoveAt(i); } } //保存合成后的PDF到文件 doc.SaveToFile(@"d:/123.pdf"); MessageBox.Show("開始時間:" + startTime + "結束時間:" + System.DateTime.Now.ToString());
PS:試用版的PDF4NET會每一頁的頂部添加一行紅色的字。PDF4NET還有很多其他的功能,很強大的哦。
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:Togis的專欄——CSDN