2016-11-10 6 views
1

私はSetasign FPDIでいくつかのPDFファイルをマージしようとしています。このパッケージは一部のPDFフォーマットではうまく動作していますが、他のフォーマットではうまく動作しません。
PDFの3つの異なるフォーマットがあります。PHPでさまざまなPDF形式をマージしますか?

フォーマット1:

%PDF-1.4 
%´µ¶· 
% 
1 0 obj 
<< 
/Type /Catalog 
/PageMode /UseNone 
/ViewerPreferences 2 0 R 
/Pages 3 0 R 
/PageLayout /OneColumn 
>> 

フォーマット2:

--uuid:3c4caf6a-2a7e-4ca5-9e0a-63346610deae 
Content-Type: application/octet-stream 
Content-Transfer-Encoding: binary 
Content-ID: <1> 

%PDF-1.4 
%âãÏÓ 
1 0 obj 
<</ColorSpace/DeviceGray/Subtype/Image 

フォーマット3:

2550 4446 2d31 2e34 0a25 aaab acad 0a34 
2030 206f 626a 0a3c 3c0a 2f43 7265 6174 
6f72 2028 4170 6163 6865 2046 4f50 2056 
6572 7369 6f6e 2031 2e30 290a 2f50 726f 
6475 6365 7220 2841 7061 6368 6520 464f 
5020 5665 7273 696f 6e20 312e 3029 0a2f 
4372 6561 7469 6f6e 4461 7465 2028 443a 
3230 3136 3131 3130 3135 3437 3532 5a29 
0a3e 3e0a 656e 646f 626a 0a35 2030 206f 

FPDIフォーマット1で素晴らしい作品が、それは形式のために失敗している2

私が試したとき別のPDFマージウェブサイトからフォーマット2から2つのファイルをマージし、私は私の質問は、PHPのいずれかの形式にして2つのフォーマット2つのファイルをマージすることができますどのようなフォーマットで3

を組み合わせたPDFを得ました。

誰でもこれらのフォーマットを説明できる場合は、それも素晴らしいでしょう。

答えて

1

"Format 2"は、無効なヘッダーデータが含まれているため、PDF内のバイトオフセット位置が破損するため、破損したファイルです(FPDIはそのようなファイルは修復しませんが有効なPDFが必要です)。

「フォーマット3」は、PDFファイルではなく、16進値の束です。

+0

したがって、ヘッダーを消去する必要がありますか?そして、どのようにクロムと他のPDFリーダーがすべての形式を読んで来る。 – anwerj

+0

これらのファイルを修復しようとすると、パフォーマンスが低下する可能性があります。別の[FPDI PDF-Parser](https://www.setasign.com/products/fpdi-pdf-parser/details/)も、一般的な損害(すべてではない)の修復を試みます。これらのファイルはすべて有効なPDF文書ではないので、有効なバージョンを要求する必要があります。 –

+0

ありがとう、私はFPDIに渡す前にpdfをきれいにしようとします。 – anwerj

0

Setasignの回答のおかげで、私は無効なフォーマットを有効なものに掃除しました。 私は単純なコンテンツの分割を使用しています。 $rawはフォーマット2と$contentある

public function parseRawResponse($raw, $from) 
{ 
    $positionMap = [ 
     'PDF' => [ 'init' => "%PDF-1.4\n", 'end' => "\n%%EOF"] 
    ]; 
    $initPos = strpos($raw,$positionMap[$from]['init']); 
    $endPos = strrpos($raw, $positionMap[$from]['end']) + strlen($positionMap[$from]['end']); 
    $content = substr($raw, $initPos, ($endPos - $initPos)); 
    return $content; 
} 

は、PDFの実際のコンテンツです。

+0

PDFバージョン番号には依存しないでください。 –

+0

ええ、そうです。私はそれを文脈の中で考えます。 – anwerj

関連する問題