减少使用iText新创建的PDF文件中JPEG图像大小的最佳做法是什么?(我的目标是在图像质量和文件大小之间进行权衡.)
图像创建如下:
Image image = new Image(ImageDataFactory.create(imagePath))
Run Code Online (Sandbox Code Playgroud)
我想提供一个比例因子,例如0.5
,它将一行中的像素数减半.
假设我使用单个3 MB图像生成PDF.我试过image.scale(0.5f, 0.5f)
,但生成的PDF文件仍然大约3 MB.我预计它会变小.
因此,我猜想嵌入在PDF文件中的源图像不会被触及.但这就是我需要的:应该减少存储在磁盘上的整个PDF文件中的像素总数.
实现这一目标的最简单/推荐方法是什么?
我有Div
一定的身高:
Div div = new Div();
div.setHeight(100);
Run Code Online (Sandbox Code Playgroud)
如果,Div
我添加了一个段落,其中有几行占用的区域高于Div
,我会收到以下警告:
WARN com.itextpdf.layout.renderer.BlockRenderer - Element content was clipped because some height properties are set.
Run Code Online (Sandbox Code Playgroud)
除此之外,省略了段落的行.即使段落可以溢出Div
底部边界,它也会在边界上方结束.
但是尽管有警告我不在乎,我甚至需要段落以隐藏的方式溢出下方的边界Div
.
我怎样才能实现这样的行为?
(可以通过设置overflow: hidden
HTML 来实现我所需行为的CSS等效<div>
.)
我试图用Firebug解决它,但没有机会.Facebook状态输入边框如何围绕自动调整输入?特别是,我对加入边境的小三角感兴趣.使用Firebug,我设法找到了三角形本身,它以GIF图像的形式提供:
.uiComposerAttachment, .nub {
background: url(http://static.ak.fbcdn.net/rsrc.php/v1/zf/r/PfBgtiydy5U.gif) no-repeat center top;
height: 7px;
width: 11px
position: absolute;
left: 2px;
top: 18px;
}
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚它是如何放置在输入上方以及如何添加边框,以背景图像的形式或定义为CSS边框?
我尝试编写一个泛型函数,汇总数据库更新的更新数据.
传递参数:
即使我使用限制键的类型keyof R
,我也不能将具有该键的新对象分配给Partial<R>
常量.我收到错误我该Type '{ [x: string]: any[]; }' is not assignable to type 'Partial<R>'.
怎么做才能使下面的代码工作?如果我用R
非泛型类型替换泛型类型,它可以工作.但这不是我需要的.
interface BaseRecord {
readonly a: ReadonlyArray<string>
}
function getUpdateData<R extends BaseRecord>(record: R, key: keyof R, newItem: string) {
const updateData: Partial<R> = { [key]: [...record[key], newItem] }
return updateData
}
interface DerivedRecord extends BaseRecord {
readonly b: ReadonlyArray<string>
readonly c: ReadonlyArray<string>
}
const record: DerivedRecord = { a: [], b: [], c: …
Run Code Online (Sandbox Code Playgroud) 如果我从处理输入stdin
用scanLeft
,输出结果永远是我最后输入后面一行:
io.Source.stdin
.getLines
.scanLeft("START:")((accu, line) => accu + " " + line)
.foreach(println(_))
Run Code Online (Sandbox Code Playgroud)
结果(我的手动输入前面有>
):
> first
START:
> second
START: first
> third
START: first second
Run Code Online (Sandbox Code Playgroud)
我想要的合理输出是:
> first
START: first
> second
START: first second
> third
START: first second third
Run Code Online (Sandbox Code Playgroud)
如您所见,第一个输入行后面的输出应该已经包含第一个输入行的字符串.
我已经尝试过使用它.scanLeft(...).drop(1).foreach(...)
,但这会导致以下结果:
> first
> second
START: first
> third
START: first second
Run Code Online (Sandbox Code Playgroud)
如何正确省略纯种子以获得所需结果?
[更新]暂时我很满意安德烈泰金的精彩解决方法.非常感谢你的建议.
但是,当然,如果有任何替代方案scanLeft
不会将种子作为第一项发送到下一个迭代链中,我将更喜欢该解决方案.
[UPDATE]
用户jwvh理解我的目标并提供了一个很好的解决方案.为了完善他们的建议,我寻求一种预处理线路的方法,然后再将它们发送到累积回调中.因此,readLine
不应该在累积回调中调用该命令,而是在我可以预先设置的不同链链接中调用.
在包含大约30个条目的列表的页面上,每个条目都是Facebook可爱的(每个条目的HTML包含一个Like按钮),并且每个条目是否显示(取决于过滤器设置):
在具有1 GHz以上和1 GB内存的PC上,该页面无法使用,因为它太慢(浏览器:Chromium).如何改变这一点,保持Like按钮?
每当我在网络上遇到代码片段时,我都会看到类似的内容
Meteor.subscribe('posts', 'bob-smith');
Run Code Online (Sandbox Code Playgroud)
然后客户端可以显示"bob-smith"的所有帖子.
订阅返回多个文档.
相比之下,我需要的是单文档订阅,以显示文章的正文字段.我想通过(文章)id过滤:
Meteor.subscribe('articles', articleId);
Run Code Online (Sandbox Code Playgroud)
但是当我在网上搜索类似的例子时,我开始怀疑:我甚至找不到一个单文档订阅示例.
这是什么原因?为什么没有人使用单文档订阅?
检查这种意外的行为,我只是把一个TextArea
直接进入Scene
载有PrimaryStage
:在应用程序启动时,TextArea
正好适合窗口(如预期)。
但是TextArea
如果我移动窗口的边框,它的大小不会改变,这是我试图解决的问题。
这是我的 ScalaFX 代码(我希望它的行为与它的 JavaFX 等效代码完全一样):
object MyApp extends JFXApp {
stage = new PrimaryStage {
title = "My App"
resizable = true // has no effect
maxWidth = Double.MaxValue // has no effect
maxHeight = Double.MaxValue // has no effect
val outputDisplay = new TextArea {
resizable = true // has no effect
maxWidth = Double.MaxValue // has no effect
maxHeight = Double.MaxValue // has no effect …
Run Code Online (Sandbox Code Playgroud) 由于这两个System.setProperty("prism.lcdtext", "false")
和System.setProperty("prism.lcdtext", "true")
不令人满意(前出现霜霉病,而后者出现在即使文本颜色为黑色字母边缘丰富多彩;我的液晶显示器上,它看起来甚至比难看这里报道:https://bugs.openjdk.java.net/浏览/JDK-8131923 ),
我更喜欢完全关闭抗锯齿。
该设置SceneAntialiasing.DISABLED
似乎不会影响我的按钮/列表/下拉菜单/...(我猜它仅用于绘图)。
如何完全关闭抗锯齿?我想使用一种类似于 Windows 2000 和 Win XP 的第一个版本的字体,它们无需抗锯齿即可工作(此外还可以节省空间,因为它们可以缩小而不是必须平滑的字体)。
[更新] 截图已添加(根据要求)
右侧窗口由我的 ScalaFX 应用程序生成。纯普通标准代码,不应用任何设置。
(玩System.setProperty("prism.lcdtext", "false")
和System.setProperty("prism.text", "t2k")
给了我稍微好一点的,但仍然不令人满意的结果。)
请看放大的“W”及其多种颜色,它源自右侧窗口 (JavaFX) 中的第一个按钮:对于要求苛刻的用户来说,这是无法忍受的。并请比较等宽文本的平滑度(左:Ubuntu,右:JavaFX)。
我有一些由许多简短的 getter/方法组成的课程。
例子:
get jQuery() {
return this.pageConfig.jQuery || jQuery;
}
Run Code Online (Sandbox Code Playgroud)
一个内容相似的箭头函数可以写成这样:
() => this.pageConfig.jQuery || jQuery;
Run Code Online (Sandbox Code Playgroud)
这是一个单线,因此仅占用垂直空间的 1/3。
但它既不是 getter 也不是方法。
是否有推荐的以单行形式编写吸气剂/方法的方法?(如果可能,没有大括号和return
关键字)
我的 getter 和方法不需要修改对象。他们只是在读书。
java ×4
scala ×3
facebook ×2
itext ×2
itext7 ×2
javafx ×2
pdf ×2
scalafx ×2
typescript ×2
button ×1
css ×1
ecmascript-6 ×1
generics ×1
getter ×1
html ×1
input ×1
iterator ×1
javascript ×1
keyof ×1
meteor ×1
methods ×1
performance ×1
subscription ×1