我目前正在开发一个应用程序,其中有一个用户应该使用的表单来键入富文本,以后必须将其转换为 PDF。
我将ckeditor用于文本区域。所以在输入的文本后面有 HTML 代码。然后,我曾经XMLWorker
将文本转换为PDF。
但在转换之前,我应该在文本末尾动态包含一个图像,并为此使用<img sr=""/>
标签。但是现在的问题是当文本很长时,图像在页面底部被剪切,而不是转到下一页。
我想到了另一种解决方案,即在 PDF 上添加图像,就像使用 itext Image 类一样。
但是当这样做时,我不知道当页面上没有足够的空间用于文本之后的图像时,我不知道要编写哪个代码来动态地将图像放在下一页上。如果有人能帮我解决这个问题,我会很高兴。
这是我当前的代码:
public class PdfMaker {
public String generatePdf( Theme theme, Cible cible, int i ) {
String chaine = null;
String new_chaine = null;
if ( theme.getCorps() != null ) {
chaine =
"<html><head><meta content=\"charset=UTF-8\"/></head><body>" + theme.getCorps()
+ "<br/><p/><img src=\" " + Constantes.BANNERS_PATH + Constantes.PREF_BANNER + i
+ Constantes.SUFF_BANNER
+ " \"/></body></html>";
// On remplace les patterns contenus dans le texte
new_chaine = remplacerPatterns( chaine, cible );
}
// On génère un nom pour le PDF à créer
String outfilename = genOutputName();
try {
// On crée un objet document
Document document = new Document();
// On crée un PDF portant le nom généré dans le chemin défini
PdfWriter writer = PdfWriter.getInstance( document, new FileOutputStream( Constantes.PDFs_PATH + "\\"
+ outfilename ) );
document.open();
// On transpose le texte (en HTML) sur le PDF
XMLWorkerHelper.getInstance().parseXHtml( writer, document, new StringReader( new_chaine ) );
System.out.println( "pdf généré" );
// System.out.println( theme.getCorps().length() );
document.close();
} catch ( Exception e ) {
e.printStackTrace();
}
return outfilename;
}
private static String genOutputName() {
return Long.toString( System.currentTimeMillis() ) + ".pdf";
}
public String remplacerPatterns( String texte, Cible cible ) {
String texte1 = null;
texte1 = texte.replaceAll( "\\{nom\\}", cible.getNom() )
.replaceAll( "\\{prenom\\}", cible.getPrenom() );
return texte1;
}
}
PS:我不是以英语为母语的人,我可能还没有找到合适的词来表达自己。所以如果我写的有什么不清楚的地方,请告诉我。
谢谢