2016-04-09 43 views
-2

PDF文書の左側の境界線に垂直にウォーターマーキングテキストを追加する必要があります。ウォーターマークのテキストも中央揃えにする必要があります。私はiTextからいくつかの例を調べましたが、これはまだできませんでした。どんな助けもありがとうございます。 enter image description hereiText左端の境界線に沿ってウォーターマークのテキストを垂直に追加します

1http://developers.itextpdf.com/examples/miscellaneous/vertical-text

+0

共有するドキュメントへのリンクは、縦書きのテキストです。私はそれがどのように関連するかはわかりません。 [回転したテキスト]を含む[透かし](http://developers.itextpdf.com/search/node/Watermark)を追加したいとします(http://developers.itextpdf.com/question/how-rotate-single-line -テキスト)。私は、3つのクローズ票と2つのダウン票は、あなたが試したことを示さなかったという事実と、あなたが公式のウェブサイト上の無関係のページにリンクして、ドキュメントを見ました」。あれは正しいですか? :D –

答えて

1

は、私はあなたの質問が既にその理由として「不明確あなたが求めているのか」との3近い票を受け取ったことを参照してください。最初に不明な点を説明できるようにしてから、問題を解決しようとします。

あなたが最初から文書を作成しているかどうかは不明であるか、既存のドキュメントに透かしを追加する場合:あなたは最初から文書を作成する場合は

  • は、あなたがページを使用する必要がありますイベントを使用して、すべてのページにウォーターマークを自動的に追加します。つまり、ドキュメントのpage eventsセクションを参照する必要があります。ページイベントについて知らなかった場合は、とにかく、キーワードWatermarkを検索することで終了するでしょう。How to add text as a header or footer?
  • ウォーターマークを既存のドキュメントの場合は、PdfStamperを使用する必要があります。このクラスは、公式ドキュメントのManipulating existing PDFsセクションの質問に対する多くの回答に使用されています。

あなたはiTextのは、このような場合のためとして縦書きシステム、グリフは縦の列に書かれている日本人のためのライティングシステムをサポートする方法を説明するためのものですVertical text、程度の例を参照することにより、人々を混乱させています。あなたが受け取った下降票を見ると、私は、この混乱を引き起こすことは、あなたが見つけた最初の無作為の例にリンクしていると思ったという意味で、有権者に迷惑をかけてしまったと思います。やってみました?"

今解決のためです。ゼロから作成されたドキュメントまたは既存のドキュメントにウォーターマークを追加するかどうかは不明です。既存のドキュメントにウォーターマークを追加するとします。その上pages.pdf

このPDFは、異なるサイズ、異なる向きでページを持っている、と私は上でこれをテストするには、かなり特殊なPDFを取っ

public void manipulatePdf(String src, String dest) throws IOException, DocumentException { 
    PdfReader reader = new PdfReader(src); 
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); 
    int n = reader.getNumberOfPages(); 
    PdfContentByte canvas; 
    Rectangle pageSize; 
    float x, y; 
    for (int p = 1; p <= n; p++) { 
     pageSize = reader.getPageSizeWithRotation(p); 
     // left of the page 
     x = pageSize.getLeft(); 
     // middle of the height 
     y = (pageSize.getTop() + pageSize.getBottom())/2; 
     // getting the canvas covering the existing content 
     canvas = stamper.getOverContent(p); 
     // adding some lines to the left 
     ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, 
      new Phrase("This is some extra text added to the left of the page"), 
      x + 18, y, 90); 
     ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, 
      new Phrase("This is some more text added to the left of the page"), 
      x + 34, y, 90); 
    } 
    stamper.close(); 
} 

注:その場合は、あなたはWatermarkToTheSide例が必要。結果を見ると、1ページに透かしが入っていないように見えます。side_watermark.pdf

5ページに透かしがないと思われるかもしれません。そこにはありますが、それはCropBoxの外に追加されたため表示されません。私の例を適応させて、CropBoxの存在も考慮に入れたいと思うかもしれません。

私が誤った仮定をしたと仮定して、あなたの質問は最初からドキュメントを作成することだとします。その場合、ご質問はHow to add text as a header or footer?

の重複しています。ヘッダーとフッターの唯一の違いは、テキストの位置にあります。あなたの文書はA4ページサイズで作成された場合、xを置き換えることができ

ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, 
    new Phrase("This is some extra text added to the left of the page"), 
    x + 18, y, 90); 
ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, 
    new Phrase("This is some more text added to the left of the page"), 
    x + 34, y, 90); 

:あなたはちょうど私が WatermarkToTheSide例で使用していたラインで、ヘッダー/フッターの例では2本の showTextAligned()ラインを交換する必要があります 0および yは、 421(A4ページの半分の高さ)で置き換えることができます。

+0

これは本当にクールです。これはまさに私が求めていたものです。どうもありがとう。 :) –

+0

私は次のように複数行のテキストを追加する必要があると言う。 "Ravindraによって6-04-2016にダウンロードされました。\ nテストグループ内の内部販売前サポートを使用してください。"上記の方法を使用すると、最初の行だけが追加され、改行(\ n)文字の後に続く残りの行は無視されます。また、縦書きテキストの行数はあらかじめ定義されていません。それは変わるかもしれません。ドキュメントの種類に応じて別の縦書きのテキストを追加する必要があります。どのようにこれを行うことができます。あなたはそれについて何か考えていますか? –

関連する問題