双层PDF的制作——使用PDF4NET 3.3.6 实现
雙層PDF的制作——使用PDF4NET 3.3.6 實現
所謂雙層PDF就是每一頁都包含兩層,上層是圖像,下層是該圖像對應的文字。既可以像圖像一樣瀏覽,又可以像文字一樣復制、查找。這樣兼顧了閱讀的效果和使用方便性。
在Google里面搜索,大多數雙層PDF制作方法都是使用OCR技術實現的。這些方法的制作前提是,原始的數據只是圖片,不存在對應的文字版。這不在本文的討論范圍內,本文主要探討如何對已經擁有文字版的word或者其他文件的情況下,制作雙層PDF。具體來說就是存在一個排版好的word文件,將這個word文件制作成一個雙層PDF。
閑話少說,具體的制作過程如下
1、將文字版的文件(word)轉換為以文本方式存儲的PDF文件,這個使用PDFCreator采用虛擬打印的方式即可實現。這里暫定該文件的名稱為"w.pdf"。
2、將創(chuàng)建的的文本方式的存儲的PDF文件(w.pdf),轉換為以圖片方式存儲的PDF文件。這個可以用PDFCreator的虛擬打印機,先打印成TIFF格式的文件,再將這個TIFF文件虛擬打印成一個PDF的方式實現,這里暫定該圖片方式的PDF文件名為“p.pdf”。
3、將文字方式存儲的PDF文件和圖片方式存儲的PDF文件采用按頁合并的方式生成一個新的PDF文件,其中圖片方式的PDF在上層。這個采用PDF4NET 3.3.6 進行二次開發(fā)的方式實現。以下代碼為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還有很多其他的功能,很強大的哦。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/togis/archive/2009/05/26/4218789.aspx
總結
以上是生活随笔為你收集整理的双层PDF的制作——使用PDF4NET 3.3.6 实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信情侣网名大全集78个
- 下一篇: 水星路由器怎么重置水星路由器设备如何重启