2

.tiff の画像から itextsharp を使用して pdf を作成する際に問題があります。ここにいくつかのコードがあります:

        iTextSharp.text.Document d = new iTextSharp.text.Document();
        PdfWriter pw = PdfWriter.GetInstance(d, new FileStream(filename, FileMode.Create));
        d.Open();

        PdfContentByte cb = pw.DirectContent;
        foreach (Image img in imgs)
        {
            d.NewPage();
            d.SetPageSize(new iTextSharp.text.Rectangle(0, 0, img.Width, img.Height));
            iTextSharp.text.Image timg = iTextSharp.text.Image.GetInstance(img, iTextSharp.text.BaseColor.WHITE);
            timg.SetAbsolutePosition(0, 0);
            cb.AddImage(timg);
            cb.Stroke();
        }
        d.Close();

2ページのpdfを作成しますが、最初のページの画像が大きすぎます。
ページには画像のサイズがありますが、画像の左下隅をズームしています。それは tiff 画像でのみ行われます。png を使用すると、正常に動作します。

解決策はありますか?

4

2 に答える 2

1

mklのコメントのおかげで、私はそれを見つけました。新しいページコマンド(NewPage)の前にページサイズ(SetPageSize)を設定します

于 2012-10-25T11:16:42.883 に答える
0

このように使う

string[] validFileTypes = {"tiff"};
string ext = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName);
bool isValidFile = false;
if (!isValidFile)
{
Label.Text = "Invalid File. Please upload a File with extension " +
                       string.Join(",", validFileTypes);
}
 else
    {
        string pdfpath = Server.MapPath("pdf");
        Document doc = new Document(PageSize.A4, 0f, 0f, 0f, 0f);
        PdfWriter.GetInstance(doc, new FileStream(pdfpath + "/Images.pdf", FileMode.Create));
        doc.Open();

        string savePath = Server.MapPath("images\\");
        if (FileUpload1.PostedFile.ContentLength != 0)
          {
            string path = savePath + FileUpload1.FileName;
            FileUpload1.SaveAs(path);
            iTextSharp.text.Image tiff= iTextSharp.text.Image.GetInstance(path);
            tiff.ScaleToFit(doc.PageSize.Width, doc.PageSize.Height);
            tiff.SetAbsolutePosition(0,0);
            PdfPTable table = new PdfPTable(1);
            table.AddCell(new PdfPCell(tiff));
            doc.Add(table);
          }
         doc.Close();
      }
于 2013-02-18T05:58:50.900 に答える