如何在Spring启动中加载Custom Log4j.properties文件
我在application.properties中的代码就在这里
logging.file=E:/Apps_Tek/apps-webservices-log/apps-webservices.log
logging.level.*=INFO
logging.config=log4j.properties
Run Code Online (Sandbox Code Playgroud)
我在log4j.properties中的代码就在这里
log4j.rootLogger=INFO,ConsoleAppender,FileAppender
log4j.appender.ConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.ConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ConsoleAppender.layout.ConversionPattern=%-7p %d [%t] %c [%X{userName}] [%X{accessToken}] - %m%n
log4j.appender.FileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.FileAppender.File=E:/Apps_Tek/apps-webservices-log/apps-webservices.log
log4j.appender.FileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.FileAppender.layout.ConversionPattern=%-7p %d [%t] %c [%X{userName}] [%X{accessToken}] - %m%n
Run Code Online (Sandbox Code Playgroud)
但是我没有得到任何预期的输出,即,spring boot没有加载log4j.properties文件.Spring启动有自己的默认日志记录.
log4j.properties文件在 src/main/resources
我的问题是如何将log4j.properties文件与application.properties中的logging.config属性映射,如果它位于src/main/resources中.
请提出所有必要的更改建议.
在此先感谢您的帮助.
我正在尝试使用我公司的邮件服务器发送电子邮件.但我得到以下例外
Caused by: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.1 Client was not authenticated
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
at javax.mail.Transport.send0(Transport.java:169)
at javax.mail.Transport.send(Transport.java:98)
Run Code Online (Sandbox Code Playgroud)
这是我的示例代码,
Properties props = System.getProperties();
// Setup mail server
props.put("mail.smtp.host", "example.server.com");
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
props.put("mail.smtp.port", "25");
// Get session
//Session session = Session.getDefaultInstance(props, null);
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("username", "password");
}
});
// Define message
MimeMessage message = new MimeMessage(session);
// Set the from address
message.setFrom(new InternetAddress(from));
// Set the …Run Code Online (Sandbox Code Playgroud) 我试图从JPEG,BMP类型的图像生成PDF,但我得到右边的图像的一部分总是被切断.我正在使用一个默认的Windows图片Sunset.jpg.
以下是代码:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.imageio.stream.FileImageInputStream;
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.io.RandomAccessFile;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDCcitt;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDJpeg;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDPixelMap;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage;
public class ImageToPDF
{
public void createPDFFromImage( String file, String image) throws IOException, COSVisitorException
{
PDDocument doc = null;
try
{
doc = new PDDocument();
PDPage page = new PDPage();
doc.addPage( page );
PDXObjectImage ximage = null;
if( image.toLowerCase().endsWith( ".jpg" ) || image.toLowerCase().endsWith( ".jpeg" ))
{
BufferedImage awtImage = ImageIO.read( …Run Code Online (Sandbox Code Playgroud) 是否可以使用PDFBox创建标记PDF(PDF/UA)?看起来PDFBox有一个API(包org.apache.pdfbox.pdmodel.documentinterchange.taggedpdf),但我找不到任何教程或代码示例.
使用下面的代码,我生成了一个包含图像的PDF文件,屏幕阅读器NVDA(在我的例子中)识别它并读取'... graphic Alternate Description'.但是,辅助功能检查器PAC 2显示错误:"图像对象未标记".
PDDocument doc = new PDDocument();
PDPage page = new PDPage();
doc.addPage(page);
PDDocumentCatalog documentCatalog = doc.getDocumentCatalog();
PDImageXObject pdImage = PDImageXObject.createFromFile(imagePath, doc);
PDPageContentStream contents = new PDPageContentStream(doc, page);
contents.drawImage(pdImage, 100, 600, pdImage.getWidth() / 2, pdImage.getHeight() / 2);
contents.close();
PDStructureTreeRoot treeRoot = new PDStructureTreeRoot();
PDStructureElement structureElement = new PDStructureElement(StandardStructureTypes.Figure, treeRoot);
structureElement.setPage(page);
PDMarkedContent markedImg = new PDMarkedContent(COSName.IMAGE, new COSDictionary());
markedImg.addXObject(pdImage);
structureElement.appendKid(markedImg);
structureElement.setAlternateDescription("Alternate Description");
treeRoot.appendKid(structureElement);
documentCatalog.setStructureTreeRoot(treeRoot);
// ....
doc.save(fileName);
Run Code Online (Sandbox Code Playgroud)
您能否就此主题提供一些解释或/和代码示例?
使用PDFBox 2.0.4将页面提取为图像,我的结果页面包含多个"黑洞",如下面的屏幕所示:
这种情况仅发生在这个PDF和其他几个:http://www.filedropper.com/selection_3
这是一个简单的代码(使用JavaFX)来重现问题(下载PDF后更改文件路径):
public class PDFExtractionTest extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
FileInputStream inputStream = new FileInputStream(new File("C:\\Users\\John\\Desktop\\selection.pdf"));
PDDocument document = PDDocument.load(inputStream);
PDFRenderer pdfRenderer = new PDFRenderer(document);
BufferedImage bufferedImage = pdfRenderer.renderImage(1);
Image fxImage = SwingFXUtils.toFXImage(bufferedImage, null);
BorderPane borderPane = new BorderPane();
ImageView imageView = new ImageView(fxImage);
borderPane.setCenter(imageView);
primaryStage.setScene(new Scene(borderPane, 1024, 768));
primaryStage.show();
}
public static void main(String[] args) throws FileNotFoundException {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的依赖项:
我有这个本地URL: http:// localhost:8084/Name/faces/Blah.xhtml?flkatid = AAA
这是一个来自facelet的片段,它检查参数"flkatid"并将其分配给bean:
<f:metadata>
<f:viewParam name="flkatid"
id="flkatid"
value="#{floKatBean.flkatid}"
required="true"
requiredMessage="URL incomplete"
validator="#{floKatBean.validateFlKatId}"
validatorMessage="URL incomplete or invalid"
>
</f:viewParam>
<f:event type="preRenderView" listener="#{floKatBean.init}"/>
<f:event type="preRenderView" listener="#{floBean.holFloListe}"/>
</f:metadata>
Run Code Online (Sandbox Code Playgroud)
floKatBean.flkatid是一个整数,因此URL无效.将显示一个页面,告诉您:
flkatid:'AAA'必须是由一个或多个数字组成的数字.flkatid:'AAA'必须是-2147483648和2147483647之间的数字示例:9346
JSF检查参数本身,因为它知道bean元素是一个整数.仅当参数是整数时才调用自定义验证器.
是否有可能让服务器返回HTTP错误代码,例如403(禁止)而不离开"标准JSF世界"(或切换到RichFaces,MyFaces,SmileyFaces或其他)?我在f:viewParam中找不到任何"失败"的页面.在其他地方?
我正在维护一个使用Apache FOP打印PDF文档的程序.有几个关于中文字符出现"####"的投诉.我找到了一个关于这个问题的现有线程,并在我身边做了一些研究.
http://apache-fop.1065347.n5.nabble.com/Chinese-Fonts-td10789.html
我的系统上安装了uming.tff语言文件.与此帖子中的人不同,我仍然得到"####".
从现在开始,有没有人看过一个可以让你使用Apache FOP在PDF文档中打印复杂字符的工作?
瑞安
我在离散空间中有一组点,坐标以N double []数组的形式给出.
如:
点T1 = {1.3,2.5,4-3} ---> double [] x = {1.3},double [] y = {2.5},double [] z = {4.3}
然后我有一个函数,它在连续空间的所有方向上从给定点生成偏移量,我需要在我的矩阵/双数组中找到最接近的匹配.
问题是我无法对这些数组进行排序并应用二进制搜索,因为Point的组件很可能在排序后没有相同的索引.
是否有一些数据结构/算法可以应用于避免迭代搜索最接近的匹配点?
组织点是否更好,以便有一个数组实例描述整个点而不是每个组件的数组?
编辑
看起来理想的解决方案将使用评论中建议的kd树.计算机科学算法不是我的领域,因此在我研究该主题时,用kd树或其他替代方案展示最小例子的答案将是最有帮助的.
我在使用 PDFBox 以 Java 编写的一些代码时遇到问题。我正在尝试根据从 Excel 电子表格读取的值使用特定表单填充 PDF。下面是我的班级文件。
import java.io.FileInputStream;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.hssf.usermodel.*;
/**
* This is a test file for reading and populating a PDF with specific forms
*/
public class JU_TestFile {
PDPage Stick_Form;
PDPage IKE_Form;
PDPage BO_Form;
/**
* Constructor.
*/
public JU_TestFile() throws IOException
{
this.BO_Form = (PDPage) PDDocument.load(new File("C:\\Users\\saf\\Desktop\\JavaTest\\BO Pole Form.pdf")).getPage(0);
this.IKE_Form = (PDPage) PDDocument.load(new File("C:\\Users\\saf\\Desktop\\JavaTest\\IKE …Run Code Online (Sandbox Code Playgroud) 我正在使用 pdfbox 2.0.5 使用以下代码填写 PDF 文档的表单字段:
doc = PDDocument.load(inputStream);
PDDocumentCatalog catalog = doc.getDocumentCatalog();
PDAcroForm form = catalog.getAcroForm();
for (PDField field : form.getFieldTree()){
field.setValue("??????");
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:U+0434 ('afii10069') 在此字体中不可用 Times-Roman (generic: TimesNewRomanPSMT) encoding: StandardEncoding with Difference
PDF 文档本身包含显示正常的西里尔文文本。我试过使用不同的字体。对于“Arial Unicode MS”,它需要下载一个 50MB 的“Adobe Acrobat Reader DC 字体包”。这是对西里尔字符的要求吗?
我必须在文本字段中指定哪种字体来处理西里尔文(或亚洲)字符?
谢谢,罗波
java ×8
pdfbox ×5
pdf ×2
acrobat ×1
algorithm ×1
apache ×1
apache-fop ×1
arrays ×1
facelets ×1
fonts ×1
jakarta-mail ×1
jpeg2000 ×1
jsf ×1
log4j ×1
optimization ×1
search ×1
spring-boot ×1
tagged-pdf ×1