2015-04-04 334 views
-2

我正在嘗試向用戶顯示生成的PDF。我正在使用iText來生成pdf。我已經創建了pdf。現在我想查看pdf。我正在嘗試將PDF轉換爲圖像並顯示給用戶。Android - 未找到PDF標頭簽名

public void makeImageFromPDF() throws DocumentException, IOException { 

     String INPUTFILE = Environment.getExternalStorageDirectory() 
       .getAbsolutePath() + "/iText/sample.pdf"; 

     String OUTPUTFILE = Environment.getExternalStorageDirectory() 
       .getAbsolutePath() + "/iText/sample1.pdf"; 

     Document document = new Document(); 
     PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(OUTPUTFILE)); 
     document.open(); 
     System.out.println("............1"); 
     System.out.println("............INPUTFILE==> "+INPUTFILE); 
     PdfReader reader = new PdfReader(INPUTFILE); 
     System.out.println("............2"); 
     int n = reader.getNumberOfPages(); 
     PdfImportedPage page; 
     for (int i = 1; i <= n; i++) { 
      page = writer.getImportedPage(reader, i); 
      Image instance = Image.getInstance(page); 

      byteArray = reader.getPageContent(1); 
     } 
     document.close(); 

    } 

但是我收到運行時錯誤PDF header signature not found

我在這條線上得到了他的錯誤。 PdfReader reader = new PdfReader(INPUTFILE);

請讓我知道如何解決此問題。讓我以任何其他方式查看PDF文件。

04-04 09:24:29.326: W/System.err(12102): java.io.IOException: PDF header signature not found. 
04-04 09:24:29.326: W/System.err(12102): at com.iText.text.pdf.PRTokeniser.checkPdfHeader(PRTokeniser.java:201) 
04-04 09:24:29.326: W/System.err(12102): at com.iText.text.pdf.PdfReader.readPdf(PdfReader.java:490) 
04-04 09:24:29.326: W/System.err(12102): at com.iText.text.pdf.PdfReader.<init>(PdfReader.java:165) 
04-04 09:24:29.337: W/System.err(12102): at com.iText.text.pdf.PdfReader.<init>(PdfReader.java:154) 
04-04 09:24:29.337: W/System.err(12102): at com.example.MainActivity.makeImageFromPDF(MainActivity.java:283) 
04-04 09:24:29.337: W/System.err(12102): at com.example.MainActivity.NewDesingTest(MainActivity.java:262) 
04-04 09:24:29.337: W/System.err(12102): at com.example.MainActivity.createNewPdf(MainActivity.java:131) 
04-04 09:24:29.337: W/System.err(12102): at com.example.MainActivity$1.onClick(MainActivity.java:81) 
04-04 09:24:29.337: W/System.err(12102): at android.view.View.performClick(View.java:4204) 
04-04 09:24:29.337: W/System.err(12102): at android.view.View$PerformClick.run(View.java:17355) 
04-04 09:24:29.347: W/System.err(12102): at android.os.Handler.handleCallback(Handler.java:725) 
04-04 09:24:29.356: W/System.err(12102): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-04 09:24:29.356: W/System.err(12102): at android.os.Looper.loop(Looper.java:137) 
04-04 09:24:29.356: W/System.err(12102): at android.app.ActivityThread.main(ActivityThread.java:5041) 
04-04 09:24:29.367: W/System.err(12102): at java.lang.reflect.Method.invokeNative(Native Method) 
04-04 09:24:29.376: W/System.err(12102): at java.lang.reflect.Method.invoke(Method.java:511) 
04-04 09:24:29.376: W/System.err(12102): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
04-04 09:24:29.386: W/System.err(12102): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
04-04 09:24:29.386: W/System.err(12102): at dalvik.system.NativeStart.main(Native Method) 
+0

就可以找到包名爲「com.iText」的庫?這絕對不是iText的正式版本。請讓我們知道你下載的地方。 – 2015-04-04 09:59:44

+0

嗨..現在我仍然在使用'lowagie' ..但是在兩天之前你說這已經過時了。這就是我只是用記事本中的iText代替'lowagie'在這裏發佈。 – Vijay 2015-04-04 10:03:07

+0

如何用'iText'替換'lowagie'使其不再過時? – 2015-04-04 10:05:45

回答

0

您沒有將文件名傳遞給Document構造函數,因此它創建了一個沒有任何信息的新文檔。所以它沒有標題。如果你正在閱讀PDF文件將其轉換爲圖像,你根本不需要PDF編寫器。你的代碼真的很困惑。

擺脫文件和所有提到的PdfWriter。只要使用PdfReader

+0

感謝您的快速回復。你能用一個簡單的樣本來解釋我嗎? – Vijay 2015-04-04 09:57:01

+0

這個答案是錯誤的。 iText不會將PDF轉換爲圖像,因此問題中的代碼無法工作。 – 2015-04-04 10:01:47

+0

那麼請讓我有任何想法查看PDF PLZ .. – Vijay 2015-04-04 10:04:37