2

私はiTextSharpを使用してList<PdfReader> _documents、いくつかのPDFドキュメントでを作成しています。このリストでマージを使用して単一ページのドキュメントを作成し、それをクライアントに送信した後、PDFがAdobeReaderで切り取られたように見えることがわかります。このように写真をハイライトすると、そこにあることがわかります。

ここに画像の説明を入力してください

保存すれば完成です。

リスト内の1つを単一のPDFドキュメントとして(マージせずに)保存するPdfReaderと、見栄えがします。

ここに画像の説明を入力してください

マージ関数は次のとおりです。

public void Merge(Stream outputStream)
{
    Document newDocument = null;

    try
    {
        newDocument = new Document();
        // Set margins and page size for the document 
        newDocument.SetMargins(50, 50, 50, 50);
        // There are a huge number of possible page sizes, including such sizes as 
        // EXECUTIVE, LEGAL, LETTER_LANDSCAPE, and NOTE 
        newDocument.SetPageSize(PageSize.A3 );

        PdfWriter pdfWriter = PdfWriter.GetInstance(newDocument, outputStream);

        newDocument.Open();
        PdfContentByte pdfContentByte = pdfWriter.DirectContent;

        if (EnablePagination)
        {
            _documents.ForEach(delegate(PdfReader doc)
            {
                _totalPages += doc.NumberOfPages;
            });
        }

        int currentPage = 1;
        foreach (PdfReader pdfReader in _documents)
        {
            for (int page = 1; page <= pdfReader.NumberOfPages; page++)
            {
                newDocument.NewPage();
                PdfImportedPage importedPage = pdfWriter.GetImportedPage(pdfReader, page);
                pdfContentByte.AddTemplate(importedPage, 0, 0);

                if (EnablePagination)
                {
                    pdfContentByte.BeginText();
                    pdfContentByte.SetFontAndSize(_baseFont, 9);
                    pdfContentByte.ShowTextAligned(PdfContentByte.ALIGN_CENTER,
                        string.Format("{0} of {1}", currentPage++, _totalPages), 520, 5, 0);
                    pdfContentByte.EndText();
                }
            }
        }
    }
    finally
    {
        outputStream.Flush();
        if (newDocument != null)
            newDocument.Close();
        outputStream.Close();
    }
}

それは何か関係newDocument.SetPageSize(PageSize.A3); があるのではないかと思いますが、よくわかりません。今のところ解決策を見つけることができません。

4

1 に答える 1

1

試してみるべきアイデアがいくつかあります。問題は、スケーリングまたはサイズ設定に関連している可能性があります。両方のドキュメントの水平方向のスケーリングを比較します。また、importedPage.PdfDocument.PageSizeをpdfContentByte.PdfDocument.PageSizeと比較し、おそらく縮小する必要があります。

于 2012-05-24T22:16:09.043 に答える