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

发布于 2024-12-10 22:46:18 字数 841 浏览 0 评论 0原文

可能的重复:
如何我使用 Perl 中的 XML 文件中的数据生成 PDF 文件?

我有存储在哈希中的 xml 标签,如下所示。

$var1={
     'stud.xml'={ 
                '24'=>'<address>
                        <streetname="xxxx"/>
                         <housenum="138"/">
                        </address>'
                 '20'=>'<address>
                       <streetname="xxxx"/>
                        <housenum="110"/">
                       </address>'
                     }...........

现在我需要使用 perl 脚本将其转换为 pdf。我搜索后发现 PDF::API2 是转换为 pdf 的最佳模块。阅读模块后,我可以创建新的 pdf 文件并设置一些设置,如字体、格式等......但我不明白如何将此 xml 数据处理为 pdf。

Possible Duplicate:
How can I produce a PDF file using data in an XML file, in Perl?

I have xml tags that stored in a hash as shown below.

$var1={
     'stud.xml'={ 
                '24'=>'<address>
                        <streetname="xxxx"/>
                         <housenum="138"/">
                        </address>'
                 '20'=>'<address>
                       <streetname="xxxx"/>
                        <housenum="110"/">
                       </address>'
                     }...........

now I need to convert into pdf by using perl script. I searched and I found PDF::API2 is best module to convert into pdf. After reading module I am able to create new pdf file and set some settings like font, format,like....but I can't understand how to process this xml data into pdf.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

残花月 2024-12-17 22:46:18

创建一个 LaTeX 模板,使用数据填充该模板,然后在其上运行 pdflatex

请注意,您发布的 XMLish 内容没有帮助。发布实际的 XML 或 Perl 数据结构。

这是一个例子:

#!/usr/bin/env perl

use warnings; use strict;
use HTML::Template;
use XML::Simple;

my $xml = <<'EO_XML';
<students>
    <student id="24">
        <address>
            <streetname val="xxxx"/>
            <housenum val="138" />
        </address>
    </student>
    <student id="20">
        <address>
            <streetname val="xxxx"/>
            <housenum val="110" />
        </address>
    </student>
</students>
EO_XML

my $data = XMLin($xml)->{student};

my @loop_data;

for my $student (values %$data) {
    my $address = $student->{address};
    push @loop_data, {
        HOUSENUM => $address->{housenum}{val},
        STREETNAME => $address->{streetname}{val},
    };
}

my $tmpl = HTML::Template->new(filehandle => \*DATA);

$tmpl->param(STUDENTS => \@loop_data);
$tmpl->output(print_to => \*STDOUT);

__DATA__
\documentclass{article}

\begin{document}

<TMPL_LOOP STUDENTS>
<TMPL_VAR HOUSENUM> <TMPL_VAR STREETNAME>

</TMPL_LOOP>
\end{document}

Create a LaTeX template, populate the template using the data, and then run pdflatex on it.

Note that the XMLish thing you posted is not helpful. Either post the actual XML or the Perl data structure.

Here is an example:

#!/usr/bin/env perl

use warnings; use strict;
use HTML::Template;
use XML::Simple;

my $xml = <<'EO_XML';
<students>
    <student id="24">
        <address>
            <streetname val="xxxx"/>
            <housenum val="138" />
        </address>
    </student>
    <student id="20">
        <address>
            <streetname val="xxxx"/>
            <housenum val="110" />
        </address>
    </student>
</students>
EO_XML

my $data = XMLin($xml)->{student};

my @loop_data;

for my $student (values %$data) {
    my $address = $student->{address};
    push @loop_data, {
        HOUSENUM => $address->{housenum}{val},
        STREETNAME => $address->{streetname}{val},
    };
}

my $tmpl = HTML::Template->new(filehandle => \*DATA);

$tmpl->param(STUDENTS => \@loop_data);
$tmpl->output(print_to => \*STDOUT);

__DATA__
\documentclass{article}

\begin{document}

<TMPL_LOOP STUDENTS>
<TMPL_VAR HOUSENUM> <TMPL_VAR STREETNAME>

</TMPL_LOOP>
\end{document}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文