私はpdftkのサブセットを再実装しています(pdftkは新しいバージョンのpdfで失敗します)。その1つは、インタラクティブなpdfファイルをコマンドラインに出力する機能です(配管目的で)。私は現在それをしていますpdfファイルの内容をコンソールに出力
if("".equals(output)){
File tmp=new File("tmp.pdf");
doc.save(tmp);
output= new String(Files.readAllBytes(Paths.get("tmp.pdf")), "UTF-8");
tmp.delete();
}
System.out.println(output);
私はこれをout.pdfにパイプするときに問題があります。それを開くと、新しいPDFフィールドにはフォームフィールドのみが表示されます。私の最初の考えは、2番目の行が欠陥のある行になることですが、tmp.pdfは完全なpdfファイルであり、問題がpdfを読んでいる行にあることを示唆しています。助言がありますか?
編集: ほとんどの場合、/ dev/nulまたはCON(OS依存)を使用する別の方法が見つかりました。この方法は、一時ファイルを作成しないため、Windowsでは正しくパイプされません。それをパイプにする方法は?
if("".equals(output)){
if("W".equals(System.getProperty("os.name").substring(0,1)))
doc.save(new File("CON"));
else
doc.save(new File("/dev/stdout"));
System.out.println(output);
1)これはPDFBoxとどのように関連していますか? 2)3行目では、tmp.pdfに何か(何?)を保存しています。次に、バイナリデータをStringに読み込んでいます。非常に奇妙な。 –
3行目は、doc(pdfboxのPDDocument)をファイルに保存します。私はただファイルを文字列に変換するだけですが、pdfboxはファイルを文字列として読み込む良い方法はありません。 –
私は現在、別の解決法を使用しています: if( "W" .equals(System.getProperty( "os.name")。substring(0,1)) doc.save(新しいファイル( "CON")) ; else doc.save(新しいファイル( "/ dev/stdout"));ほとんどが動作する このバージョンの唯一の問題は、Windowsで出力をパイプすることができないことです。 –