2015-07-09 2 views
0

Я создаю pdf-файл с помощью iText. Но его открытие в разной степени масштабирования в каждый раз. Как установить масштабирование по умолчанию на 100% с помощью java? Я создаю PDF-документ, используя приведенный ниже код:Как установить масштаб 100% по умолчанию с помощью itext java

 String fileName = "Dashboard.pdf"; 
     response.setContentType("application/pdf"); 
     response.setHeader("Content-Disposition", "attachment; filename=\"" 
       + fileName + "\""); 
     Document my_pdf_report = new Document(); 

     PdfWriter.getInstance(my_pdf_report, response.getOutputStream()); 
     my_pdf_report.open(); 

Потому что мне нужно создать Save as Popup. Так что можно использовать

 PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 
       0, reader.getPageSize(1).getHeight(), 1f); 

в моем коде. Если возможно, как это можно сделать?

+1

Возможный дубликат [Как установить уровень масштабирования в pdf с помощью iTextSharp?] (Http://stackoverflow.com/questions/24087786/how-to-set-zoom-level-to-pdf-using-itextsharp) –

+0

На самом деле я создаю файл следующим образом: 'String fileName =" Dashboard.pdf "; \t \t \t response.setContentType ("application/pdf"); \t \t \t отклик.setHeader ("Content-Disposition", "attachment; filename = \" " \t \t \t \t \t + fileName +" \ ""); \t \t \t Документ my_pdf_report = новый документ(); \t \t \t PdfWriter.getInstance (my_pdf_report, response.getOutputStream()); 'Потому что мне также нужно создать Save as popup. Таким образом, можно использовать 'PdfDestination pdfDest = new PdfDestination (PdfDestination.XYZ, \t \t \t \t 0, reader.getPageSize (1) .getHeight(), 1f); ' в приведенном выше примере кода? –

ответ

1

Пожалуйста, обратите внимание на мой ответ на этот вопрос: How to set zoom level to pdf using iTextSharp?

В ответ на этот вопрос, я написал AddOpenAction пример (который использует Java). В этом примере открывается PDF-код с коэффициентом масштабирования 75%. Вам нужен PDF-файл, который открывается с коэффициентом масштабирования 100%. Это означает, что вам нужно адаптировать следующую строку:

PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 
    0, reader.getPageSize(1).getHeight(), 0.75f); 

Как это:

PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 
    0, reader.getPageSize(1).getHeight(), 1f); 

С 0.75 заменяется на 1, то коэффициент масштабирования больше не 75%, а 100%.

Еще одно отличие вашей ситуации заключается в том, что вы создаете PDF-код с нуля (как вы объясните в комментарии). У вас есть:

PdfWriter.getInstance(my_pdf_report, response.getOutputStream()); 

Вы должны заменить это:

PdfWriter writer = PdfWriter.getInstance(my_pdf_report, response.getOutputStream()); 

Теперь вы можете сделать:

writer.setOpenAction(PdfAction.gotoLocalPage(1, pdfDest, writer)); 

С другой комментарий, мы узнаем, что вы не знаете страницы размер создаваемых вами PDF-файлов. Пожалуйста, обратите внимание на мой ответ на этот вопрос: How to set the page size to Envelope size with Landscape orientation?

Вы создаете Document вроде этого:

Document my_pdf_report = new Document(); 

Это означает, что вы создаете страницы с размером по умолчанию: A4.

В этом случае, высота странице 842, так что вы можете использовать:

PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 0, 842, 1f); 

Пожалуйста, прочтите the documentation в случае сомнений. Полный рабочий пример см. В разделе OpenAt100pct. Полученный в результате PDF, open100pct.pdf открывается на 100% в зрителях, которые уважают функциональность /OpenAction (не все из них работают, но это проблема зрителя, а не проблема iText или PDF).

+0

На самом деле я создаю файл следующим образом: 'String fileName =" Dashboard.pdf "; \t \t \t response.setContentType ("application/pdf"); \t \t \t response.setHeader ("Content-Disposition", "вложение; имя файла = \" " \t \t \t \t \t + имя_файла + "\""); \t \t \t Документ my_pdf_report = новый документ(); \t \t \t PdfWriter.getInstance (my_pdf_report, response.getOutputStream()); 'Потому что мне также нужно создать Save as popup. Так же можно использовать '\t \t \t PdfDestination pdfDest = новый PdfDestination (PdfDestination.XYZ, \t \t \t \t 0, reader.getPageSize (1) .getHeight(), 1f);' в приведенном выше примере кода? –

+0

Да, но вы должны внести небольшое изменение. Я уточню свой ответ. –

+0

Так что я должен сделать это вот так: PdfReader reader = new PdfReader (fileName); PdfStamper stamper = новый PdfStamper (считыватель, новый FileOutputStream (имя_файла)); \t \t \t PdfWriter writer = PdfWriter.getInstance (my_pdf_report, response.getOutputStream()); \t \t \t PdfDestination pdfDest = новый PdfDestination (PdfDestination.XYZ, \t \t \t \t 0, reader.getPageSize (1) .getHeight(), 1f); действие PdfAction = PdfAction.gotoLocalPage (1, pdfDest, stamper.getWriter ()); writer.setOpenAction (PdfAction.gotoLocalPage (1, pdfDest, автор)); my_pdf_report.open(); Можно ли предоставить образец кода? Потому что для меня он не работает –