Я хочу вытащить текст из .doc или .docx с таким же шрифтом , размером на Джаве. Но пока что у меня не получается даже просто вытащить текст. Я попробовала множество вариантов, но везде ответ выходит с кубиками.
Используется следующий код:
package myconverter;
import com.itextpdf.text.Anchor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.CMYKColor;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
public class Myconverter {
public static void main(String[] args) throws FileNotFoundException, DocumentException, IOException {
String result = "";
String line;
String doc = "C:\\samples\\HelloWorld.doc";
String pdf = doc.substring(0, doc.lastIndexOf('.') + 1) + "pdf";
Document document = new Document(PageSize.A4, 50, 50, 50, 50);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdf));
document.open();
Anchor anchorTarget = new Anchor("");
anchorTarget.setName("BackToTop");
Paragraph paragraph1 = new Paragraph();
// paragraph1.setSpacingBefore(50);
paragraph1.add(anchorTarget);
document.add(paragraph1);
File file = new File(doc);
try (FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr)) {
while((line = br.readLine()) != null){
result = line;
// System.out.println(result);
//document.add(new Paragraph(result, FontFactory.getFont(FontFactory.COURIER, 14, Font.BOLD,new CMYKColor(0, 255, 0, 0))));
document.add(new Paragraph(result));
}
}
// System.out.println(result);
document.close();
}
}
Ну FileReader для этого точно не предназначен, он предназначен для простых текстовых форматов, Word таковым не является.
Можно это сделать с помощью POI, но там много ручками таскать придется. Готовый код для этого я вам не дам, но предложу легкий вариант (правда он не со всеми форматами ворда дружит): вот есть такая библиотека, которая кроме всего прочего может docx (xml версию) конвертировать в pdf.
Вот пример использования:
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.poi.xwpf.converter.pdf.PdfConverter;
import org.apache.poi.xwpf.converter.pdf.PdfOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import fr.opensagres.xdocreport.samples.docx.converters.Data;
public class ConvertDocxBigToPDF
{
public static void main( String[] args )
{
long startTime = System.currentTimeMillis();
try
{
// 1) Load docx with POI XWPFDocument
XWPFDocument document = new XWPFDocument( Data.class.getResourceAsStream( "DocxBig.docx" ) );
// 2) Convert POI XWPFDocument 2 PDF with iText
File outFile = new File( "target/DocxBig.pdf" );
outFile.getParentFile().mkdirs();
OutputStream out = new FileOutputStream( outFile );
PdfOptions options = PdfOptions.create().fontEncoding( "windows-1251" );
PdfConverter.getInstance().convert( document, out, options );
}
catch ( Throwable e )
{
e.printStackTrace();
}
System.out.println( "Generate DocxBig.pdf with " + ( System.currentTimeMillis() - startTime ) + " ms." );
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я проблему свою уже описывал но сейчас сделаю это более конкретноПрограмма стоит на сервере, работает день, каждую ночь программа падает
Кто может дать качественную документацию по созданию чата с хабров и тд
Услышал, что современные веб-приложения строятся из независимых сервисовУ меня есть сервер tomcat, java ee и сервер Mysql
Не могу понять почему метод createArrayOfXValues не заполняет массив значениями y, которые были получены в методе TabulЕсли y статическая переменная,...