HTML to PDF using iText : How can produce a checkbox

后端 未结 4 1586
后悔当初
后悔当初 2020-12-11 06:37

I have a simple HTML page, iText is able to produce a PDF from it. It\'s fine but the checkbox is ignored. What can I do about it ?

import java.io.FileOutput         


        
相关标签:
4条回答
  • 2020-12-11 07:09

    The only alternative I'm aware of at that point is to hack iText. The new XMLWorker should be considerably more extensible than The Old Way (HTMLWorker), but it'll still be Non Trivial.

    There might be some magic style tag you can pass in that will show up in a "generic tag" for a PdfPageEventHandler... lets see here...

    Reading the code, it looks like a style or attribute "generictag" will be propagated to the ...text.Chunk object via setGenericTag().

    So what you need to do is XSLT your unsupported tags into div/p/whatever with a "generictag" attribute that is a string which encodes the information you need to recreate the original element.

    In your PdfPageEventHandler's OnGenericTag function, you have to parse that tag and recreate whatever it is you're trying to recreate.




    That's just crazy enough to work!

    0 讨论(0)
  • 2020-12-11 07:12

    You may be out of luck here.

    The "htmlWorker" which is used to parse the html tags, doesn't seem to support the "input" tag.

    public static final String tagsSupportedString = "ol ul li a pre font span br p div body table td th tr i b u sub sup em strong s strike h1 h2 h3 h4 h5 h6 img";
    

    You can access the source code for "HtmlWorker" from here. http://www.java2s.com/Open-Source/Java-Document/PDF/pdf-itext/com/lowagie/text/html/simpleparser/HTMLWorker.java.htm
    It is from this source that I figured that out.

     public void startElement(String tag, HashMap h) {
             if (!tagsSupported.containsKey(tag))
                    return; //return if tag not supported
     // ...
    }
    
    0 讨论(0)
  • 2020-12-11 07:13

    creating pdfs with iText from html is a bit troubled. i advise to use the flying saucer library for this. it is also using iText in the background.

    0 讨论(0)
  • 2020-12-11 07:18

    Are you generating the HTML?

    If so, then instead of using an HTML checkbox you could using the Unicode 'ballot box' character, which is or ☐. It's just a box, you can't electronically tick it or untick it; but if the PDF is intended for printing then of course people can tick it using a pen or pencil.

    For example:

         String str = "<HTML><HEAD></HEAD><BODY><H1>Testing</H1><FORM>" + 
                   "check : &#x2610;<br/>" +
                   "</FORM></BODY></HTML>";
    

    Note that this will only work if you're using a Unicode font in your PDF; I think that iText won't use a Unicode font unless you tell it to.

    0 讨论(0)
提交回复
热议问题