У меня проблема с французскими символами, такими как é, à, â, ç.
Например, со словом «défunt».
/>Я получаю либо «dfunt», либо «d©funt», либо «défunt»
Я пробовал использовать стандартный шрифт, локальный шрифт ttf, UTF8, другую кодировку с этой страницы:
https://api.itextpdf.com/iText/java/lat ... dings.html
Но ничего не работает.
Вот мой код (я удалил часть содержимого, чтобы сохранить ячейку с акцентуацией)
Код: Выделить всё
import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.io.font.PdfEncodings;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.font.PdfFontFactory.EmbeddingStrategy;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.PdfVersion;
import com.itextpdf.kernel.pdf.WriterProperties;
import com.itextpdf.kernel.colors.ColorConstants;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Text;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.properties.UnitValue;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.properties.TextAlignment;
import com.itextpdf.layout.borders.SolidBorder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class EtiquettesServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String fontPath = "E:/Tomcat 9.0/webapps/Thanact/calibri.ttf";
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=etiquettes.pdf");
try {
PdfWriter writer = new PdfWriter(response.getOutputStream(), new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0));
// writer.setPdfVersion(PdfVersion.PDF_2_0);
PdfDocument pdfDoc = new PdfDocument(writer);
Document document = new Document(pdfDoc);
PdfFont font = PdfFontFactory.createFont(fontPath, "UTF-8");
Table table = new Table(UnitValue.createPercentArray(4)).useAllAvailableWidth(); // 4 colonnes
Text label = new Text("Nom défunt : ").setBold();
Text value = new Text("MyValue");
cell.add(new Paragraph().add(label).add(value).setFont(font).setFontSize(8));
table.addCell(cell);
document.add(table);
document.close();
} catch (Exception e) {
e.printStackTrace();
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Erreur lors de la génération du PDF : " + e.getMessage());
System.out.println(e.getMessage());
}
}
}
Символы UTF-8 в itext pdfcell
Но похоже, что это из iText 7
p>
Спасибо за помощь
Подробнее здесь: https://stackoverflow.com/questions/790 ... on-in-java