カテゴリー: pdf

Android ブラウザは JPEG 画像が表示出来ない

Android ブラウザで JPEG 画像が表示出来ない件について

Android ブラウザでは、CMYKJPEG 画像は、表示出来ません。
RGB の JPEG 等を利用してください。

本件が発見された経緯は、画像作成ソフトで作成した JPEG 画像ではなく、
ImageMagick の convert コマンドで PDF から JPEG に変換したファイルが、
デフォルトで CMYKJPEG になった為、発見いたしました。

convert コマンド例)
convert -colorspace sRGB a.pdf b.jpg

Android ブラウザで PHP によるファイルダウンロードが出来ない件

Android ブラウザで PHP によるファイルダウンロードが出来ない件

SSL にて、PDF や ZIP ファイルをダウンロードする場合、SSL の証明書が有効でないとダウンロードは出来ません。
 この場合、.pdf ファイルに直接アクセスしても、ダウンロードは出来ません。

② POST 送信で 「Content-Disposition:attachment」を出力する場合、再び GETで同じURLにリクエストを送信するとのことです。
GET 送信で、リクエストさせる方法で実装するしかないようです。
「Content-Disposition:inline」にした場合、POST→GET の送信はされませんでしたが、ファイル名(filename)が指定出来ませんでした。
よって、この方法もダメでした。

参考URL
http://zhzrzkz.blogspot.jp/2012/05/android.html
http://stackoverflow.com/questions/4674737/avoiding-content-type-issues-when-downloading-a-file-via-browser-on-android
https://code.google.com/p/android/issues/detail?id=1978

これらによると、AndroidのブラウザがPOSTメソッドでサーバにリクエストし
て、サーバからContent- Disposition:attachmentなヘッダを受け取ると、再び
GETメソッドで同じURLにリクエストを送信するとのことです。
また、この動作はPCのブラウザとは違うのですが、バグでは無いようです。

対応方法としては、POSTメソッドとGETメソッドで処理を変えるとか、フォーム
データの内容が見えてもよいのなら画像をダウンロードする URLには、GETメ
ソッドでリクエストする等がありそうです。
 

PHP Pear::File_Archive 特定の文字が文字化け

PHP Pear::File_Archive 特定の文字が文字化けについて

PEARPHPライブラリ「File_Archive」のバグを発見しました。

■現象
SJISのファイル名を圧縮すると特定の文字が文字化けてしまいます。

■例
○対象ファイル
表-入稿データ.pdf

■原因
PHP「5C問題」

■対策パッチ
/usr/share/pear/File/Archive/Reader.php

下記を修正
– $std = str_replace(“\”, “/”, $path);
+ $std = preg_replace (“/\//” ,”/”,$path);

○補足
ディレクトリの区切り文字を「\」(0x5c)から「/」に置き変える処理が、SJIS文字の2byte目に含まれる0x5cまで置換されています。

Linuxサーバーでpdftkを使ってpdfファイルを結合

pdftkはO’Reilly の PDF Hacks でも紹介されている PDF 操作ツールです。

Linuxサーバーのコマンドにてpdfを変換させる必要が出てきたので検証しました。
比較を行ったわけではないのですが、かなり高速なようです。

インストール

各OSに対応したインストール方法が、公式サイトで提示されています。
http://www.pdflabs.com/docs/install-pdftk/
検証機はDebianの為、以下のコマンドでインストールできました

apt-get install pdftk

コマンド例

以下の公式サイトの使用例を翻訳しました
全部ではないので詳細は以下を確認してください。

 

Pdftk Examples
http://www.pdflabs.com/docs/pdftk-cli-examples/

複数のPDFファイルを結合する。

(1.pdf 2.pdf 3.pdf が結合され 123.pdf が生成されます)

pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf

 

複数のPDFファイルを結合する。(ハンドラー使用例)

(1.pdf 2.pdf が結合され 12.pdf が生成されます)

pdftk A=1.pdf B=2.pdf cat A B output 12.pdf

 

複数のPDFファイルを結合する。(ワイルドカード使用)

(カレントディレクトリのpdfファイルが結合され combined.pdf が生成されます)

pdftk *.pdf cat output combined.pdf

 

複数のPDFファイルのページを指定して結合する。(ワイルドカード使用)

(A(one.pdf)ファイルの1~7ページ、B(two.pdf)ファイルの1~5ページ、A(one.pdf)ファイルの8ページが順番に結合され
combined.pdfが生成されます。)

pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf

ページの指定方法は以下のような形です

1-end (はじめから最後までのページ。つまりデフォルト)
1-6 (1~6ページ)
6-1 (1~6ページを逆順で)
4 (4ページ目だけ)
5 11 20 (5ページ、11ページ、20ページ)
1-6even (偶数ページの取得 → 2 4 6)
1-6odd (奇数ページの取得 → 1 3 5)

 

はじめのページを90度回転

※ページ指定の後にEをつけると90度回転

pdftk in.pdf cat 1E 2-end output out.pdf

 

すべてのページを180度回転

※ページ指定の後にSをつけると90度回転

pdftk in.pdf cat 1-endS output out.pdf

回転の指定はN:0 E:90 S:180 W:270 L:-90 R:+90 D:+180です。
Rが右回転、Lが左回転と考えれば問題ないです。
上記のページの指定と併せて利用できます。

5-25oddE (奇数ページの取得 して90度回転)

 

PDF 暗号化。権限はすべて許可

pdftk mydoc.pdf output mydoc.128.pdf owner_pw パスワード

 

PDF 暗号化。開いた時にパスワードをきかれる

pdftk mydoc.pdf output mydoc.128.pdf owner_pw パスワード user_pw パスワード

 

PDFのmetaデータなどをテキストファイルにアウトプット

pdftk mydoc.pdf dump_data output report.txt

感想

すごく強力なツールでした。
PHPなどから呼び出してpdf結合サービスなんてWEBアプリを作ってみるのも面白いかもしれないですね。

© SEEDS Co.,Ltd.