に関連
からXHTMLでPDFを生成し、私はPDFに簡単にHTML/XHTMLに変換することができます。
ここで、HTML/XHTMLのパラメータを設定できるようにするために、コアJSTLを使用してテンプレートを作成するためにJSPを使用することにしました。 TomcatはJSPをHTMLに解析するので、応答コンテンツを取得してFlying-saucerで処理して結果をPDFに変換する必要があります。
しかし、上記の質問に関連して応答内容を傍受する方法はわかりません。
1 - ServletResponseインターフェイスは、JSPを処理する前にコンテンツを追加するのに便利です。
2 - HttpServletResponseは応答のヘッダーを変更します。
私のメソッドの中でレスポンスの内容を取得してフライングソーサーで処理し、それをクライアントに「application/pdf」として送り返すにはどうすればよいですか?
N.B. :私たちはStruts 1を使用しています。私はそれが悪いことを知っています。私たちはすぐにSpringに移りますが、まだこのアプリケーションのためには移動しません。
ない-最高しかし、作業溶液:今私はURIを使用して、JSPの内容を設定するリクエストパラメータを使用するために
は、その後、「アプリケーション/ PDF」へと戻ってそれを送信しますクライアント。
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.DocumentException;
import java.io.BufferedReader;
import java.io.CharArrayWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Scanner;
/**
* PdfConverter
* Pdf methods to convert Jsp from URI, or Xhtml/Xml from URI
* or internal content to Pdf.
*/
public class PdfConverter {
private static String encoding = "UTF-8";
/**
* Convert JSP from local server to PDF
* @param jspUri usage :
* URL jspUri =
* new URL("http://localhost:8080/myApp/myJspServlet?param1=1¶m2=2");
* @param pdfFileName
* @return Html content as a String from generated Jsp.
* @throws DocumentException
* @throws IOException
*/
public static String JspToHtmlString(URL jspUri) throws DocumentException,
IOException {
BufferedReader in = new BufferedReader(
new InputStreamReader(jspUri.openStream())
);
CharArrayWriter caw = new CharArrayWriter();
int octet = 0;
while ((octet = in.read()) != -1) { caw.write(octet); }
String pdfContent = caw.toString();
caw.close();
return pdfContent;
}
/**
* Convert Xhtml from package to PDF to the folder where this class is
* located.
* @param xhtmlFileName name of the Xhtml file inside the application.
* @param pdfFileName name of the written Pdf file.
* @return Pdf file generated and written on disk.
* @throws DocumentException
* @throws IOException
*/
public static File XhtmlToPdfConverter(String xhtmlFileName,
String pdfFileName) throws
DocumentException,
IOException {
FileOutputStream pdf = new FileOutputStream(pdfFileName);
new ITextRenderer() {{
setDocumentFromString(
new Scanner(
this.getClass().getResourceAsStream(xhtmlFileName), encoding
).useDelimiter("\\A").next()
);
layout();
createPDF(pdf);
}};
pdf.close();
return new File(pdfFileName);
}
}
を使用してビューをレンダリング取得する必要があります。インスピレーションについては、[struts2-pdfstream](https://github.com/aleksandr-m/struts2-pdfstream)を参照してください。 –