簡體   English   中英

將文本轉換為PDF

[英]Convert text into PDF

我有大量文本字符串,這些字符串顯然是PDF文件的原始數據,我需要將其重新制作為PDF。

目前,我正在將字符串讀取到StringBuffer中,但是如果需要,可以更改它。 在那之后,我嘗試將其寫到文件中並更改擴展名(我真的希望這樣做能起作用,但是我有點不知道),我嘗試將其帶入String然后從中獲取byte []並將其寫入文件,或使用DataOutputStream將字節放入文件中。 這些似乎都沒有起作用。

我也嘗試過使用iText插件,嘗試通過該插件將其寫入pdf,還嘗試將文本閱讀為pdf,然后將其逐頁復制到新的pdf。 這些都沒有返回很好的結果。

今天是星期五下午,我點了一下,任何建議都會有很大幫助!

PDF是二進制對象。 您需要將字節直接寫入文件。

變成文字可能會破壞它。 它是否以%%PDF-開頭並以%%EOF結尾?

好的,經過大量研究,我發現保留字符串中的二進制數據通常會將其轉換為Base64編碼。 完全猜出來,我從Base64中解碼出了字符串,並將字節丟到了pdf文件中,瞧,我有一個可以打開的pdf!

感謝您的回答,希望以后對您有所幫助!

您是怎么遇到這個字符串的? 如果它是原始ASCII字符串,則將丟失PDF中嵌入的大量二進制數據。

如果您有一個unicode字符串,則可以使用OutputStream直接將其寫入文件(而不是Writer,因為您實際上並不希望寫入字符數據)。

iText方法是正確的方法。 您可以執行以下操作:

import java.io.*;

import com.lowagie.text.*;
import com.lowagie.text.pdf.*;

public class TextFileToPDF {

  /*
     ex. java TextFileToPDF  c:\temp\text.txt  c:\temp\text.pdf
  */
  public static void main (String [] args){
    BufferedReader input = null;
    Document output = null;
    System.out.println("Convert text file to pdf");
    System.out.println("input  : " + args[0]);
    System.out.println("output : " + args[1]);
    try {
      // text file to convert to pdf as args[0]
      input = 
        new BufferedReader (new FileReader(args[0]));
      // letter 8.5x11
      //    see com.lowagie.text.PageSize for a complete list of page-size constants.
      output = new Document(PageSize.LETTER, 40, 40, 40, 40);
      // pdf file as args[1]
      PdfWriter.getInstance(output, new FileOutputStream (args[1]));

      output.open();
      output.addAuthor("RealHowTo");
      output.addSubject(args[0]);
      output.addTitle(args[0]);

      String line = "";
      while(null != (line = input.readLine())) {
        System.out.println(line);
        Paragraph p = new Paragraph(line);
        p.setAlignment(Element.ALIGN_JUSTIFIED);
        output.add(p);
      }
      System.out.println("Done.");
      output.close();
      input.close();
      System.exit(0);
    }
    catch (Exception e) {
      e.printStackTrace();
      System.exit(1);
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM