2014-06-06 101 views
0

我需要使用iTextSharp將縮放級別75%設置爲pdf文件。我正在使用以下代碼來設置縮放級別。如何使用iTextSharp將縮放級別設置爲pdf?

PdfReader reader = new PdfReader("input.pdf".ToString()); 
iTextSharp.text.Document doc = new iTextSharp.text.Document(reader.GetPageSize(1)); 
doc.OpenDocument(); 
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream("Zoom.pdf", FileMode.Create)); 
PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 0, doc.PageSize.Height, 0.75f); 
doc.Open(); 
PdfAction action = PdfAction.GotoLocalPage(1, pdfDest, writer); 
writer.SetOpenAction(action); 
doc.Close(); 

但我得到的錯誤「的第1頁是請求,但文檔只有0頁」在doc.Close();

+1

第1行正在讀取現有的PDF。第2行創建了一個**全新的空白PDF,其大小與現有PDF的第一頁相同,但與現有PDF無關。我很驚訝第3行實際工作。第4行將**全新的空** PDF綁定到**全新的空**物理文件「zoom.pdf」。第5行創建了一個**全新空白PDF的第一頁的引用,但是沒有頁面,所以這將是無效的。 –

+0

@ mail2vguna換句話說,使用'PdfStamper'代替。 – mkl

+0

嗨mkl,而不是什麼?我沒有得到you.can你提供示例代碼?謝謝。 – mail2vguna

回答

1

您需要使用PdfStamper(由MKL所示),而不是PdfWriter(如由克里斯哈斯清楚)。請大家看看AddOpenAction例如:

public void manipulatePdf(String src, String dest) throws IOException, DocumentException { 
    PdfReader reader = new PdfReader(src); 
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); 
    PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 0, reader.getPageSize(1).getHeight(), 0.75f); 
    PdfAction action = PdfAction.gotoLocalPage(1, pdfDest, stamper.getWriter()); 
    stamper.getWriter().setOpenAction(action); 
    stamper.close(); 
    reader.close(); 
} 

結果是a PDF that opens with a zoom factor of 75%

+0

+5。 Thanks.Its現在工作。古納 – mail2vguna

+0

如果它的工作,請接受答案 –

相關問題