pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tilman Hausherr <THaush...@t-online.de>
Subject Re: Rendering of a Devanagari text
Date Tue, 17 Jan 2017 07:55:38 GMT
Am 17.01.2017 um 07:32 schrieb Claudius Teodorescu:
> Well, I was just about to congratulate myself for fixing this with PDFBox,
> as FOP is returning good output, but with a character that is represented
> in half.
>
> So, I guess I will need a text layout engine. What output of such engine
> would be fit for PDFBox?

In PDPageContentStream.showText there is this line:

COSWriter.writeString(font.encode(text), getOutput());

So you need to get that sequence... might be tricky as above that line 
there's the subsetting that also needs the correct codes. This is not a 
change that will be done within a few hours.

Tilman


>
>
> Thanks,
> Claudius
>
> On Tue, Jan 17, 2017 at 7:18 AM, Tilman Hausherr <THausherr@t-online.de>
> wrote:
>
>> Am 15.01.2017 um 20:04 schrieb Claudius Teodorescu:
>>
>>> Its is not a big deal, but works for an awt component, but it is not
>>> related to that:
>>>
>>>           String s = "कारणत्त्वङ्गवाश्वादीनमपीति
चेत् युक्तम्";
>>>           Font font2 = new Font("Sanskrit2003", Font.PLAIN, 24);
>>>           FontRenderContext frc = new FontRenderContext(new
>>> AffineTransform(), true, true);
>>>
>>>           char[] chars = s.toCharArray();
>>>           GlyphVector glyphVector = font2.layoutGlyphVector(frc, chars, 0,
>>> chars.length, 0);// createGlyphVector(frc, s);
>>>
>>>           int length = glyphVector.getNumGlyphs();
>>>
>>>           for (int i = 0; i < length; i++) {
>>>             Shape glyph = glyphVector.getGlyphOutline(i);
>>>             System.out.println(glyphVector.getGlyphCode(i));
>>>           }
>>>
>>> Any pointers about where I can hook this in PDFBox?
>>>
>> Problem is we don't use the awt fonts anymore.
>>
>> Tilman
>>
>>
>>
>>
>>> Thanks,
>>> Claudius
>>>
>>> On Sun, Jan 15, 2017 at 4:56 PM, Andreas Lehmkuehler <andreas@lehmi.de>
>>> wrote:
>>>
>>> Hi,
>>>> Am 15.01.2017 um 15:51 schrieb Claudius Teodorescu:
>>>>
>>>> Hi,
>>>>>
>>>>> Thanks for the answer, Tilman.
>>>>>
>>>>> I managed to get the Devanagari text exactly as it should, by using
>>>>> java.awt.font.layoutGlyphVector().
>>>>>
>>>>> Are they any chances to write a GlyphVector in a PDFBox page?
>>>>>
>>>>> There was a discussion at [1] about using GlpyhVector, but we didn't
>>>> make
>>>> any descision nor did we implement anything.
>>>>
>>>> Do you mimd to share some of your code as a possible starting point?
>>>>
>>>> BR
>>>> Andreas
>>>>
>>>> [1] https://issues.apache.org/jira/browse/PDFBOX-3550
>>>>
>>>>
>>>> Thanks,
>>>>> Claudius
>>>>>
>>>>> On Sat, Jan 14, 2017 at 9:45 AM, Tilman Hausherr <THausherr@t-online.de
>>>>> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>>> This is not supported, sorry. PDFBox just outputs the glyphs for
the
>>>>>> single characters and does not replace for ligatures.
>>>>>>
>>>>>> Tilman
>>>>>>
>>>>>>
>>>>>> Am 14.01.2017 um 08:44 schrieb Claudius Teodorescu:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>>> I am using pdfbox 2.0.4, and I am trying to output a pdf document
with
>>>>>>> text following devanagari text: कारणत्त्वङ्गवाश्वादीनमपीति
चेत्
>>>>>>> युक्तम्.
>>>>>>>
>>>>>>> The code is very simple:
>>>>>>>       @Test
>>>>>>>       public void testPdfBox() throws IOException {
>>>>>>>           PDDocument document = new PDDocument();
>>>>>>>           PDPage page = new PDPage();
>>>>>>>           document.addPage(page);
>>>>>>>
>>>>>>>           PDFont font = PDType0Font.load(document,
>>>>>>>                   new File("/home/claudius/workspace
>>>>>>> s/repositories/backup/fonts/Sanskrit2003.ttf"));
>>>>>>>
>>>>>>>           PDPageContentStream contentStream = new
>>>>>>> PDPageContentStream(document, page);
>>>>>>>
>>>>>>>           contentStream.beginText();
>>>>>>>           contentStream.setFont(font, 12);
>>>>>>>           contentStream.moveTextPositionByAmount(100, 700);
>>>>>>> contentStream.showText("कारणत्त्वङ्गवाश्वादीनमपीति
चेत् युक्तम्");
>>>>>>>           contentStream.endText();
>>>>>>>
>>>>>>>           // Make sure that the content stream is closed:
>>>>>>>           contentStream.close();
>>>>>>>
>>>>>>>           // Save the results and ensure that the document is
properly
>>>>>>> closed:
>>>>>>>           document.save("target/" + name.getMethodName() + ".pdf");
>>>>>>>           document.close();
>>>>>>>       }
>>>>>>>
>>>>>>> The output pdf file (attached) is not rendering correctly the
string,
>>>>>>> as
>>>>>>> it is above. Namely, the ligatures are not displayed, as if they
do
>>>>>>> not
>>>>>>> exist. On the other hand, if I am copying the text from the pdf
file,
>>>>>>> and
>>>>>>> paste it in eclipse, it shows perfectly.
>>>>>>>
>>>>>>> I checked the pdf output with evince, firefox, and adobe reader
9, in
>>>>>>> ubuntu.
>>>>>>>
>>>>>>> Any idea on how to fix this display issue?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Claudius
>>>>>>>
>>>>>>> --
>>>>>>> http://kuberam.ro
>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>>>>>>> For additional commands, e-mail: users-help@pdfbox.apache.org
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>>>> For additional commands, e-mail: users-help@pdfbox.apache.org
>>>>
>>>>
>>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>> For additional commands, e-mail: users-help@pdfbox.apache.org
>>
>>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: users-help@pdfbox.apache.org


Mime
View raw message