2011-10-12 73 views
1

我有一個將pdf轉換爲tif的系統。基本上它是一個用csharp編寫的程序,它使用iTextSharp獲取有關pdf和pdf2tif(http://pdftotif.sourceforge.net/)的元數據以轉換爲文件。我注意到一些pdf的轉換不正確。在Acrobat和福昕他們多頁的形式,但在任何其他瀏覽器打開(Ghostscript的...)他們打開與消息如何以編程方式檢測XFA(Adobe XML Forms Architecture)動態PDF

「要查看該文件的全部內容第1頁的文檔,需要更高版本PDF閱讀器,你可以升級到從「www.adobe.com/products/acrobat/readstep2.html」最新版本的Adobe Reader的獲得進一步的支持,去http://www.adobe.com/support/products/acrreader.html

一些goggling圍繞告訴我,這些都是XFA動態PDF的有什麼辦法我可以編程檢測,所以我可以嘗試處理這些pdf的不同?

回答

1

iText API是一個好的開始。

在iTextSharp中,您訪問對象的屬性而不是調用方法。 (如果你已經做了iTextSharp的工作適量的你可能已經知道這一點)

總之,這裏的使用HTTP Handler一個簡單的例子:

<%@ WebHandler Language="C#" Class="iTextXfa" %> 
using System; 
using System.Web; 
using iTextSharp.text; 
using iTextSharp.text.pdf; 

public class iTextXfa : IHttpHandler { 
    public void ProcessRequest (HttpContext context) { 
    HttpServerUtility Server = context.Server; 
    string[] testFiles = { 
     Server.MapPath("./non-XFA.pdf"), Server.MapPath("./XFA.pdf") 
    }; 
    foreach (string file in testFiles) { 
     XfaForm xfa = new XfaForm(new PdfReader(file)); 
     context.Response.Write(string.Format(
     "<p>File: {0} is XFA: {1}</p>", 
     file, 
     xfa.XfaPresent ? "YES" : "NO" 
    )); 
    } 
    } 
    public bool IsReusable { get { return false; } } 
} 
0

命令行方式:

strings document.pdf | grep XFA 

如果您得到一行或兩行,您可能正在使用XFA PDF:

<</Names[(!ADBE::0100_VersChkStrings) 364 0 R(!ADBE::0100_VersChkVars) 365 0 R(!ADBE::0200_VersChkCode_XFACheck) 366 0 R]>> 
相關問題