pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andreas Lehmkühler <andr...@lehmi.de>
Subject Re: Saving PDFHighlighter selection to PDF
Date Thu, 27 Feb 2014 19:20:37 GMT
Hi,

Am 27.02.14 13:05, schrieb Nikos Chantziaras:
> I suppose it's not possible to convert the jar files into DLLs with
> ikvmc.exe? I tried that, but there's lots of error messages about
> missing implementations. Has anyone tried that before?
That is exactly what I did. In most cases only the AWT stuff is 
affected. Most likely the whole rendering stuff won't work. OverlayPDF 
should work, at least you should give it a try.

BR
Andreas Lehmkühler

> On 27/02/14 12:32, Andreas Lehmkühler wrote:
>> I'm afraid not. The Website provides an older Version of PDFBox only
>> as it becomes more difficult to compile a .NET version using IKVM.
>> Maybe you should try to compile your own version using a more recent
>> version if PDFBox.
>>
>> BR
>> Andreas Lehmkühler
>>
>> On 27. Februar 2014 10:55:07 MEZ, Nikos Chantziaras <realnc@gmail.com>
>> wrote:
>>> I'm using this:
>>>
>>>    http://pdfbox.lehmi.de
>>>
>>> I suppose OverlayPDF is not included?
>>>
>>>
>>> On 27/02/14 10:09, Maruan Sahyoun wrote:
>>>> Hi,
>>>>
>>>> if you are using Overlay.java please use OverlayPDF.java instead.
>>> Overlay.java will be removed in the next major release.
>>>>
>>>> To add some highlight rectangle handling it yourself you can use
>>>>
>>>>        PDDocument document = PDDocument.loadNonSeq( ... );
>>>>        PDPage page = (PDPage)
>>> document.getDocumentCatalog().getAllPages().get(0);
>>>>           /* Set up the graphic state */
>>>>
>>>>        // Define a new extended graphic state
>>>>        PDExtendedGraphicsState extendedGraphicsState = new
>>> PDExtendedGraphicsState();
>>>>        // Set the transparency/opacity
>>>>        extendedGraphicsState.setNonStrokingAlphaConstant(0.5f);
>>>>        // Get the page resources.
>>>>        PDResources resources = page.findResources();
>>>>
>>>>        // Get the defined graphic states.
>>>>        Map<String, PDExtendedGraphicsState> graphicsStateDictionary
=
>>> resources.getGraphicsStates();
>>>>
>>>>        if (graphicsStateDictionary == null) {
>>>>            graphicsStateDictionary = new HashMap<String,
>>> PDExtendedGraphicsState>();
>>>>        }
>>>>
>>>>        graphicsStateDictionary.put("TransparentState",
>>> extendedGraphicsState);
>>>>        resources.setGraphicsStates(graphicsStateDictionary);
>>>>
>>>>        /* End of setup */
>>>>
>>>>        // Now we will be able to call the state definition before
>>> doing the drawing
>>>>        PDPageContentStream contentStream = new
>>> PDPageContentStream(document, page,true,true);
>>>>        contentStream.appendRawCommands("/TransparentState gs\n");
>>>>        contentStream.setNonStrokingColor(Color.yellow);
>>>>
>>>>        // put in the coordinates for the rectangle found by the text
>>> extraction
>>>>        contentStream.fillRect(100f,100f,100f,100f);
>>>>        contentStream.close();
>>>>
>>>>        document.save( ... );
>>>>
>>>> null checks, error handling etc. is omitted so the code is clearer.
>>>>
>>>> For the annotations - how did you print the PDF? If you print it
>>> using e.g. Adobe Reader printing the annotations is optional and has to
>>> be activated in the printer dialog, otherwise they will be omitted.
>>>>
>>>> BR
>>>> Maruan Sahyoun
>>>>
>>>>
>>>>
>>>> Am 26.02.2014 um 23:48 schrieb Nikos Chantziaras <realnc@gmail.com>:
>>>>
>>>>> That doesn't work, it turns out. Only the test PDFs were working.
>>> Trying to overlay "real" PDFs result in an error that Cos Arrays are
>>> not supported.
>>>>>
>>>>> So I then tried to use PDF annotations instead. This seemed to work
>>> fine. However, when someone tried to print the PDF, annotated text was
>>> not highlighted at all, even though it looks just fine on screen!
>>>>>
>>>>> So I'm out of ideas. It would appear that PDFBox is indeed incapable
>>> of highlighting text?
>>>>>
>>>>>
>>>>> On 17/02/14 17:18, Nikos Chantziaras wrote:
>>>>>> I've come up with a good way to insert color-filled rectangles
>>> through
>>>>>> the use of Overlay (so that they are rendered behind the text
>>> instead of
>>>>>> the front of it.)
>>>>>>
>>>>>> On 17/02/14 13:52, Maruan Sahyoun wrote:
>>>>>>> [...]
>>>>>>> If you would like to make the highlight part of the PDF you could
>>>>>>> create an annotation or draw a rectangle behind the text.
>>>>>>>
>>>>>>> Steps would be a. find the text b. get the coordinates of the
text
>>> c.
>>>>>>> create an annotation or a rectangle around the coordinates
>>>>>>>
>>>>>>> You could also use the information in the highlight xml file
to
>>> get
>>>>>>> the coordinates for the annotation/rectangle
>>>>>>>
>>>>>>> Am 17.02.2014 um 12:09 schrieb Nikos Chantziaras
>>> <realnc@gmail.com>:
>>>>>>>
>>>>>>>> It is not apparent how to save a PDF after I highlight some
text
>>> in
>>>>>>>> it. For example:
>>>>>>>>
>>>>>>>> PDDocument doc = PDDocument.load("source.pdf"); PDFHighlighter
hl
>>> =
>>>>>>>> new PDFHighlighter(); java.io.FileWriter xml = new
>>>>>>>> java.io.FileWriter("tmp.xml"); hl.generateXMLHighlight(doc,
>>> "450",
>>>>>>>> xml);
>>>>>>>>
>>>>>>>> How do I now save source.pdf (or a copy of it, if overwriting
is
>>>>>>>> not possible) with the text highlighted?
>>>>>
>>>>
>>>>
>>
>


Mime
View raw message