#java #itext
#java #itext
Вопрос:
Я хочу преобразовать файл PDF в файл CSV. Для этого я использую библиотеку iText. Программа работает нормально, но вывод не в желаемом формате. Все данные поступают в первую строку файла csv. Выходные данные должны быть точно такими же, как в файле pdf (означает с разрывами строк). Пожалуйста, помогите. Заранее спасибо.
Document document = new Document();
document.open();
PdfReader reader = new PdfReader("C:\Indiaops-projects\PREMIUM_PAID_ACKNOWLEDGEMENT.pdf");
PdfDictionary dictionary = reader.getPageN(1);
AcroFields fileds = reader.getAcroFields();
PRIndirectReference reference = (PRIndirectReference)
dictionary.get(PdfName.CONTENTS);
PRStream stream = (PRStream) PdfReader.getPdfObject(reference);
byte[] bytes = PdfReader.getStreamBytes(stream);
PRTokeniser tokenizer = new PRTokeniser(bytes);
FileOutputStream fos=new FileOutputStream("C:\Indiaops-projects\pdf.csv");
StringBuffer buffer = new StringBuffer();
StringBuffer data = new StringBuffer();
int i=0;
while (tokenizer.nextToken()) {
if (tokenizer.getTokenType() == PRTokeniser.TK_STRING) {
String value = tokenizer.getStringValue();
if("x-none".equals(value)){
String datastr =data.toString();
if(!"".equals(datastr)){
buffer.append(""" datastr "",");
data = new StringBuffer();
}
}else{
data.append(value);
}
}
}
String test=buffer.toString();
StringReader stReader = new StringReader(test);
int t;
while((t=stReader.read())>0)
fos.write(t);
document.add(new Paragraph(".."));
document.close();
Комментарии:
1. Какой язык вы используете? Пожалуйста, добавьте соответствующий тег. И, пожалуйста, покажите фрагмент кода, используемый для чтения PDF, а затем сгенерируйте CSV, чтобы мы могли помочь!
2. Если бы вы могли поделиться некоторым кодом, который показывает, как в настоящее время вы конвертируете его в CSV, это могло бы помочь нам сориентировать вас.
3. Как выглядит результат? Как вы хотите , чтобы это выглядело? Покажите нам.
4. В файле pdf есть таблица. Но файл csv показывает данные только в одной строке. Он не отображает его в табличной форме.
Ответ №1:
Вам нужно ввести разрыв строки ‘ n’ в буфере после каждой строки таблицы.
buffer.append("n");
Комментарии:
1. Но как узнать, что есть конец строки?
2. Если вы знаете, сколько существует столбцов, тогда вы знаете конец каждой строки, возможно, вам придется считать.