По сути, я пытаюсь создать небольшой инструмент в Java, где я беру текст из какого -то пользовательского ввода, думаю об обычном текстовом поле и создаю с ним файл PDF. < /p>
До сих пор мне удалось по -настоящему быстро скрасить что -то, зная о Barebones о PDFBox. < /p>
В моем приложении я создаю создание этого класса (тот, который показан ниже) в другом с элементами графического интерфейса, и если я введу текст, в скажем, текстовое поле, и и Запуск этого сценария pdfletter < /code> один раз - он работает как очарование, но запустив его во второй раз, он сбой и дает мне эту раздражающую ошибку: < /p>
Cosstream был закрыт и не может быть прочитал. Возможно, он закрыт
pddocument был закрыт? код. Я думал, что это как -то связано с моим элементарным решением «Прыжок на следующую страницу», но оно работает в своем текущем состоянии, поэтому я больше не знаю, во что верить. < /P>
То, как я создаю урок, на случай, если вам нужно знать, так: < /p>
PDFLetter.PDFLetterGenerate(textInput.getValue().toString());
< /code>
Кроме того, я думал, что это должна быть какая -то проблема с сбором мусора, которая вызвала проблему, но я больше не думаю, что это так. < /p>
public class PDFLetter {
private static final int PAGE_MARGIN = 80;
static float TABLE_HEIGHT;
static Boolean newPage = false;
public static String text = // null;
"Ding Dong ding dong Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et "
+ "Imperdiet dui accumsan sit amet. Risus in hendrerit gravida rutrum quisque non tellus orci ac.";
static List textList = new ArrayList();
PDDocument document = new PDDocument();
static PDPage main_page = new PDPage();
static PDPage new_page = new PDPage();
static File file = new File("C:/PDFTests/temp.pdf");
public void PDFLetterGenerate (String args) throws Exception {
text = args;
text = text.replace("\n", "").replace("\r", "");
if(file.exists()) file.delete();
file.createNewFile();
//Creating PDF document object
PDDocument document = new PDDocument();
document.addPage(main_page);
mainBody(document, main_page);
document.addPage(new_page);
if(!newPage) document.removePage(new_page);
document.save(file);
document.close();
}
public static void mainBody(PDDocument doc, PDPage page) throws Exception {
final float width = page.getMediaBox().getWidth()-(2*PAGE_MARGIN);
int fontSize = 11;
float leading = 1.5f * fontSize;
final float max = 256;
PDFont pdfFont = PDType1Font.HELVETICA;
@SuppressWarnings("deprecation")
PDPageContentStream contentStream = new PDPageContentStream(doc, page, true, true);
int lastSpace = -1;
while (text.length() > 0){
int spaceIndex = text.indexOf(' ', lastSpace + 1);
if (spaceIndex < 0) spaceIndex = text.length();
String subString = text.substring(0, spaceIndex);
float size = fontSize * pdfFont.getStringWidth(subString) / 1000;
if (size > width){
if (lastSpace < 0) lastSpace = spaceIndex;
subString = text.substring(0, lastSpace);
textList.add(subString);
text = text.substring(lastSpace).trim();
lastSpace = -1;
}
else if (spaceIndex == text.length()){
textList.add(text);
text = "";
}
else{
lastSpace = spaceIndex;
}
}
contentStream.beginText();
contentStream.setFont(pdfFont, fontSize);
contentStream.newLineAtOffset(PAGE_MARGIN, TABLE_HEIGHT);
@SuppressWarnings("deprecation")
PDPageContentStream newStream = new PDPageContentStream(doc, new_page, true, true);
int nextPage_i = 0;
for (int i=0; i 1){
float size = fontSize * pdfFont.getStringWidth(line) / 1000;
float free = width - size;
if (free > 0){
charSpacing = free / (line.length() - 1);
}
TABLE_HEIGHT = TABLE_HEIGHT - 10;
}
contentStream.setCharacterSpacing(charSpacing);
contentStream.showText(line);
contentStream.newLineAtOffset(0, -leading);
if(TABLE_HEIGHT 0)
{
charSpacing = free / (line.length() - 1);
}
NEW_HEIGHT = NEW_HEIGHT - 10;
}
newStream.setCharacterSpacing(charSpacing);
newStream.showText(line);
newStream.newLineAtOffset(0, -leading);
}
newStream.endText();
newStream.close();
}
lastSpace = -1;
}
Подробнее здесь: https://stackoverflow.com/questions/600 ... document-h
Cosstream был закрыт и не может быть прочитал. Возможно, его ограждающий PDDOCUMENT был закрыт? ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
API Microsoft Graph прочитал электронную почту от не вошедшего в систему пользователя
Anonymous » » в форуме Python - 0 Ответы
- 693 Просмотры
-
Последнее сообщение Anonymous
-
-
-
API Microsoft Graph прочитал электронную почту от не вошедшего в систему пользователя
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
API Microsoft Graph прочитал электронную почту от не вошедшего в систему пользователя
Anonymous » » в форуме Python - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-