Hi Angelo, If the source is going to be docx file, can you not use xslt and FOP to convert the xml (provided by docx file) to PDF?
Srinivaas -----Original Message----- From: Angelo zerr [mailto:[email protected]] Sent: Friday, October 14, 2011 5:07 PM To: [email protected] Subject: Re: Replace itext with PDFBox for XDocReport project? Hi Kevin, What do you mean with richtext? In my case I would like create a PDF from scratch with PDF DOM-like with the same mean than iText. I have started to create a project (not commited for the moment Here my (basic sample) to generate paragraph with several text content (that I have called run like docx) ------------------------------------------------------------------------------------------------ PDFBoxDocument document = new PDFBoxDocument(); PDFBoxParagraph paragraph = document.addParagraph(); paragraph.addRun("AAAA"); paragraph.addRun(" "); paragraph.addRun("BBB"); document.save("test.pdf"); ------------------------------------------------------------------------------------------------ This code generate a PDF with : ------------------------------------------------------------------------------------------------ AAAA BBB ------------------------------------------------------------------------------------------------ If you are interested (working together?) I could commit my work on our XDocReport git. Regards Angelo 2011/10/14 Kévin Sailly <[email protected]> > Hello, > > I am planning to build some code to create text from richtext (text from > rech text editor), is that what you are planning to do? > > Regards, > Kévin > > > > 2011/10/13 Angelo zerr <[email protected]> > > > Hi PDFBox Team, > > > > I have started to investigate time with PDFBox to try to provides > > High-Level > > API to manage paragraph, table widgets etc.... > > I recall my problem : we are using iText for our ODT->PDF and Docx->PDF > > converter and we wish provides our code for Apache. Problem is iText > > license. > > So I'm searching PDF API (PDFBox?FOP?) to manage PDF with Java model (not > > with XSL-FO). It seems that FOP provides this feature, but it's very hard > > to > > understand how to manage that? > > > > I have tried to manage a simple case : a paragraph with some text. I > would > > like generate PDF with this content: > > > > ---------------------------- > > AAAA BBBB > > ---------------------------- > > > > But not with one String but with 3 Strings (call 3 times > > contentStream.drawString(...);) > > The solution that I have found to manage that is to store the last X of > the > > added Stringby using Stringlenght+Font + Font size. Here my code > > > > ------------------------------------------------------ > > import java.io.IOException; > > > > import org.apache.pdfbox.exceptions.COSVisitorException; > > import org.apache.pdfbox.pdmodel.PDDocument; > > import org.apache.pdfbox.pdmodel.PDPage; > > import org.apache.pdfbox.pdmodel.edit.PDPageContentStream; > > import org.apache.pdfbox.pdmodel.font.PDFont; > > import org.apache.pdfbox.pdmodel.font.PDType1Font; > > > > public class Test3 { > > > > private static float lastX = 0; > > > > public static void main(String[] args) throws IOException, > > COSVisitorException { > > PDDocument doc = null; > > try { > > doc = new PDDocument(); > > > > PDPage page = new PDPage(); > > doc.addPage(page); > > > > PDPageContentStream contentStream = new > PDPageContentStream(doc, > > page); > > > > PDFont font = PDType1Font.HELVETICA_BOLD; > > long fontSize = 5; > > addText("AAAA", font, fontSize, page, contentStream); > > addText(" ", font, fontSize, page, contentStream); > > addText("BBBB", font, fontSize, page, contentStream); > > > > contentStream.close(); > > > > doc.save("test.pdf"); > > > > } finally { > > if (doc != null) { > > doc.close(); > > } > > } > > } > > > > public static void addText(String text, PDFont font, long fontSize, > > PDPage page, PDPageContentStream contentStream) throws > > IOException { > > > > // Compute x > > float x = lastX; > > float nextX = lastX + font.getStringWidth(text) * fontSize / > 1000f; > > > > // Compute Y > > float y = page.getMediaBox().getHeight() > > - (font.getFontHeight("A".getBytes(), 0, 1) * fontSize / > > 1000f); > > > > contentStream.beginText(); > > contentStream.setFont(font, fontSize); > > contentStream.moveTextPositionByAmount(x, y); > > contentStream.drawString(text); > > contentStream.endText(); > > > > // Recompute lastX > > lastX = nextX; > > } > > > > } > > ------------------------------------------------------ > > > > I would like know if it's the correct mean? If it's OK, I would like know > > if > > it's possible to retrieve the default Font of the document, because in my > > case I have setted the Font? > > > > My code doesn't manage wrap text and I would like know how to manage > that? > > > > I'm very interested to provides and contribute Hight level API for PDFBox > > (paragraph, table...) but if I have no support I will give up my idea > (hope > > you will understand). > > > > Thank a lot for your help! > > > > Regards Angelo > > > > > > > > > > 2011/9/5 Angelo zerr <[email protected]> > > > > > Hi Jeremias, > > > > > > I'm sorry I have not seen your answer > > > > > > http://mail-archives.apache.org/mod_mbox/incubator-odf-dev/201108.mbox/%[email protected]%3E > > > When I have studied FOP to manage PDF just with Java PDF widget I have > > not > > > found documentation so I believed that it was not possible, but it > seems > > > that is possible. > > > That's very cool. I will study that. > > > > > > Many thanks! > > > > > > Regards Angelo > > > > > > > > > 2011/9/5 Jeremias Maerki <[email protected]> > > > > > >> Angelo, > > >> as I explained in [1], you don't have to use XSL-FO when using Apache > > >> FOP. It supports alternative means to create PDFs. > > >> > > >> [1] > > >> > > > http://mail-archives.apache.org/mod_mbox/incubator-odf-dev/201108.mbox/%[email protected]%3E > > >> > > >> But of course, Apache PDFBox would profit a lot from a higher-level > PDF > > >> production API. Any contributions are more than welcome. > > >> > > >> On 05.09.2011 10:56:20 Angelo zerr wrote: > > >> > Hi Jukka, > > >> > > > >> > Thank a lot for you answer. I have already implemented a docx->PDF > and > > >> > odt->PDF converters with FOP but I decided to give up for : > > >> > > > >> > * performance reason. I have used XSLT cache, use xsl:key to compute > > the > > >> > odt/docx styles but the FOP implementation is less performant than > > iText > > >> > implementation, because : > > >> > * FOP process : odt -> XSLT -> FO -> FOP > > >> > * iText process : odt -> ODFDOM (Java) -> iText > > >> > * xslt vs Java model : with the iText process, your model is Java, > > >> although > > >> > with FOP your model is XML. I prefer develop Java instead of XSLT. > > >> > > > >> > That's why I'm searching Java PDF API like PDFBox to replace iText > to > > >> > provides our code to Apache. > > >> > > > >> > Regards Angelo > > >> > > > >> > 2011/9/5 Jukka Zitting <[email protected]> > > >> > > > >> > > Hi Angelo, > > >> > > > > >> > > On Mon, Sep 5, 2011 at 10:11 AM, Angelo zerr < > [email protected] > > > > > >> > > wrote: > > >> > > > I suppose that my post was not well explained as I have no > answer. > > I > > >> will > > >> > > be > > >> > > > very happy to use PDFBox in our XDocReport converter (docx-> PDF > > and > > >> > > odt-> > > >> > > > PDF) but develop converter is a big work and I can not > investiaget > > >> time > > >> > > if I > > >> > > > have no support. > > >> > > > > >> > > There's been some interest in making it easier to use PDFBox to > > >> > > generate complex new PDF documents, but so far the main use cases > > have > > >> > > been simpler. You might want to look at Apache FOP > > >> > > (http://xmlgraphics.apache.org/fop/) for a higher-level PDF > > >> generation > > >> > > tool. > > >> > > > > >> > > BR, > > >> > > > > >> > > Jukka Zitting > > >> > > > > >> > > >> > > >> > > >> > > >> Jeremias Maerki > > >> > > >> > > > > > > DISCLAIMER: This email (including any attachments) is intended for the sole use of the intended recipient/s and may contain material that is CONFIDENTIAL AND PRIVATE COMPANY INFORMATION. Any review or reliance by others or copying or distribution or forwarding of any or all of the contents in this message is STRICTLY PROHIBITED. If you are not the intended recipient, please contact the sender by email and delete all copies; your cooperation in this regard is appreciated.

