0
public void ExtractPages(string sourcePdfPath, string outputPdfPath, int startPage, int endPage)
{
    PdfReader reader = null;
    Document sourceDocument = null;
    PdfCopy pdfCopyProvider = null;
    PdfImportedPage importedPage = null;
    try
    {
        // Intialize a new PdfReader instance with the contents of the source Pdf file:
        reader = new PdfReader(sourcePdfPath);

        // For simplicity, I am assuming all the pages share the same size
        // and rotation as the first page:
        sourceDocument = new Document(reader.GetPageSizeWithRotation(startPage));

        // Initialize an instance of the PdfCopyClass with the source 
        // document and an output file stream:
        pdfCopyProvider = new PdfCopy(sourceDocument, 
            new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));

        sourceDocument.Open();

        // Walk the specified range and add the page copies to the output file:
        for (int i = startPage; i <= endPage; i++)
        {
            importedPage = pdfCopyProvider.GetImportedPage(reader, i);
            pdfCopyProvider.AddPage(importedPage);
        }

        sourceDocument.Close();
        reader.Close();
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

私はasp.netアプリケーションを使用しています。次の方法を使用して、既存の PDF から新しいファイルにページの範囲を抽出しています。しかし、「パスへのアクセスが拒否されました」というエラー メッセージが表示されます。しかし、「パスへのアクセスが拒否されました」というエラー メッセージが表示されます。

編集:

この行はエラーをスローしています:

pdfCopyProvider = new PdfCopy(sourceDocument, 

            new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
4

1 に答える 1

0

これを試して、

PdfReader R = new PdfReader(srcPdfFilePath);
using (PdfStamper stamper = new PdfStamper(R, new FileStream(dPdfFile, FileMode.Create)))
{
// if you want to do any changes in new pdf do here.
stamper.Close();
}
R.Close();

ノート:

ソース PDF のパスと名前と新しい PDF のパスと名前は同じであってはなりません。ファイルが開いているときは上書きできないためです。

于 2013-10-21T06:38:48.517 に答える