Use YAHP library.This is the best library I have worked so far to convert HTML to PDF. This is written on the top of flying saucer which is a big disappointment as compared to it's popularity.It won't even render simple input text boxes.So, I turned to YAHP
library which is excellent for your case.
try this code after you get all the jars related to this library.
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.allcolor.yahp.converter.CYaHPConverter;
import org.allcolor.yahp.converter.IHtmlToPdfTransformer;
import org.htmlcleaner.CleanerProperties;
import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.PrettyHtmlSerializer;
import org.htmlcleaner.TagNode;
public class YahpHtmlToPdf {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
try{
CleanerProperties props = new CleanerProperties();
props.setTranslateSpecialEntities(true);
props.setTransResCharsToNCR(true);
props.setOmitComments(true);
TagNode tagNode = new HtmlCleaner(props).clean(new File("C:\\Users\\MyComputer\\Desktop\\aspose.html"));
String newString=new PrettyHtmlSerializer(props).getAsString(tagNode, "ISO-8859-1");
CYaHPConverter converter = new CYaHPConverter();
File fout = new File("C:\\sample\\aspose.pdf");
FileOutputStream out = new FileOutputStream(fout);
Map properties = new HashMap();
List headerFooterList = new ArrayList();
properties.put(IHtmlToPdfTransformer.PDF_RENDERER_CLASS,IHtmlToPdfTransformer.FLYINGSAUCER_PDF_RENDERER);
converter.convertToPdf(newString,IHtmlToPdfTransformer.A1P,headerFooterList, "file:///temp/",out,properties);
out.flush();
out.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
This is screenshot of pdf generated with your html. .You can specify page size like this IHtmlToPdfTransformer.A1P
.