0

私はこれに苦労しています。教祖の助けが必要です!.

itextsharp を使用して、サーバーに保存したくないテキストをオンザフライで書き込んでいます。それをメモリ ストリームに入れて、pdf で表示するだけです。

このコードを変更するにはどうすればよいですか。

    var reader = new PdfReader(filePath);
    var size = reader.GetPageSizeWithRotation(1);
    var document = new Document(size);

    var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
    var writer = PdfWriter.GetInstance(document, fs);
    document.Open();

    var cb = writer.DirectContent;

    for (int page = 1; page <= reader.NumberOfPages; page++)
    {
        document.NewPage();
        var importedPage = writer.GetImportedPage(reader, page);
        cb.AddTemplate(importedPage, 0, 0);

        BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
        cb.BeginText();
        cb.SetFontAndSize(bf, 10);
        cb.ShowTextAligned(Element.ALIGN_LEFT, lefttext, 50, 400, 90);
        cb.EndText();

        cb.BeginText();
        cb.SetFontAndSize(bf, 10);
        cb.ShowTextAligned(Element.ALIGN_JUSTIFIED_ALL, headertext, 280, 720, 0);
        cb.EndText();

        cb.BeginText();
        cb.SetFontAndSize(bf, 10);
        cb.ShowTextAligned(Element.ALIGN_JUSTIFIED_ALL, footertext, 280, 50, 0);
        cb.EndText();
    }

    document.Close();
    fs.Close();
    writer.Close();
    reader.Close();

コードを修正しましたが、今回は最初のページに同じページを複数回書き込みます。何が間違っている可能性がありますか?この初心者を助けてください:(

    var reader = new PdfReader(server.MapPath("~/Data/162013.pdf"));
    using (var ms = new MemoryStream())
    {
        var stamper = new PdfStamper(reader, ms);
        var cb = stamper.GetOverContent(1);
        var size = reader.GetPageSizeWithRotation(1);
        var document = new Document(size);
        document.Open();
        for (var page = 1; page <= reader.NumberOfPages; page++)
        {
            document.NewPage();
            var importedPage = stamper.GetImportedPage(reader, page);
            cb.AddTemplate(importedPage, 0 , 0);

            var bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
            cb.BeginText();
            cb.SetFontAndSize(bf, 10);
            cb.ShowTextAligned(Element.ALIGN_LEFT, "sdfdsf", 50, 400, 90);
            cb.EndText();

            cb.BeginText();
            cb.SetFontAndSize(bf, 10);
            cb.ShowTextAligned(Element.ALIGN_JUSTIFIED_ALL, "sdfsdfsd", 280, 720, 0);
            cb.EndText();

            cb.BeginText();
            cb.SetFontAndSize(bf, 10);
            cb.ShowTextAligned(Element.ALIGN_JUSTIFIED_ALL, "sdfsdf", 280, 50, 0);
            cb.EndText();
        }

        stamper.FormFlattening = true;
        document.Close();
        stamper.Close();
        DownloadAsPDF(ms);
    }

}
4

0 に答える 0