Есть ли возможный способ изменить исходную переменную во время выполнения с использованием iText7?

#java #text #itext7

#java #текст #itext7

Вопрос:

Например, в следующих строках установка фиксированного источника и назначения выполняется практически для каждого примера, который я нашел до сих пор.

 ...

public class FetchBookmarkTitles {
    public static final String DEST = "./target/txt/bookmarks.txt";

    public static final String SRC = "./src/main/resources/pdfs/bookmarks.pdf";

    ...
  

Изменение типа на что-то другое, кроме общедоступной статической конечной строки, не будет работать в качестве аргумента для, вызовет ошибку в следующей строке, которая подводит меня к проблеме. В долгосрочной перспективе я бы хотел, чтобы пользователь выбирал путь, а не имел фиксированный относительный путь.

 PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC));
  

Комментарии:

1. Я не совсем уверен, что вы пытаетесь сделать, и вы не публикуете свою ошибку, но вы просмотрели в документах API множество разных конструкторов PdfReader ? Вы можете использовать имя файла ( String ), как в вашем примере кода, но вы также можете использовать java.io.File или java.io.InputStream . Смотрите api.itextpdf.com/iText7/java/7.1.12/com/itextpdf/kernel/pdf /…

2. @Javier это скорее общий вопрос программирования, чем вопрос об iText. Параметр, передаваемый в PdfReader может быть любым String , не обязательно static final String . Поэтому сначала просто получите нужное String (путь к файлу) от пользователя, а затем передайте его PdfReader

3. @AlexeySubach… Это именно то, что я сделал. Я передал строку с соответствующим файлом и получаю java.lang. Ошибка исключения NullPointerException. Похоже, что он принимает только тип, описанный в моем вопросе. Спасибо.

4. @AmedeeVanGasse Мне жаль, что это мой первый раз, потому что я обычно нахожу, что на решение где-то уже дан ответ. Я рассмотрю ваше предложение.

5. Опубликуйте свой код таким образом, чтобы он был воспроизводим для других людей.