日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

双层PDF的制作——使用PDF4NET 3.3.6 实现

發(fā)布時間:2024/2/2 综合教程 23 生活家
生活随笔 收集整理的這篇文章主要介紹了 双层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 实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。