gpt4 book ai didi

linux - 从流中写入 PDF 二进制文件会产生格式错误的 PDF

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:31 25 4
gpt4 key购买 nike

亲爱的 Stack Overflow 用户,

如果您能帮助解决以下问题,我将不胜感激:我们有一个用作转发代理的 Apache 服务器,配置了 ext_filter:只要响应是 MIME 类型的 PDF,就会调用过滤器(一个 perl 脚本),并且可以从 STDIN 读取 PDF 的内容。我们从 STDIN 读取 PDF,将其写入文件,仅此而已。这几乎总是有效,但在一个特定的网站上,以下列方式编写的 PDF 格式不正确:

my $input_file = shift;
binmode STDIN;
open(OUT, ">" . $input_file);
binmode OUT;
foreach my $line (<STDIN>){
print OUT $line;
}
close OUT;

如果我们改为调用“tee”(将过滤器设置为使用“tee”)- 文件写入正确。分析畸形PDF可以看出,我们写的PDF中的外部参照表是畸形的,Adobe Reader无法打开。我们已经尝试过使用 sysopen、sysread 等,使用“:raw”和其他几种正确写入二进制文件的方法,但没有任何效果(从 documnetation 剪切和粘贴代码以写入二进制文件)。只有在 linux 中使用“tee”实用程序作为过滤器时,它才正确编写。这对我们没有帮助——我们需要能够将它作为 perl 脚本的一部分从标准输入写入文件。有什么建议么?如果有办法通过系统调用以某种方式调用“tee”,并为它提供 perl 程序的 STDIN——它可能会起作用。非常感谢。

最佳答案

好吧,虽然代码基本上是正确的,但将它放在“eval”中不知何故破坏了 PDF。我仍然不明白为什么,但是删除 eval 解决了问题。

perl 是从 Apache 的 ext_filter 模块的上下文中调用的。

我将进一步调查此问题并在找到对此的解释时进行更新。

谢谢大家。

关于linux - 从流中写入 PDF 二进制文件会产生格式错误的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17319504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com