В приложении пользователь может загрузить любой файл в формате pdf и имеет размеры 8,46 "x 10,97". По нашим приложениям размеры должны быть 8.5 "x 11". Вопрос: как изменить размер существующего формата pdf, чтобы установить 8.5 "x 11"? Я должен исправлять код, а не вручную или комментировать строку или внешнее программное обеспечение. Пожалуйста, дайте мне знать, какая java поддержка jar (бесплатная версия), обеспечивающая функциональность для достижения этого или через простое java-исправление, также прекрасна.Как изменить размер существующего формата pdf-файла
ответ
Использование IText вы можете сделать что-то вроде этого:
float width = 8.5f * 72;
float height = 11f * 72;
float tolerance = 1f;
PdfReader reader = new PdfReader("source.pdf");
for (int i = 1; i <= reader.getNumberOfPages(); i++)
{
Rectangle cropBox = reader.getCropBox(i);
float widthToAdd = width - cropBox.getWidth();
float heightToAdd = height - cropBox.getHeight();
if (Math.abs(widthToAdd) > tolerance || Math.abs(heightToAdd) > tolerance)
{
float[] newBoxValues = new float[] {
cropBox.getLeft() - widthToAdd/2,
cropBox.getBottom() - heightToAdd/2,
cropBox.getRight() + widthToAdd/2,
cropBox.getTop() + heightToAdd/2
};
PdfArray newBox = new PdfArray(newBoxValues);
PdfDictionary pageDict = reader.getPageN(i);
pageDict.put(PdfName.CROPBOX, newBox);
pageDict.put(PdfName.MEDIABOX, newBox);
}
}
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("target.pdf"));
stamper.close();
Я ввел терпимость, потому что вы, вероятно, не хотите менять страницы, размер которых составляет всего лишь небольшую долю.
Кроме того, вы можете также подсчитать значение страницы UserUnit, хотя оно почти никогда не используется.
Любая библиотека PDF общего назначения, возможно, позволит сделать что-то подобное, предоставив явный метод изменения размера или разрешая прямой доступ, используемый здесь.
Что касается ваших требований бесплатной версии вы выяснены в комментариях свободных средства без покупки; вы можете использовать iText, не покупая лицензию, если вы согласны с AGPL.
Спасибо mkl ... Я постараюсь над вашим кодом и обновить его ... – Subbu
Его работа прекрасна только при использовании PdfStamper stamper = new PdfStamper (читатель, новый FileOutputStream («C: \\ TestingDoc \\ target.pdf»)); Я не должен генерировать новый выходной файл. Проблема в изменении размера логики не работает в байте [], таком как PdfReader reader = new PdfReader (attachment.getFullDocContent()); getFullDocContent, который будет возвращать байт []. – Subbu
Вместо 'FileOutputStream' вы также можете использовать' ByteArrayOutputStream', из которого вы можете получить 'byte []' без использования какого-либо файла. В будущих вопросах, пожалуйста, не забудьте указать важные требования. – mkl
Возможно добавление в существующий файл в новый документ с данными спецификаций с использованием PDFBox, как указано in this question (iTextPdf теперь предлагает коммерческую лицензию)
- 1. Как использовать itext для изменения существующего формата pdf?
- 2. Как изменить размер существующего PDF с ColdFusion/IText
- 3. Как изменить размер и положение существующего изображения в боке?
- 4. Как изменить размер существующего SolrCloud с новыми осколками
- 5. Как я могу изменить размер блока существующего файла hdf5?
- 6. Изменение существующего формата поля без отбрасывания, воссоздание
- 7. Как изменить название существующего UIAlertAction?
- 8. Можете ли вы изменить размер существующего виджета, обновив его?
- 9. Python: изменить размер существующего массива и заполнить нулями
- 10. Уменьшить размер индексного формата: текст
- 11. C# строка формата Unkown размер
- 12. Как изменить размер флажка?
- 13. Как изменить размер кнопки
- 14. Как изменить размер SKscene
- 15. Как изменить размер WebGlBuffer?
- 16. Как изменить размер recaptcha?
- 17. Как изменить размер JButton?
- 18. Как изменить размер изображения?
- 19. Как изменить размер flexslider?
- 20. XImage - как изменить размер?
- 21. Как изменить размер UIActivityViewController
- 22. Как изменить размер AlertDialog.Builder?
- 23. Как изменить размер изображения?
- 24. Как изменить размер UIView?
- 25. Как изменить размер значка?
- 26. Как изменить размер UISwitch?
- 27. Как изменить размер FacetFilterItems?
- 28. Как изменить размер ObservableCollection?
- 29. Как изменить размер андроида?
- 30. Как изменить размер SoftwareBitmap?
Что вы подразумеваете под * бесплатной версией *? Например. iText можно использовать свободно, если вы уважаете лицензию AGPL. Вы можете это уважать? Если нет, уточните свои ограничения на лицензирование. – mkl
Было сказано, что все, что вам нужно сделать, - это манипулировать полями медиатекста (и полей обрезки, если есть) значений каждой страницы документа. Это может быть легко осуществлено с использованием, например, iText или PDFBox, но также и в других библиотеках. Итак, какая библиотека должна использоваться? – mkl
бесплатный средства без покупки. Пожалуйста, дайте код, если это возможно с помощью iText или PDFBox для изменения размера существующей страницы PDF. – Subbu