3

我正在尝试使用 PurePDF 在 PDF 文件中收集一些信息,但无法让 PurePDF 读取它。

每当 PurePDF 尝试读取任何 pdf 时,它都会说找不到它的标题,我尝试调试它并注意到从 bytearray 读取的字符串以日语字符的形式出现!在将我的 pdf 字节数组传递给 PurePDF 之前,我曾尝试更改它的字节序,但没有改变任何东西。

pdf文件没问题,因为每当我将它作为文本打开时,我都可以看到“%PDF-”标题,但由于某种原因,actionscript 得到了错误的字符码,所以 PurePDF 根本无法工作。

有任何想法吗?

谢谢。


更新:我不是字节数组专家,但我决定对其进行操作并通过调试器跟踪代码执行,发现它正在使用 readInt() 来获取字符,我只是将它重写为 readByte() 现在它正在阅读PDF!我仍然要看看这些功能是否会起作用......任何更喜欢低级编程的人都可以解释一下可能发生的事情吗?我不认为这个项目在 svn 中被破坏了

这是我一直在使用的代码,我认为它非常简单:

private function loadPdf():void
    {
        var loader:URLLoader=new URLLoader();
        loader.dataFormat=URLLoaderDataFormat.BINARY;
        loader.addEventListener(Event.COMPLETE, onLoadComplete);
        loader.load(new URLRequest(PDF_FILE));
    }

protected function onLoadComplete(event:Event):void
    {
        var data:ByteArray = URLLoader(event.target).data as ByteArray;
        pdfReader = new PdfReader(data);
        pdfReader.readPdf();
    }
4

1 回答 1

0

我以前没有使用过 PurePDF,但我使用过 bytearray 从文件中提取信息。你到底想从这个 pdf 中得到什么?你想只提取文本吗?你也可以上传PDF的链接吗?如果我们看的是同一件事,会更容易提供帮助。

关于日文文本...当您阅读 bytearray 中的 PDF 时,不要期望很容易找到人类可读的文本,因为大部分数据用于设置文件结构等。PDF 中的实际文本和图片放置在名为流。所以通常你会找到一个文本流并将其提取到你的字节数组中。要正确显示文本,请使用 PDF 数据中提到的解码器类型(UTF-8、UTF-16 等)。

下面的这个链接更好地解释了 PDF 流:(“/Length”成为您的字节数组长度,“Filter”告诉您解码类型(字符集类型,例如 ASCII)等)

http://blog.didierstevens.com/2008/05/19/pdf-stream-objects/

无论如何,如果你在十六进制编辑器中打开你的 PDF,这一切都是有意义的。如果需要,请尝试以下一种。现在您可以看到您的流位置在哪里,并告诉 AS3 从那里提取:

http://www.hhdsoftware.com/free-hex-editor

如果仍然存在问题,请将您的 PDF 上传到某处,并准确说明您要从文档中提取的内容。我会尽力为此提供确切的帮助(没有承诺,只是想提供帮助)..和平。

于 2013-02-18T07:57:28.360 回答