如何使用Perl中的XML文件中的数据生成PDF文件?

您好我如何使用模板工具包阅读此信息

 $var1= {  
  'STC'=>[
     {
        'gym'=>{
              'hyd'=>{
                   'com'=>[
                        'dr'=>'1', 
                         'typ'=>'z',
                          'bemo'=>{
                               'bm'=>'1',
                                'typ'=>'x',
                                'col'=>'red'
                                 }
                               } 
                            {
                          'dr'=>'12', 
                         'typ'=>'a',
                          'bemo'=>{
                               'bm'=>'25',
                                'typ'=>'p',
                                'col'=>'red'
                                 }
                            } 
                         {
                          'dr'=>'23', 
                         'typ'=>'k',
                          'bemo'=>{
                               'bm'=>'22',
                                'typ'=>'w',
                                'col'=>'blue'
                                 }
                            } 
                          {
                          'dr'=>'3', 
                         'typ'=>'s',
                          'bemo'=>{
                               'bm'=>'9',
                                'typ'=>'B',
                                'col'=>'green'
                                 }
                            } 

                          }
                       }
                      ]
                     };

我无法获得这种类型的复杂数据,保留了我解决的所有内容,我正在按照自己的意愿获得输出,但是这个问题让我很痛苦.请帮助我.

最佳答案
好的,所以你有一些数据,你期望它是什么样的?听起来很危险,你可以简单地在文本编辑器中打开并打印pdf或保存为rtf.显然这不是你的意思.

您需要以某种方式格式化数据.然后,转换将只是将您的数据应用于该格式.

正如我提到here,你可以制作一个LaTeX模板并用你的数据和Template::Toolkit填充它,并使用LaTeX编译器进行编译.这会给你一个PDF.

#!/usr/bin/env perl

use strict;
use warnings;

use XML::Fast;
use Template;

my $xml = <<'XML';
 <student>
      <number>24</number>
      <education>bachelors</education>
      <specialization>computers </specialization>
     -<address>
         <house_number="128"/>
         <street name="xxxx"/>
           <proddutoor/>
      <address/>
     -<details>
          <name="clar"/>
          <age="20"/>
         <sex="m"/>
       </details>
</student>
 <student>
      <number>23</number>
      <education>ph.d.</education>
      <specialization>physics </specialization>
     -<address>
         <house_number="128"/>
         <street name="xxxx"/>
           <proddutoor/>
      <address/>
     -<details>
          <name="joel"/>
          <age="20"/>
         <sex="m"/>
       </details>
</student>
XML
my $xml_hash = xml2hash $xml;

my $template = Template->new();

my $filename = 'output.tex';

#I think the following is a holdover from a previous version
#as I cannot check right now, I will leave as a comment:
#open my $fh, '>', $filename;

$template->process(\*DATA, $xml_hash, $filename)
    || die "Template process failed: ", $template->error(), "\n";

system( "pdflatex $filename" );

__DATA__
\documentclass{article}

\title{Roster}
\author{pavani}

\begin{document}
\maketitle

[% FOREACH st IN student %]
Student [% st.number %] is a [% st.specialization %] [% st.degree %] student.

[% END %]

\end{document}

注: XML :: Fast甚至可以很好地对付格式不佳的XML 🙂

转载注明原文:如何使用Perl中的XML文件中的数据生成PDF文件? - 代码日志