Spring AbstractPdfПросмотреть уже созданный pdf в браузере - PullRequest
3 голосов
/ 11 августа 2011

У меня уже есть 2 файла PDF.Они находятся в следующей папке WebContent/pdf/

Я расширил SpringP AbstractPdfView, прежде чем создавать PDF на лету.

На этот раз я хочу использовать его до

1) отобразить уже созданный PDF и 2) использовать itext, чтобы передать объект модели во второй файл PDF и заполнить уже созданные поля формы PDF.

Я знаю с 1) Я могу просто создать ссылку и получить доступ к PDF напрямую,Я пытался получить к нему доступ через расширение AbstractPdfView, так как считаю, что мне нужно использовать это для случая 2).

Я просто не уверен, как получить ресурс и затем отобразить его в браузере с этим классом.

Может кто-нибудь показать мне, как выполнить это с примером?

spring-pdf-views.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean id="BlankPDF" class="com.example.BlankPDF"/>
    <bean id="PopulatedPDF" class="com.example.PopulatedPDF"/>

</beans>

spring-servlet.xml

<bean id="xmlViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver">
    <property name="order" value="1"/>
    <property name="location">
        <value>/WEB-INF/spring-pdf-views.xml</value>
    </property>
</bean>

1 Ответ

3 голосов
/ 12 августа 2011

Я думаю, что вы, возможно, захотите вместо этого создать подкласс AbstractPdfStamperView:

http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/web/servlet/view/document/AbstractPdfStamperView.html

Похоже, вы установили свойство url вашего подкласса AbstractPdfStamperView в качестве пути к существующему файлу PDF:

<!-- PopulatedPDF extends AbstractPdfStamperView -->
<bean id="PopulatedPdf class="com.example.PopulatedPdf"> 
    <property name="url" value="/WEB-INF/pdfs/blankform.pdf" />
</bean>

Тогда вам необходимо переопределить mergePdfDocument ():

@Override
protected void mergePdfDocument(Map<String,Object> model,
                                     com.lowagie.text.pdf.PdfStamper stamper,
                                     HttpServletRequest request,
                                     HttpServletResponse response)
                              throws Exception {

    // follow example code for filling out a form using iText:
    // http://itextpdf.com/examples/iia.php?id=122

    AcroFields form = stamper.getAcroFields();
    // form.setField("fieldName", model.get("fieldName"));
}

Возможно, вы захотите взглянуть на документы iText PdfStamper, чтобы выяснить, какие у вас есть варианты.

http://api.itextpdf.com/itext/index.html?com/itextpdf/text/pdf/PdfStamper.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...