2015-07-13 4 views
1

Я пропустил все вопросы, связанные с этой проблемой, но не могу найти и ответить.Java - PDFBox 1.8.9 текстовый файл в формате unicode для pdf

У меня есть textFile, который содержит символы unicode, такие как «ā», «š», «ī» и другие. Проблема в том, что когда я пишу textFile в PDF, файл pdf не отображает его правильно.

Как настроить мой код, чтобы я мог писать эти символы в моем PDF-файле? Возможно, даже лучший вопрос: возможно ли это? Поскольку я искал это в течение нескольких часов и не могу найти решение.

Поскольку это приложение будет коммерческим, я не могу использовать iText!

Мой код:

TextToPDF pdf = new TextToPDF(); 
String fileName = "test.txt"; 
File pdfFile = new File("test.pdf"); 

BufferedReader reader = new BufferedReader(new FileReader(fileName)); 

PDSimpleFont courier = PDType1Font.COURIER; 
PDSimpleFont testFont = PDTrueTypeFont.loadTTF(document, new File("times.ttf")); 

pdf.setFont(testFont); 
pdf.setFontSize(8); 

pdf.createPDFFromText(document, reader); 

document.save(pdfFile); 
document.close(); 

Если кто-то сделал это, пожалуйста поделитесь, как у удается сделать ТАГТ. Я считаю, что это должно быть связано с font.setFontEncoding(); Но так как документации PDFBox не хватает довольно много информации, я не понял, что и как я должен делать это.

Кстати вот список SO вопросов я прочитал, так что пожалуйста не перенаправляет меня к ним ...

1) Java PDFBOX text encoding

2) Using Java PDFBox library to write Russian PDF

3) Using PDFBox to write UTF-8 encoded strings to a PDF

Было больше темы, которую я читал, но они все еще были открыты на моей вкладке.

EDITED: Только что нашел это ->Using PDFBox to write unicode strings to a PDF

Кажется, это не possbile, необходимо обновить до версии 2.0.0 и дать ему попробовать.

EDITED # 2: В новой версии PDFBox 2.0.0 (по крайней мере сейчас) был удален класс TextToPDF(), который позволяет мне передать текст. Итак, теперь это означает, что либо я вручную читаю текст, а затем записываю его в PDF или вам нужно найти другие решения.

+1

Некоторое время назад я сделал то же самое и должен был использовать другую библиотеку (itext) – user1516873

ответ

0

Просто нашел это ->Using PDFBox to write unicode strings to a PDF

Кажется, это не possbile, необходимо обновить до версии 2.0.0 и дать ему попробовать.

EDITED # 2: В новой версии PDFBox 2.0.0 (по крайней мере сейчас) был удален класс TextToPDF() (В комментарии, было сказано, что его доклада доступен сейчас) которые позволяют мне пройти в Textfile , Итак, теперь это означает, что либо я вручную прочитал текст, либо написал его в PDF, либо вам нужно найти другие решения.

+0

* "удалил класс TextToPDF" * - не совсем, он просто был перемещен в отдельный JAR, pdfbox-tools.jar, который также доступен через maven или как загрузка из pdfbox.apache.org: https://pdfbox.apache.org/download.cgi#20x – mkl

+0

Когда я сделал это либо недоставало информации об этом, либо не было сделано это JAR. – arccuks

0

Ваша задача здесь:

BufferedReader reader = new BufferedReader(new FileReader(fileName)); 

Как описано здесь: http://docs.oracle.com/javase/7/docs/api/java/io/FileReader.html FileReader будет читать файл в кодировке системы по умолчанию. изменить его к этому:

BufferedReader in = new BufferedReader(
      new InputStreamReader(
         new FileInputStream(fileDir), "UTF8")); 

Это будет читать файл в кодировке UTF-8, если он находится в UTF-8. Специальные символы, как вы описали, существуют во всех кодировках символов, таких как iso latin 1 и т. Д.

Когда вы знаете кодировку своего ввода, обязательно прочитайте ее в этой кодировке. Тогда PDFBox также может записать их в нужную кодировку.

+0

Просто попробовал это. No effect :( – arccuks

+0

Знаете ли вы, что ваш файл UTF-8? Попробуйте распечатать содержимое файла до стандартного, чтобы узнать, правильно ли читает содержание java. Если это так, то ваш pdfbox нуждается в еще одной настройке. В противном случае вы все еще используете неверное кодирование для чтения файла. Внимание, кодировка txt-файла не может быть проверена на 100%. Вы должны это знать или вам нужно попробовать. –

+0

Я использую NotePad ++, и я кодировал кодировку textFile как 'UTF-8'. Ty для попытки помочь, но кажется, что нужно попробовать предварительную версию версии 2.0.0 – arccuks

-1
you can create a pdf by simply creating a file with .pdf extension 
You are going to create pdf file like this way "**File pdfFile = new File("test.pdf")**" but itsn't correct way . please go through below code how to crate pdf file . 

    public static void main(String arg[]){ 
     this.create("test.pdf");`enter code here`enter code here` 
    } 
    public void create(String file) throws IOException {*enter code here* 
     PDDocument document=null; 
     try { 
     document=new PDDocument(); 
     PDPage blankPage=new PDPage(); 
     document.addPage(blankPage); 
     document.save(file); 
     } 
     finally { 
     if (document != null) { 
      document.close(); 
     } 
     } 
    } 

and also go through below link **http://www.javased.com/api=org.apache.pdfbox.pdmodel.PDDocument** 
+0

1st: Я не вижу, как это когда-нибудь решится на проблему с моим юникодом. 2nd: Link указывает на PAGE_NOT_FOUND. 3-й: для последнего я думаю, что его лучше использовать метод try-with-resources, например 'try (PDDocument doc = new PDDocument())' – arccuks

Смежные вопросы