2

問題は、abcpdf によって生成された pdf ファイルの各ページに含める必要があるヘッダー ファイルです。

ヘッダー ファイルには、複数の画像ファイルと数行のテキストが含まれていますが、これは場合によって異なります。

問題は、ヘッダーのサイズを計算する方法がわからないことです。各ページに残りの html ファイルをヘッダーと一緒に配置するために、四角形の位置を割り当てるには、そのサイズが必要です。私はC#を使用しています。

4

1 に答える 1

2

最初に、ヘッダーを追加できるように上部に十分なスペースがあるドキュメントを作成する必要があります。以下の設定は、ヘッダーがページの約 1/5 の通常の A4 ドキュメント用です。PDF の座標は、左上ではなく右下からのものであることを忘れないでください。

//Setting to create the document using ABCPdf 8
var theDoc = new Doc();
theDoc.MediaBox.String = "A4";

theDoc.HtmlOptions.PageCacheEnabled = false;
theDoc.HtmlOptions.ImageQuality = 101;
theDoc.Rect.Width = 719;
theDoc.Rect.Height = 590;
theDoc.Rect.Position(2, 70);
theDoc.HtmlOptions.Engine = EngineType.Gecko;

以下のコードは、ドキュメントの各ページにヘッダーを配置し、ヘッダー画像と、画像の下にカスタムテキストを含む色付きのボックスを配置します.

この場合のヘッダー画像は 1710 x 381 で、画像の解像度をできるだけ高く保ち、印刷時にぼやけて見えるのを防ぎます。

private static Doc AddHeader(Doc theDoc)
{
    int theCount = theDoc.PageCount;
    int i = 0;

    //Image header 
    for (i = 1; i <= theCount; i++)
    {
         theDoc.Rect.Width = 590;
         theDoc.Rect.Height = 140;
         theDoc.Rect.Position(0, 706);

         theDoc.PageNumber = i;
         string imagefilePath = HttpContext.Current.Server.MapPath("/images/pdf/pdf-header.png");

         Bitmap myBmp = (Bitmap)Bitmap.FromFile(imagefilePath);
         theDoc.AddImage(myBmp);
     }

     //Blue header box
     for (i = 2; i <= theCount; i++)
     {
         theDoc.Rect.String = "20 15 590 50";
         theDoc.Rect.Position(13, 672);
         System.Drawing.Color c = System.Drawing.ColorTranslator.FromHtml("#468DCB");
         theDoc.Color.Color = c;
         theDoc.PageNumber = i;
         theDoc.FillRect();
     }

     //Blue header text
     for (i = 2; i <= theCount; i++)
     {
         theDoc.Rect.String = "20 15 586 50";
         theDoc.Rect.Position(25, 660);
         System.Drawing.Color cText = System.Drawing.ColorTranslator.FromHtml("#ffffff");
         theDoc.Color.Color = cText;
         string theFont = "Century Gothic";
         theDoc.Font = theDoc.AddFont(theFont);
         theDoc.FontSize = 14;
         theDoc.PageNumber = i;
         theDoc.AddText("Your Text Here");
     }
     return theDoc;
}
于 2012-11-15T12:46:51.733 に答える