Nothing at the moment, I was working on the ability to get the text justified on a page. I am trying to apply that style to PDPageContentStream, but this could be suitable for something like "PDParagraphContentStream" as a style for PDFBoxParagraph.
I will try to finish this development this week if I found enough time. 2011/10/14 Angelo zerr <[email protected]> > That's cool. > > Ok Kevin, I will tell you when I will commit my work. > Do you have developped something? If yes, which widgets do you have > managed? > Table, Paragraph, etc > > In my case I have developped the case with paragraph (which seems simple > but > complex for me a newbie with PDFBox) because x and y must be computed every > time. > > Regards Angelo > > 2011/10/14 Kévin Sailly <[email protected]> > > > It sounds good... > > > > > > > > 2011/10/14 Angelo zerr <[email protected]> > > > > > Ok I understand. I think we have the same goal : > > > > > > 1) My goal: docx -> PDF. > > > 2) Your goal : XML -> PDF. > > > > > > My idea is to provide a Java DOM-like PDFBox.(When I say DOM, its not > w3c > > > DOM). So you can use it just with Java code liek this: > > > > > > > > > > > > ----------------------------------------------------------------------------------------------- > > > PDFBoxDocument document = new PDFBoxDocument(); > > > PDFBoxParagraph paragraph = document.addParagraph(); > > > paragraph.addRun("AAAA"); > > > paragraph.addRun(" "); > > > paragraph.addRun("BBB"); > > > > > > > > > ----------------------------------------------------------------------------------------------- > > > > > > For my case (docx) I will load my docx with POI to have docx Java > > scrutcure > > > and I will loop to thoses structure to createPDFBoxDocument , > > > PDFBoxParagraph instances. > > > > > > For your case (HTML) you could implement SAX handler like : > > > > > > > > > > > > ----------------------------------------------------------------------------------------------- > > > public void startElement(String uri, String localName, String name, > > > Attributes atts) throws SAXException { > > > if ("p".localName) { > > > PDFBoxParagraph paragraph = document.addParagraph(); > > > } > > > } > > > > > > > > > ----------------------------------------------------------------------------------------------- > > > > > > docx and HTML (your sample) manages too styles. So I would like to > manage > > a > > > style method like this: > > > > > > > > > > > > ----------------------------------------------------------------------------------------------- > > > ParagraphStyle style=new ParagraphStyle(); > > > style.setMargin(10); > > > PDFBoxParagraph paragraph = document.addParagraph(); > > > paragraph.applyStyle(style); > > > > > > > > > ----------------------------------------------------------------------------------------------- > > > > > > ParagraphStyle could be populated with CSS or declared styles. > > > > > > What do you think? > > > > > > Regards Angelo > > > > > > 2011/10/14 Kévin Sailly <[email protected]> > > > > > > > Angelo, > > > > > > > > My goal is to get some text like: > > > > <p>some text</p> > > > > <p style="margin-left: 30px;">this one positionned!</p> > > > > > > > > And then produce the PDF with style applied: > > > > some text > > > > this one positionned! > > > > > > > > Regards, > > > > Kéivn > > > > > > > > > > > > > > > > > > > > 2011/10/14 Angelo zerr <[email protected]> > > > > > > > > > Hi Srinivaas, > > > > > > > > > > At first my PDFBox-DOM like can be used without docx (I must manage > > odt > > > > > too). And my idea is to use that for another application. > > > > > Your idea to convert docx 2 PDF with FOP, I have already > implemented > > > but > > > > I > > > > > don't like that : > > > > > > > > > > 1) FOP converter is very more slowly than iText converter. The > > > > explanation > > > > > is simple : > > > > > => FOP process : docx -> XSLT -> XSL-FO -> PDF > > > > > => iText process : docx -> (POI to get Java model) -> iText > > > > > > > > > > As you can notice with FOP process are more steps than IText > process. > > > FOP > > > > > process for docx is less powerfull than iText process and I have a > > lot > > > > > optimized my XSL (XSL Template is in a cahe, I'm using xsl:key, > etc). > > > > > > > > > > 2) with FOP converter you manage the conversion with XSL. With > IText > > > > > converter you manage teh conversion with Java. > > > > > IMHO, I prefer developping Java than XSL. Debug XSL is very hard > > > compare > > > > > debug Java code. > > > > > More docx use styles.xml where style A can extends style B. With > XSL > > I > > > > > compute style every time (how to manage some cache with XSL?) > > although > > > > with > > > > > Java I compute one time. > > > > > > > > > > Our iText converter works great but for license problem we can give > > our > > > > > code > > > > > to Apacahe. So I'm investiagting PDFBox. > > > > > > > > > > Regards Angelo > > > > > > > > > > 2011/10/14 Srinivaas_Venkatarayan < > > > > > [email protected] > > > > > > > > > > > > > > > > > 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. > > > > > > > > > > > > > > > > > > > > >

