So erstellen Sie ein PDF-Dokument von Sprachen, die von Unicode-char-set in Bezug auf die Verwendung von Drittanbieter-Schriftarten
Ich bin mit PDFBox und iText erstellen Sie eine einfache (nur Absätze) pdf-Dokument aus verschiedenen Sprachen. So etwas wie :
pdfBox:
private static void createPdfBoxDocument(File from, File to) {
PDDocument document = null;
try {
document = new TextToPDF().createPDFFromText(new FileReader(from));
document.save(new FileOutputStream(to));
} finally {
if (document != null)
document.close();
}
}
private void createPdfBoxDoc() throws IOException, FileNotFoundException, COSVisitorException {
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
PDType1Font font = PDType1Font.TIMES_ROMAN;
contentStream.setFont(font, 12);
contentStream.beginText();
contentStream.moveTextPositionByAmount(100, 400);
contentStream.drawString("š");
contentStream.endText();
contentStream.close();
document.save("test.pdf");
document.close();
}
itext:
private static Font blackFont = new Font(Font.FontFamily.COURIER, 12, Font.NORMAL, BaseColor.BLACK);
private static void createITextDocument(File from, File to) {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(to));
document.open();
addContent(document, getParagraphs(from));
document.close();
}
private static void addContent(Document document, List<String> paragraphs) {
for (int i = 0; i < paragraphs.size(); i++) {
document.add(new Paragraph(paragraphs.get(i), blackFont));
}
}
Die input-Dateien sind in UTF-8 codiert und einige Sprachen, die von Unicode-char-set, wie russische alphabet etc., werden nicht richtig dargestellt im pdf. Die Schriften in beiden Bibliotheken unterstützen keine Unicode-Zeichensatz, nehme ich an, und ich finde keine Dokumentation zum hinzufügen und verwenden von Drittanbieter-Schriftarten. Könnte bitte mir jemand helfen mit einem Beispiel ?
InformationsquelleAutor lisak | 2011-05-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mit iText, es hat ziemlich gute Unterstützung.
In iText in Action (Kapitel 2.2.2) können Sie mehr Lesen.
Müssen Sie laden Sie einige unicode-Schriften wie arialuni.ttf und es so machen :
arialuni.ttf-fonts funktionieren für mich, so weit ich habe es Unterstützung für
und nur PDF-Dokument in Rumänischer Sprache war nicht korrekt erstellt...
Mit PDFBox es ist fast die gleiche:
Jedoch als Gagravarr sagt, es funktioniert nicht, weil dieses Thema PDFBOX-903 . Auch mit 1.6.0-SNAPSHOT-version. Vielleicht Stamm arbeiten. Ich schlage vor, Sie verwenden iText. Es funktioniert es perfekt.
InformationsquelleAutor lisak
Können Sie finden diese Antwort hilfreich - es wird bestätigt, dass Sie nicht tun können, was Sie brauchen, mit der man die standard-type 1-fonts, wie Sie sind Latin1 nur
In der Theorie, die Sie gerade brauchen, um einbetten einer geeigneten schriftart in das Dokument behandelt alle Ihre codepoints, und verwenden Sie diese. Es gibt jedoch mindestens ein offener bug mit dem schreiben von unicode-strings, so gibt es eine chance, es könnte nicht funktionieren nur noch... Probieren Sie die neueste pdfbox aus dem svn-trunk zu sein, um zu sehen, ob es hilft!
InformationsquelleAutor Gagravarr
In meinem Projekt, ich habe gerade kopiert den font, unterstützt UTF8 (oder was auch immer Sprache, die Sie möchten) in ein Verzeichnis (oder Sie können Windows-Schriftarten-Pfad) und fügen Sie einige code, es sah so aus
Jetzt können Sie diese Schrift verwenden, um zu zeigen Sie Ihren text in verschiedenen Sprachen.
InformationsquelleAutor user1145691
//verwenden Sie diesen code.Manchmal setfont() willnot arbeiten mit Absatz
InformationsquelleAutor Bijin P Thomas